Контейнер для быстрого разворачивания сервера в контенере Docker Помимо сервера включены дополнительные часто используемые сервисы В сборку включены:
- Php 7.4.1 + xDebug(включено по умолчанию для окружения development)
- Nginx
- Mysql 5.7
- Jenkins ( Отключена по умолчанию )
- Jira ( Отключена по умолчанию )
- Phpmyadmin
- Redis
Для начала работы необходимо установить пакеты docker и docker-compose, подробнее об установке описано на сайте разработчика. Для клонирования репозитория необходимо выполнить:
git clone git@github.com:scagroup/web-server.git
Для сборки контенеров
docker-compose build
и для запуска контенера
docker-compose up -d
В конфигурировании сервера и сервисов, имеется 2 распространенных окружения, это Development и Production. По умолчанию используется окружение Development которое вы запускаете командой:
docker-compose up -d
Docker-compose по умолчанию использует файл конфигурации docker-compose.yaml
в корне проекта.
Мы расширили файл кофигурации для окружения Production, путем добавления файла docker-compose.production.yaml
Для сборки и запуска проекта в окружении Production необходимо запускать комманды с указание файлов, путем добавления ключа и имени файла -f $filename
. Указывая последовательно, вы перекрываете конфигурации файлов, поэтому для запуска и сборки в окружении Production, необходимо запускать сборку и запуск контейнеров, следующим образом:
docker-compose -f docker-compose.yaml -f docker-compose.production.yaml build
и для запуска контейнера
docker-compose -f docker-compose.yaml -f docker-compose.production.yaml up -d
В сборку включены дополнительные сервисы, помимо веб сервера. Для конфигурации сервисов необходимо отредактировать файл docker-compose.yaml
.
services:
#php:
# build:
# context: ./docker_config
# dockerfile: php
# links:
# - mysql
# ports:
# - 9000:9000
# container_name: "php"
# volumes:
# - ./data/www/:/var/www/html/
nginx:
build:
context: ./docker_config
dockerfile: nginx
container_name: "nginx"
ports:
- 80:80
links:
- mysql
- php
volumes:
- ./config/nginx.conf:/etc/nginx/conf.d/default.conf
- ./data/www/:/var/www/html/
Сервисы котрые вы не планируете использовать, можно отключить, путем комментирования блока кода сервиса, как показано. В примере мы отключаем сервис php, но так делать не нежно потому что сервис nginx зависит от контейнера php. После настройки сборки, необходимо выполнить комманды: Для сборки контенеров
docker-compose build
и для запуска контенера
docker-compose up -d
Для большей вариативности, сборка всех образов, вынесена в отдельные файлы в директории docker_config
. Вы можете сконфигурировать любой образ путем изменения конфигурации файла сборки докер крнтейнера.
│
├── docker-compose.yaml
├── docker_config
│ ├── jenkins
│ ├── jira
│ ├── mysql
│ ├── nginx
│ ├── php
│ └── pma
└── README.md
FROM jenkins/jenkins:latest
USER root
RUN apt-get update
В данном примере показано, как мы выгрузили реестр из репозитория пакетного менеджера командой RUN apt-get update
Конфигурация сервера хранится в файле nginx.conf
. Для конфигурации используется синтаксис nginx, c которым вы можете ознакомиться на сайте разработчика.
│
├── docker-compose.yaml
├── config
│ └── nginx.conf
└── README.md
В текущей версии сервер конфигурируется для домена localhost
. Если есть необходимость добавить дополнительные домены и хранить конфигурации в разных файлах, необходимо в файле docker-compose.yaml
в разделе сервиса Nginx в подключаемый раздел подключать целиком папку с конфигурациями. Появится дополниельная проблема связанная с перенаправлением хостов. Необходимо будет дополнительно конфигурировать файл /etc/hosts
в контейнере nginx, например на этапе сборки контейнера.
Важно! Для работы сервера по умолчанию необходимо ложить файлы в каталог
data/www/test/
Для удобства и быстроты сборки контейнера с необходимыми версиями пакетов, докер контейнерные файлы параметризованы через файл .env
.
├── docker-compose.yaml
├── docker_config
├── config
├── .enf
└── README.md
Файл выглядит следующим образом:
FOLDER_CONFIG_DOCKER=docker_config
...
JIRA_PORT=8002
PHP_VERSION=7.4
NGINX_VERSION=stable
MYSQL_VERSION=5.7
PMA_VERSION=latest
JENKINS_VERSION=latest
JIRA_VERSION=latest
Указывая версию не забываем пересобрать контейнер
docker-compose build
и для запуска контенера
docker-compose up -d