Установка Drupal в Ubuntu

Шаг 1. Устанавливаем Docker:

sudo snap install docker
 

Шаг 2.Создаем папку  DOCKER  в домашнем каталоге:

mkdir ~/DOCKER

Переходим в него:

cd ~/DOCKER

Создаем проэкт: 

mkdir project_syite

Переходим в него: 

cd project_syite

Разрешаем Docker использовать системные каталоги:

sudo snap connect docker:removable-media

Добавьте вашего текущего пользователя в группу Docker, чтобы управлять 

контейнерами без постоянного ввода sudo:

sudo addgroup --system docker

 sudo adduser $USER docker

Создаем  docker-compose.yml :

nano docker-compose.yml

name: drupal_platform

services:
 # 1. СУБД MySQL
 db:
   image: mysql:8.0
   container_name: drupal_db
   ports:
     - "3310:3306"
   environment:
     MYSQL_ROOT_PASSWORD: "ваш пароль"
     MYSQL_DATABASE: "drupal"
   volumes:
     - ./db_data:/var/lib/mysql
   command: --default-authentication-plugin=mysql_native_password --sql-mode=""
   networks:
     - drupal_net
   restart: unless-stopped
   deploy:
     resources:
       limits:
         memory: 1G

 # 2. Веб-портал Drupal (Ваш бэкап корня сайта)
 drupal:
   image: drupal:10.3-php8.3-apache
   container_name: drupal_site
   ports:
     - "80:80" # Сайт слушает только стандартный HTTP порт 80
   volumes:
     - ./drupal-src:/var/www/html
   networks:
     - drupal_net
   depends_on:
     - db
   restart: unless-stopped

networks:
 drupal_net:
   driver: bridge

Создаем папку конфигурации:

mkdir -p drupal-src

Запустите сборку в фоновом режиме:

docker compose up -d --force-recreate

Шаг 3. Исправление прав snap Docker:

Поскольку файлы сгенерировались внутри контейнера, на хост-машине они могут заблокироваться. Выставим права для встроенного в Docker пользователя www-data (его ID равен 33), чтобы мастер установки в браузере не выдал ошибку Permission Denied:

sudo chown -R 33:33 ./drupal-src 

sudo chmod -R 775 ./drupal-src

Шаг 4. Установка Drupal в браузере:

  1. Откройте новое окно в режиме Инкогнито (чтобы исключить старый кэш сервера).
  2. Перейдите по IP-адресу вашего сервера: http://IP_вашего_сервера (без указания портов).
  3. Выберите язык, нажмите «Далее» и выберите «Стандартный» профиль установки.
  4. На этапе «Настройка базы данных» заполните поля строго по вашему файлу:
    • Имя базы данных: drupal
    • Имя пользователя: root
    • Пароль: ваш пароль (который указали вместо фразы в yml)
  5. Обязательно: Раскройте спойлер «Дополнительные настройки» и в поле Хост (Host) вместо localhost впишите имя сервиса базы данных — db.
  6. Если есть доменное имя и сертификаты (например) letsencrypt то меняем docker-compose.yml :

nano docker-compose.yml

name: drupal_platform

services:
 # 1. СУБД MySQL
 db:
   image: mysql:8.0
   container_name: drupal_db
   ports:
     - "3310:3306" # Порт изменен на 3310, чтобы избежать конфликтов на хосте
   environment:
     MYSQL_ROOT_PASSWORD: "ваш пароль"
     MYSQL_DATABASE: "drupal"
   volumes:
     - ./db_data:/var/lib/mysql
   command: --default-authentication-plugin=mysql_native_password --sql-mode=""
   networks:
     - drupal_net # Подключаем базу к общей сети
   restart: unless-stopped
   deploy:
     resources:
       limits:
         memory: 1G

 # 2. Веб-портал Drupal (Ваш бэкап корня сайта)
 drupal:
   image: drupal:10.3-php8.3-apache
   container_name: drupal_site
   ports:
     - "80:80"
     - "443:443"
   volumes:
     - ./drupal-src:/var/www/html
     - /etc/letsencrypt/live/ваш домен/fullchain.pem:/etc/ssl/certs/ssl-cert-snakeoil.pem:ro
     - /etc/letsencrypt/live/ваш домен/privkey.pem:/etc/ssl/private/ssl-cert-snakeoil.key:ro
   command: >
     bash -c "
     a2enmod ssl && 
     a2ensite default-ssl.conf && 
     apache2-foreground
     "
   networks:
     - drupal_net # Подключаем сайт к общей сети
   depends_on:
     - db
   restart: unless-stopped

# Явное создание внутренней изолированной сети для контейнеров проекта
networks:
 drupal_net:
   driver: bridge

Это 100% работающий у меня на компе конфиг важно 

подправьте пароль и пути к сертификатам под свои

После этого пересобрать контейнер:
sudo docker compose down
sudo docker compose up -d 
Проверяем :
sudo docker ps
Незабываем команды контейнеру отдаются из его каталога:
cd ~/DOCKER/project_syite