Project

General

Profile

Actions

Upgrade 2204 » History » Revision 14

« Previous | Revision 14/22 (diff) | Next »
Carsten Rose, 05.01.2024 10:05


Docker Upgrade - Ubuntu 22-04

New docker container

It is recommended to create a new docker container with the new typo3 docker branch ubuntu22 instead of upgrading an existing one.
How to clone the specific branch:

git clone -b ubuntu22 https://git.math.uzh.ch/typo3/typo3-docker.git

Upgrading existing docker

Manual to upgrade an existing docker container and setting up websocket server.

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 on the same server.

1. At least Ubuntu 22.04 needs to be installed in docker container. (Usually done inside Dockerfile.nginx):
FROM ubuntu:22.04

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:
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && \
    apt-get install -y tzdata && \
    ln -fs /usr/share/zoneinfo/Europe/Zurich /etc/localtime && \
    dpkg-reconfigure --frontend noninteractive tzdata

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:
# Manually install libssl1.1
RUN wget http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.0g-2ubuntu4_amd64.deb
RUN dpkg -i libssl1.1_1.1.0g-2ubuntu4_amd64.deb

2. Best practice is to expose the websocket port in the dockerfile (Dockerfile.nginx), it should be added before the services start, example: 
EXPOSE 8090
CMD service php8.1-fpm start && service ssh start && nginx

3. Add new websocket port (8090) to nginx webserver in Dockerfile, example:
  nginx:
    image: webserver
    build: 
      dockerfile: Dockerfile.nginx
    ports:
      - "46301:46301" 
      - "51301:51301" 
      - "44909:22" 
      - "8090:8090"         <------ Websocket port

4. nginx config file adjustments, add following proxy:
    location /ws {
        proxy_pass http://mydomain:8090;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
    }

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:
# New xdebug 3 version:
xdebug.mode = debug
xdebug.start_with_request = yes
xdebug.client_port = 51301
xdebug.discover_client_host = 1
xdebug.max_nesting_level = 400
#xdebug.log=/var/log/apache2/xdebug.log

6. Start/Restart (Build first time) the docker container.

7. Set the configured websocket port and websocket url in QFQ Config, examples:
websocketPort: 8090
websocketUrl: ws://mydomain:46301/ws

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.

9. If you are upgrading the qfq extension (new with FE Chat) in an already existing project, then you need to add the new enum value chat to the column type from the FormElement table.

Updated by Carsten Rose 6 months ago · 14 revisions