![]()
Шаг 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-stoppednetworks:
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 в браузере:
- Откройте новое окно в режиме Инкогнито (чтобы исключить старый кэш сервера).
- Перейдите по IP-адресу вашего сервера:
http://IP_вашего_сервера(без указания портов). - Выберите язык, нажмите «Далее» и выберите «Стандартный» профиль установки.
- На этапе «Настройка базы данных» заполните поля строго по вашему файлу:
- Имя базы данных:
drupal - Имя пользователя:
root - Пароль: ваш пароль (который указали вместо фразы в yml)
- Имя базы данных:
- Обязательно: Раскройте спойлер «Дополнительные настройки» и в поле Хост (Host) вместо
localhostвпишите имя сервиса базы данных —db. - Если есть доменное имя и сертификаты (например) 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 downsudo docker compose up -d
sudo docker ps
cd ~/DOCKER/project_syite