Project

General

Profile

Upgrade 2204 » History » Revision 5

Revision 4 (Enis Nuredini, 31.12.2023 14:44) → Revision 5/22 (Enis Nuredini, 31.12.2023 14:45)

h1. Docker Upgrade - Ubuntu 22-04 

 h2. 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: 
 <pre> 
 git clone -b ubuntu22 https://git.math.uzh.ch/typo3/typo3-docker.git 
 </pre> 

 h2. Upgrading existing docker 

 Manual to upgrade an existing Docker Container and setting up websocket server: 
 <pre> 
 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 ubuntu version of ubuntu, then your xdebug configuration may maybe will not work anymore. Adjustments are needed in the .ini file are needed (99-math.ini), replace the existing xdebug configuration with this one: this: 
 # 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. 
 </pre>