Upgrade 2204 » History » Version 6
Enis Nuredini, 31.12.2023 14:48
1 | 2 | Enis Nuredini | h1. Docker Upgrade - Ubuntu 22-04 |
---|---|---|---|
2 | 1 | Enis Nuredini | |
3 | h2. New docker container |
||
4 | |||
5 | It is recommended to create a new docker container with the new Typo3 Docker branch *ubuntu22* instead of upgrading an existing one. |
||
6 | How to clone the specific branch: |
||
7 | <pre> |
||
8 | git clone -b ubuntu22 https://git.math.uzh.ch/typo3/typo3-docker.git |
||
9 | </pre> |
||
10 | |||
11 | h2. Upgrading existing docker |
||
12 | |||
13 | 6 | Enis Nuredini | Manual to upgrade an existing Docker Container and setting up websocket server. |
14 | Caution: The used websocket port 8090 in this manual is only an example. Please use a port number which is not already used from others. |
||
15 | 1 | Enis Nuredini | <pre> |
16 | 1. At least Ubuntu 22.04 needs to be installed in docker container. (Usually done inside Dockerfile.nginx): |
||
17 | FROM ubuntu:22.04 |
||
18 | |||
19 | 1.1 Add the following to the top of your docker file (after FROM ubuntu:22.04) if it does not already exist. It defines the timezone configurations for the ubuntu 22.04 installation: |
||
20 | ENV DEBIAN_FRONTEND=noninteractive |
||
21 | RUN apt-get update && \ |
||
22 | apt-get install -y tzdata && \ |
||
23 | ln -fs /usr/share/zoneinfo/Europe/Zurich /etc/localtime && \ |
||
24 | dpkg-reconfigure --frontend noninteractive tzdata |
||
25 | |||
26 | |||
27 | 3 | Enis Nuredini | 1.2(optional) If you are using wkhtmltopdf 0.12.6-1, you will need to manually install libssl1.1 in the docker file before wkhtmltopdf is installed. Reason: libssl1.1 is no longer included in Ubuntu 22.04: |
28 | 1 | Enis Nuredini | # Manually install libssl1.1 |
29 | RUN wget http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.0g-2ubuntu4_amd64.deb |
||
30 | RUN dpkg -i libssl1.1_1.1.0g-2ubuntu4_amd64.deb |
||
31 | |||
32 | 4 | Enis Nuredini | 2. Best practice is to expose the websocket port in the dockerfile (Dockerfile.nginx), it should be added before the services start, example: |
33 | 1 | Enis Nuredini | EXPOSE 8090 |
34 | CMD service php8.1-fpm start && service ssh start && nginx |
||
35 | |||
36 | |||
37 | 3. Add new websocket port (8090) to nginx webserver in Dockerfile, example: |
||
38 | nginx: |
||
39 | image: webserver |
||
40 | build: |
||
41 | dockerfile: Dockerfile.nginx |
||
42 | ports: |
||
43 | - "46301:46301" |
||
44 | - "51301:51301" |
||
45 | - "44909:22" |
||
46 | - "8090:8090" <------ Websocket port |
||
47 | |||
48 | 4. nginx config file adjustments, add following proxy: |
||
49 | location /ws { |
||
50 | proxy_pass http://mydomain:8090; |
||
51 | proxy_http_version 1.1; |
||
52 | proxy_set_header Upgrade $http_upgrade; |
||
53 | proxy_set_header Connection "upgrade"; |
||
54 | proxy_set_header Host $host; |
||
55 | } |
||
56 | |||
57 | 5 | Enis Nuredini | 5.(optional) If you upgrade your docker from an older version of ubuntu, your xdebug configuration may not work anymore. Adjustments are needed in the .ini file (99-math.ini), replace the existing xdebug configuration with this one: |
58 | 1 | Enis Nuredini | # New xdebug 3 version: |
59 | xdebug.mode = debug |
||
60 | xdebug.start_with_request = yes |
||
61 | xdebug.client_port = 51301 |
||
62 | xdebug.discover_client_host = 1 |
||
63 | xdebug.max_nesting_level = 400 |
||
64 | #xdebug.log=/var/log/apache2/xdebug.log |
||
65 | |||
66 | |||
67 | 6. Start/Restart (Build first time) the docker container. |
||
68 | |||
69 | 7. Set the configured websocket port and websocket url in QFQ Config, examples: |
||
70 | websocketPort: 8090 |
||
71 | websocketUrl: ws://mydomain:46301/ws |
||
72 | |||
73 | 8. If websocketPort is set in qfq config, the websocket server should start automatically the first time a web page with qfq content is loaded. |
||
74 | </pre> |