Описание процесса создания доступно на habr.com.
В состав входят:
- MySQL
- PHP
- Nginx
- msmtp
- composer
- letsencrypt SSL сертификаты
- резервное копирование в облако
- Подготовить сервер
- Установить docker
- Установить docker-compose
git clone git@github.com:a-kryvenko/docker-website.git .
cp .env.example .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
docker-compose build \
docker-compose up -d
./cgi-bin/prepare-certbot.sh
./cgi-bin/prepare-crontab.sh