Upgrade 2204 » History » Revision 18
Revision 17 (Enis Nuredini, 11.01.2024 14:53) → Revision 18/22 (Enis Nuredini, 18.01.2024 11:28)
{{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;
}
4.1 apache ssl config file:
Modules:
sudo a2enmod proxy
sudo a2enmod proxy_wstunnel
# Enable the necessary proxy modules for websocket
ProxyRequests Off
ProxyPreserveHost On
ProxyPass /ws ws://localhost:8090
ProxyPassReverse /ws ws://localhost:8090
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.