Project

General

Profile

Upgrade 2204 » History » Revision 11

Revision 10 (Enis Nuredini, 31.12.2023 14:50) → Revision 11/22 (Enis Nuredini, 01.01.2024 11:59)

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. 

 *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. 
 <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 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 upgrade the qfq extension (new with FE Chat) in a already existing project then you need to add the new enum value *chat* into the column *type* from table *FormElement* . 
 </pre>