Project

General

Profile

Upgrade 2204 » History » Revision 17

Revision 16 (Enis Nuredini, 09.01.2024 14:04) → Revision 17/22 (Enis Nuredini, 11.01.2024 14:53)

{{toc}} 


 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> 

 Upgrading from T3 V10 to V11 - keeping pages and tt_content. Use following querys    to select the T3 V11 compatible columns and export them for your new T3 instance: 
 <pre> 
 SELECT uid, pid, tstamp, crdate, cruser_id, deleted, hidden, starttime, endtime, 
     fe_group, sorting, rowDescription, editlock, sys_language_uid, l10n_parent, 
     l10n_source, l10n_state, t3_origuid, l10n_diffsource, t3ver_oid, t3ver_wsid, 
     t3ver_state, t3ver_stage, perms_userid, perms_groupid, perms_user, perms_group, 
     perms_everybody, title, slug, doktype, TSconfig, is_siteroot, php_tree_stop, url, 
     shortcut, shortcut_mode, subtitle, layout, target, media, lastUpdated, keywords, 
     cache_timeout, cache_tags, newUntil, description, no_search, SYS_LASTCHANGED, 
     abstract, module, extendToSubpages, author, author_email, nav_title, nav_hide, 
     content_from_pid, mount_pid, mount_pid_ol, l18n_cfg, fe_login_mode, backend_layout, 
     backend_layout_next_level, tsconfig_includes, categories FROM pages; 

 SELECT uid, rowDescription, pid, tstamp, crdate, cruser_id, deleted, hidden, 
     starttime, endtime, fe_group, sorting, editlock, sys_language_uid, 
     l18n_parent, l10n_source, l10n_state, t3_origuid, l18n_diffsource, 
     t3ver_oid, t3ver_wsid, t3ver_state, t3ver_stage, CType, header, 
     header_position, bodytext, bullets_type, uploads_description, 
     uploads_type, assets, image, imagewidth, imageorient, imagecols, 
     imageborder, media, layout, frame_class, cols, space_before_class, 
     space_after_class, records, pages, colPos, subheader, header_link, 
     image_zoom, header_layout, list_type, sectionIndex, linkToTop, 
     file_collections, filelink_size, filelink_sorting, 
     filelink_sorting_direction, target, date, `recursive`, imageheight, 
     pi_flexform, accessibility_title, accessibility_bypass, 
     accessibility_bypass_text, selected_categories, category_field, 
     table_class, table_caption, table_delimiter, table_enclosure, 
     table_header_position, table_tfoot, categories FROM tt_content; 
 </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 

 1.3 Change all path entries which has *7.4* to *8.1* in files Dockerfile.nginx, docker-compose.yml and default.conf (docker/sites-available/)  

 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                 <------------- Here should stay your xDebug port! 
 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> 

 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.