/docker-webserver

Primary LanguageShellGNU General Public License v3.0GPL-3.0

Вебсервер на контейнерах Docker.

Описание процесса создания доступно на habr.com.

В состав входят:

  • MySQL
  • PHP
  • Nginx
  • msmtp
  • composer
  • letsencrypt SSL сертификаты
  • резервное копирование в облако

Перед началом работы

  1. Подготовить сервер
  2. Установить docker
  3. Установить docker-compose

Порядок установки:

1. Клонируем репозиторий

git clone git@github.com:a-kryvenko/docker-website.git .

2. Копируем файл с переменными окружения:

cp .env.example .env

3. В файле .env указываем значения для переменных

Описание переменных
  • COMPOSE_FILE - какие файлы docker-compose подключаем. Отличаются для dev и production окружений;
  • SYSTEM_GROUP_ID - ID группы пользователя хоста, от имени которого работаем с сервером. Обычно 1000;
  • SYSTEM_USER_ID - ID группы пользователя хоста, от имени которого работаем с сервером. Обычно 1000;
  • APP_NAME - url, по которому доступен сайт. Например, example.com или example.local для локальной разработки;
  • ADMINISTRATOR_EMAIL - email, на который отправляем информацию о сертификатах;
  • DB_HOST - хост базы данных. По умолчанию db, но в случае, когда база данных на другом сервере - указываем адрес сервера;
  • DB_DATABASE - название базы данных;
  • DB_USER - имя пользователя, который работает с базой данных;
  • DB_USER_PASSWORD - пароль пользователя базы данных;
  • DB_ROOT_PASSWORD - пароль root пользователя базы данных;
  • AWS_S3_URL - url облачного хранилища бэкапов;
  • AWS_S3_BUCKET - название бакета в хранилище бэкапов;
  • AWS_S3_ACCESS_KEY_ID - ключ к хранилищу;
  • AWS_S3_SECRET_ACCESS_KEY - пароль к хранилищу;
  • AWS_S3_LOCAL_MOUNT_POINT - путь к локальной папке, в которую монтируем облачное хранилище;
  • MAIL_SMTP_HOST - smpt хост для отправки почты, например smtp.gmail.com;
  • MAIL_SMTP_PORT - smpt порт. По умолчанию 25;
  • MAIL_SMTP_USER - имя пользователя smpt;
  • MAIL_SMTP_PASSWORD - пароль smtp.

Отдельно стоит упомянуть COMPOSE_FILE. В зависимости от того, в каком окружении мы запускаем сайт - нам нужны разные сервисы. К примеру, локально - нам нужен только базовый и облако для бэкапов:

compose-app.yml:compose-cloud.yml

Для dev сайта - бэкапы и https:

compose-app.yml:compose-https.yml:compose-cloud.yml

Для production - весь набор:

compose-app.yml:compose-https.yml:compose-cloud.yml:compose-production.yml

4. Собираем образы и запускаем наш сервер

docker-compose build \  
docker-compose up -d

5. Если мы используем https, то запускаем скрипт для получения сертификатов

./cgi-bin/prepare-certbot.sh

6. Инициализируем crontab

./cgi-bin/prepare-crontab.sh