Как установить Drupal с Docker на Ubuntu 22.04
На этой странице
- Предпосылки
- Шаг 1. Настройка брандмауэра
- Шаг 2. Установите Docker и Docker Compose
- Шаг 3. Создание файла Docker Compose для Drupal
- Докер-сервис MySQL
- Служба Drupal
- Служба Nginx
- Служба Certbot
Drupal — это система управления контентом (CMS) с открытым исходным кодом, написанная на PHP. Многие организации по всему миру используют его для создания блогов, правительственных сайтов, корпоративных сайтов и многого другого. Он поставляется с растущим набором функций и модулей для расширения его функциональности, что позволяет вам создавать любой веб-сайт, который вы хотите.
В этом руководстве вы узнаете, как установить Drupal с помощью Docker на сервер Ubuntu 22.04. Drupal работает с PHP 8.2 и MySQL. Он также поддерживает PostgreSQL, начиная с версии 9, но есть некоторые ошибки. Поэтому в нашем руководстве мы будем использовать MySQL. Мы будем использовать Docker Compose для интеграции Drupal с Nginx и инструментом Certbot для сервера сайта Drupal по защищенному протоколу HTTPS.
Предпосылки
-
A server running Ubuntu 22.04 with a minimum of 1GB of RAM for smaller communities. To host larger communities, you should get a server with a minimum of 2GB of RAM or more.
-
A non-root user with sudo privileges.
-
A fully qualified domain name (FQDN) pointing to your server. For our purposes, we will use
example.com
as the domain name. -
Make sure everything is updated.
$ sudo apt update
-
Install basic utility packages. Some of them may already be installed.
$ sudo apt install wget curl nano software-properties-common dirmngr apt-transport-https gnupg gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -y
Шаг 1. Настройте брандмауэр
Первым шагом является настройка брандмауэра. Ubuntu по умолчанию поставляется с ufw (простой брандмауэр).
Проверьте, работает ли брандмауэр.
$ sudo ufw status
Вы должны получить следующий вывод.
Status: inactive
Разрешить порт SSH, чтобы брандмауэр не разорвал текущее соединение при его включении.
$ sudo ufw allow OpenSSH
Разрешить также порты HTTP и HTTPS.
$ sudo ufw allow http $ sudo ufw allow https
Включить брандмауэр
$ sudo ufw enable Command may disrupt existing ssh connections. Proceed with operation (y|n)? y Firewall is active and enabled on system startup
Еще раз проверьте состояние брандмауэра.
$ sudo ufw status
Вы должны увидеть аналогичный вывод.
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 80/tcp ALLOW Anywhere 443 ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) 80/tcp (v6) ALLOW Anywhere (v6) 443 (v6) ALLOW Anywhere (v6)
Шаг 2. Установите Docker и Docker Compose
Ubuntu 22.04 поставляется с более старой версией Docker. Чтобы установить последнюю версию, сначала импортируйте ключ Docker GPG.
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
Создайте файл репозитория Docker.
$ echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Обновите список системных репозиториев.
$ sudo apt update
Установите последнюю версию Docker.
$ sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
Убедитесь, что он запущен.
$ sudo systemctl status docker ? docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2023-01-14 10:41:35 UTC; 2min 1s ago TriggeredBy: ? docker.socket Docs: https://docs.docker.com Main PID: 2054 (dockerd) Tasks: 52 Memory: 22.5M CPU: 248ms CGroup: /system.slice/docker.service ?? 2054 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
По умолчанию Docker требует привилегий root. Если вы хотите избежать использования
sudo
при каждом запуске командыdocker
, добавьте свое имя пользователя вdocker
группа.$ sudo usermod -aG docker $(whoami)
Вам нужно будет выйти из сервера и снова войти в систему под тем же пользователем, чтобы включить это изменение, или использовать следующую команду.
$ su - ${USER}
Подтвердите, что ваш пользователь добавлен в группу Docker.
$ groups navjot wheel docker
Шаг 3 — Создайте файл Docker Compose для Drupal
Создайте каталог для Drupal.
$ mkdir ~/drupal
Перейдите в каталог.
$ cd ~/drupal
Создайте и откройте файл
docker-compose.yml
для редактирования.$ nano docker-compose.yml
Вставьте в него следующий код.
services: mysql: image: mysql:8.0 container_name: mysql restart: unless-stopped env_file: .env volumes: - db-data:/var/lib/mysql networks: - internal drupal: image: drupal:10-fpm-alpine container_name: drupal depends_on: - mysql restart: unless-stopped networks: - internal - external volumes: - drupal-data:/var/www/html webserver: image: nginx:1.22.1-alpine container_name: webserver depends_on: - drupal restart: unless-stopped ports: - 80:80 volumes: - drupal-data:/var/www/html - ./nginx-conf:/etc/nginx/conf.d - certbot-etc:/etc/letsencrypt networks: - external certbot: depends_on: - webserver image: certbot/certbot container_name: certbot volumes: - certbot-etc:/etc/letsencrypt - drupal-data:/var/www/html command: certonly --webroot --webroot-path=/var/www/html --email _domain --agree-tos --no-eff-email --staging -d example.com -d www.example.com networks: external: driver: bridge internal: driver: bridge volumes: drupal-data: db-data: certbot-etc:
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Давайте пройдемся по каждой службе, определенной в приведенном выше файле.
Докер-сервис MySQL
Здесь мы загружаем последний образ mysql: 8.0 из концентратора Docker. Мы используем версию 8.x вместо последнего тега. Таким образом, мы можем придерживаться стабильной и протестированной версии MySQL, которая работает с Drupal. Мы установили имя для контейнера, которое можно использовать с командами Docker для остановки, запуска и просмотра журналов. Контейнер продолжит работу, если его не остановить вручную. Мы определили файл
.env
, который мы будем заполнять учетными данными MySQL. Мы также смонтировали именованный томdb-data
в каталог/var/lib/mysql
в контейнере. Служба MySQL будет использовать внутреннюю сеть для подключения к drupal.Друпал Сервис
Мы используем образ Drupal 10 Alpine. Образы докеров Alpine меньше по размеру. Этот образ также содержит PHP-FPM для обработки PHP. Это будет работать вместе с Nginx для обслуживания сайта. Параметр
depends_on
сообщает Drupal о необходимости подключения к службе MySQL. Это также гарантирует, что контейнер Drupal всегда будет запускаться после контейнера MySQL. Drupal использует внутреннюю сеть для подключения к MySQL и внешнюю сеть для доступа к другим контейнерам. Мы также создали именованный том для Drupal, чтобы он указывал на каталог/var/www/html
в контейнере.Сервис Nginx
Мы используем образ Alpine для Nginx. Он предоставляет хосту порт 80. Мы используем два именованных тома, один для общего каталога Drupals, а другой для хранения SSL-сертификатов Lets Encrypt. Третий том — это привязка к каталогу конфигурации Nginx на хосте, который мы определим позже. Nginx также подключается к внешней сети Docker для работы сайта Drupal.
Сервис Certbot
И, наконец, мы загружаем образ Certbot для установки SSL-сертификатов. Он делится своими томами со службой Nginx для сертификатов и определения веб-рута. Мы также включили команду, которая будет выполняться при создании контейнера. Здесь команда использует флаг
--staging
, чтобы получить тестовый сервер в первый раз. Нам нужен nginx для проверки сертификатов, но Nginx не запустится, если сертификаты отсутствуют. Вот почему мы создадим промежуточный сертификат, используем его для запуска Nginx, а затем создадим настоящие сертификаты.Шаг 4 — Создайте конфигурацию Nginx
Создайте каталог для конфигурации Nginx.
$ mkdir nginx-conf
Создайте и откройте файл для Nginx.
$ nano nginx-conf/drupal.conf
Вставьте в него следующий код.
server { listen 80; listen [::]:80; server_name drupal.example.com; index index.php index.html index.htm; root /var/www/html; location ~ /.well-known/acme-challenge { allow all; root /var/www/html; } location / { try_files $uri $uri/ /index.php$is_args$args; } rewrite ^/core/authorize.php/core/authorize.php(.*)$ /core/authorize.php$1; location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass drupal:9000; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; } location ~ /\.ht { deny all; } location = /favicon.ico { log_not_found off; access_log off; } location = /robots.txt { log_not_found off; access_log off; allow all; } location ~* \.(css|gif|ico|jpeg|jpg|js|png)$ { expires max; log_not_found off; } }
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
В этот файл мы добавим блок сервера с директивами для имени нашего сервера и корня документа, а также блоки местоположения, чтобы направить запрос клиента Certbot на сертификаты, обработку PHP и запросы статических ресурсов. На данный момент Nginx будет прослушивать только порт 80, чтобы Certbot мог запросить промежуточный сертификат, поместив временный файл в
/var/www/html/.well-known/acme-challenge
для проверки DNS. Это позволяет нам использовать Certbot с плагином webroot.Шаг 5 — Сгенерируйте SSL-сертификаты
Для генерации SSL-сертификатов мы запустим наши контейнеры. Правильные промежуточные сертификаты будут доступны в папке
/etc/letsencrypt/live
в контейнере Nginx.$ docker compose up -d
Проверьте статус услуг.
$ docker compose ps NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS certbot certbot/certbot "certbot certonly --…" certbot 6 minutes ago Exited (1) 5 minutes ago drupal drupal:10-fpm-alpine "docker-php-entrypoi…" drupal 6 minutes ago Up 6 minutes 9000/tcp mysql mysql:8.0 "docker-entrypoint.s…" mysql 6 minutes ago Up 6 minutes 3306/tcp, 33060/tcp webserver nginx:1.22.1-alpine "/docker-entrypoint.…" webserver 6 minutes ago Up 6 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp
Контейнер Certbot успешно завершает работу после создания сертификата. Проверьте расположение сертификатов в контейнере Nginx.
$ docker compose exec webserver ls -la /etc/letsencrypt/live
Вы получите следующий вывод.
total 16 drwx------ 3 root root 4096 Jan 17 09:15 . drwxr-xr-x 9 root root 4096 Jan 17 09:15 .. -rw-r--r-- 1 root root 740 Jan 17 09:15 README drwxr-xr-x 2 root root 4096 Jan 17 09:15 drupal.example.com
Это подтверждает, что все успешно. Следующим шагом является создание фактических сертификатов.
Откройте файл
docker-compose.yml
для редактирования.$ nano docker-compose.yml
Замените флаг
--staging
в разделе службы Certbot на флаг--force-renewal
. Это говорит Certbot запросить новые сертификаты для вашего домена. Флаг обновления используется, потому что с этого момента он будет использоваться для обновления сертификатов.certbot: depends_on: - webserver image: certbot/certbot container_name: certbot volumes: - certbot-etc:/etc/letsencrypt - drupal-data:/var/www/html command: certonly --webroot --webroot-path=/var/www/html --email --agree-tos --no-eff-email --staple-ocsp --force-renewal -d drupal.example.com
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Запустите команду
docker compose up
еще раз, чтобы заново создать контейнер Certbot. Флаг--no-deps
указывает Certbot пропустить запуск контейнераwebserver
, поскольку он уже запущен.$ docker compose up --force-recreate --no-deps certbot
Вы получите следующий вывод.
[+] Running 1/0 ? Container certbot Recreated 0.1s Attaching to certbot certbot | Saving debug log to /var/log/letsencrypt/letsencrypt.log certbot | Account registered. certbot | Renewing an existing certificate for drupal.example.com certbot | certbot | Successfully received certificate. certbot | Certificate is saved at: /etc/letsencrypt/live/drupal.example.com/fullchain.pem certbot | Key is saved at: /etc/letsencrypt/live/drupal.example.com/privkey.pem certbot | This certificate expires on 2023-04-17. certbot | These files will be updated when the certificate renews. certbot | NEXT STEPS: certbot | - The certificate will need to be renewed before it expires. Certbot can automatically renew the certificate in the background, but you may need to take steps to enable that functionality. See https://certbot.org/renewal-setup for instructions. certbot | certbot | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - certbot | If you like Certbot, please consider supporting our work by: certbot | * Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate certbot | * Donating to EFF: https://eff.org/donate-le certbot | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - certbot exited with code 0
Шаг 6. Настройте Nginx для SSL
Теперь, когда наши сертификаты активны, нам нужно настроить Nginx для их обслуживания и перенаправления HTTP-запросов на HTTPS.
Остановите сервер Nginx.
$ docker stop webserver
Создайте новый файл Nginx для конфигурации SSL и откройте его для редактирования.
$ nano nginx-conf/drupal-ssl.conf
Вставьте в него следующий код.
server { listen 80; listen [::]:80; server_name drupal.example.com; location ~ /.well-known/acme-challenge { allow all; root /var/www/html; } location / { rewrite ^ https://$host$request_uri? permanent; } } server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name drupal.example.com; index index.php index.html index.htm; root /var/www/html; server_tokens off; ssl_certificate /etc/letsencrypt/live/drupal.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/drupal.example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/drupal.example.com/chain.pem; ssl_session_timeout 1d; ssl_session_cache shared:SSL:10m; ssl_session_tickets off; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; ssl_prefer_server_ciphers off; ssl_ecdh_curve secp384r1; ssl_dhparam /etc/ssl/certs/dhparam.pem; # OCSP stapling ssl_stapling on; ssl_stapling_verify on; resolver 8.8.8.8 8.8.4.4 valid=300s; resolver_timeout 5s; add_header X-Frame-Options "SAMEORIGIN" always; add_header X-XSS-Protection "1; mode=block" always; add_header X-Content-Type-Options "nosniff" always; add_header Referrer-Policy "no-referrer-when-downgrade" always; add_header Content-Security-Policy "default-src * data: 'unsafe-eval' 'unsafe-inline'" always; location / { try_files $uri $uri/ /index.php$is_args$args; } rewrite ^/core/authorize.php/core/authorize.php(.*)$ /core/authorize.php$1; location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass drupal:9000; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; } location ~ /\.ht { deny all; } location = /favicon.ico { log_not_found off; access_log off; } location = /robots.txt { log_not_found off; access_log off; allow all; } location ~* \.(css|gif|ico|jpeg|jpg|js|png)$ { expires max; log_not_found off; } }
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Блок HTTP указывает расположение подключаемого модуля Certbots webroot и перенаправляет любой HTTP-запрос на HTTPS.
Следующий шаг — убедиться, что контейнер Nginx прослушивает порт 443. Откройте файл
docker-compose.yml
для редактирования.$ nano docker-compose.yml
В разделе файла Nginx внесите изменения, чтобы открыть 443 и включить SSL, как показано ниже.
webserver: image: nginx:1.22.1-alpine container_name: webserver depends_on: - drupal restart: unless-stopped ports: - 80:80 - 443:443 volumes: - drupal-data:/var/www/html - ./nginx-conf:/etc/nginx/conf.d - certbot-etc:/etc/letsencrypt - /etc/ssl/certs/dhparam.pem:/etc/ssl/certs/dhparam.pem networks: - external
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Теперь, когда мы включили и добавили конфигурацию SSL для Nginx, вы можете удалить старый файл конфигурации HTTP.
$ rm nginx-conf/drupal.conf
Перед перезапуском Nginx нам нужно сгенерировать групповой сертификат Diffie-Hellman, который мы уже настроили выше.
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Пересоздайте контейнер Nginx.
$ docker compose up -d --force-recreate --no-deps webserver
Проверьте состояние контейнеров.
$ docker compose ps NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS certbot certbot/certbot "certbot certonly --…" certbot 3 hours ago Exited (0) 3 hours ago drupal drupal:10-fpm-alpine "docker-php-entrypoi…" drupal 3 hours ago Up 3 hours 9000/tcp mysql mysql:8.0 "docker-entrypoint.s…" mysql 3 hours ago Up 3 hours 3306/tcp, 33060/tcp webserver nginx:1.22.1-alpine "/docker-entrypoint.…" webserver 15 seconds ago Up 13 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp
Шаг 7 — Запустите веб-установщик Drupal
Пришло время запустить веб-установщик Drupal. Откройте URL-адрес
https://drupal.example.com
в своем браузере, и вы увидите следующий экран.Нажмите кнопку Сохранить и продолжить, чтобы перейти на страницу профиля установки.
Мы будем придерживаться стандартного профиля. Нажмите кнопку Сохранить и продолжить, чтобы перейти на страницу конфигурации базы данных.
Введите учетные данные базы данных, которые мы использовали в файле среды, разверните раздел «Дополнительные параметры» и введите
mysql
в качестве хоста базы данных. Это соответствует имени службы MySQL в нашем файле компоновки Docker, с которым Drupal должен будет соединиться.Нажмите кнопку Сохранить и продолжить, чтобы продолжить. Drupal начнет установку модулей и тем по умолчанию.
Далее вы попадете на страницу конфигурации Drupal. Заполните имя сайта, адрес электронной почты, имя пользователя, пароль и региональные настройки. Нажмите кнопку Сохранить и продолжить, когда закончите.
Наконец, вы попадете в панель инструментов Drupal. Вы можете начать использовать Drupal для создания своего веб-сайта.
Шаг 8 - Настройте Drupal
Этот шаг необязателен, но помогает повысить производительность Drupal. Первым шагом является установка уровня изоляции транзакций MySQL. Уровень изоляции транзакций по умолчанию для MySQL, MariaDB и эквивалентных баз данных — «ПОВТОРЯЕМОЕ ЧТЕНИЕ». Этот параметр в Drupal может привести к взаимоблокировкам таблиц, что приведет к тому, что сайт станет очень медленным или вообще не будет отвечать. Рекомендуемый уровень изоляции транзакций для сайтов Drupal — READ COMMITTED.
Войдите в оболочку SSH контейнера MySQL.
$ docker exec -it mysql bash
Откройте оболочку MySQL, используя пользователя root.
bash-4.4# mysql -u root -p Enter password:
Выполните следующую команду, чтобы глобально изменить уровень транзакции.
mysql> SET GLOBAL TRANSACTION ISOLATION LEVEL READ COMMITTED;
Выйдите из оболочки MySQL и контейнера, дважды набрав
exit
.Следующим шагом будет указание вашего домена в качестве доверенного хоста для защиты от атак HTTP HOST Header. Для этого нам нужно отредактировать файл
/var/www/html/sites/default/settings.php
внутри контейнера Drupal. Поскольку мы используем именованный том для файлов Drupal, рекомендуемый способ внесения любых изменений — скопировать файл из контейнера на хост, внести изменения и скопировать его обратно в контейнер. Вы можете сделать это с любым файлом, который вам нужно изменить внутри установки Drupal.Скопируйте файл настроек из контейнера на хост.
$ docker cp drupal:/var/www/html/sites/default/settings.php settings.php
Файл находится в режиме только для чтения. Дайте ему права на запись.
$ chmod+w settings.php
Откройте файл для редактирования.
$ nano settings.php
Найдите следующий раздел в файле.
#$settings['trusted_host_patterns'] = [ # '^www\.example\.com$', #];
Раскомментируйте его, удалив знак решетки и добавив свой домен Drupal, как показано ниже.
$settings['trusted_host_patterns'] = [ '^drupal\.example\.com$', ];
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Снова удалите права на запись.
$ chmod -w settings.php
Скопируйте файл обратно в контейнер.
$ docker cp settings.php drupal:/var/www/html/sites/default
Шаг 9 - Резервное копирование Drupal
Мы будем использовать командную строку для резервного копирования базы данных Drupal. Перейдите в каталог Drupal.
$ cd ~/drupal
Создайте каталог для резервных копий.
$ mkdir backup-data
Используйте следующую команду для резервного копирования базы данных Drupal. Вас попросят ввести корневой пароль MySQL.
$ docker compose exec mysql sh -c "exec mysqldump drupal -uroot -p" | tee backup-data/data_`date +%d-%m-%Y"_"%H_%M_%S`.sql >/dev/null Enter password: root_password
Приведенная выше команда создаст резервную копию SQL в каталоге
~/drupal/backup-data
.Проверьте содержимое каталога.
$ ls -al backup-data total 6716 drwxrwxr-x 2 navjot navjot 4096 Jan 19 13:59 . drwxrwxr-x 4 navjot navjot 4096 Jan 19 13:35 .. -rw-rw-r-- 1 navjot navjot 6868325 Jan 19 13:37 data_19-01-2023_13_36_58.sql
Вы можете увидеть резервную копию базы данных в каталоге. Вы можете восстановить эту базу данных с помощью инструмента phpMyAdmin или с помощью следующей команды.
$ docker compose exec mysql sh -c "exec mysql -uroot -p" < backup-data/data_19-01-2023_13_36_58.sql
Вы можете создать задание cron для регулярного резервного копирования базы данных.
Создайте сценарий резервного копирования в каталоге
/etc/cron.daily
и откройте его для редактирования.$ sudo nano /etc/cron.daily/drupalbackup.sh
Вставьте в него следующий код.
#!/bin/bash cd /home/navjot/drupal/ /usr/bin/docker compose exec mysql sh -c "exec mysqldump drupal -uroot -p" | tee backup-data/data_`date +%d-%m-%Y"_"%H_%M_%S`.sql >/dev/null
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Сделайте скрипт исполняемым.
$ sudo chmod +x /etc/cron.daily/drupalbackup.sh
Теперь ваша база данных будет копироваться ежедневно.
Шаг 10 - Обновите Drupal
Первым шагом в обновлении Drupal является резервное копирование базы данных Drupal с помощью команды из шага 9.
Затем переключитесь в каталог.
$ cd ~/drupal
Остановить контейнеры.
$ docker compose down
Извлеките последние образы контейнеров.
$ docker compose pull drupal:10-fpm-alpine
Если вы хотите перейти на следующую основную версию, вам нужно будет соответствующим образом изменить имя образа и просмотреть примечания к выпуску Drupals, чтобы проверить наличие проблем.
Внесите необходимые изменения в
docker-compose.yml
, если хотите. Остальные образы можно обновить, изменив их определение в файле компоновки Docker.Перезапустите контейнеры Drupal. При этом также будут извлечены последние образы для минорных версий других пакетов.
$ docker compose up -d
Заключение
На этом мы завершаем наше руководство по установке Drupal с помощью Docker на сервере Ubuntu 22.04. Если у вас есть какие-либо вопросы, задайте их в комментариях ниже.