![]()
Установка docker:
Для установки докера потребуется дополнительно загрузить 4 пакета, а именно:
- Curl — необходим для работы с веб-ресурсами
- software-properties-common — пакет для управления ПО с помощью скриптов
- ca-certificates — содержит информацию о центрах сертификации
- apt-transport-https — необходим для передачи данных по протоколу HTTPS
Скачаем их:
sudo apt install curl software-properties-common ca-certificates apt-transport-https -y
Импортируем GPG-ключ:
wget -O- https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor | sudo tee /etc/apt/keyrings/docker.gpg > /dev/null
Добавляем репозиторий докера:
echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu jammy stable"| sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Обновляем:
sudo apt update
Устанавливаем докер:
sudo apt install docker-ce -y
Создаем папку DOCKER в домашнем каталоге:
mkdir ~/DOCKER
Переходим в него:
cd ~/DOCKER
Создаем проэкт:
mkdir project_syite
Переходим в него:
cd project_syite
Добавьте вашего текущего пользователя в группу 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