Краткая инструкция по быстрой настройке связки nginx, php-fpm, mysql и docker в docker-compose
В начале нам необходимо установит пакеты, как для Docker так и для дальнейшей установки Docker-compose:
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg2 software-properties-common python-pip git curl -fsSL https://download.docker.com/linux/$(. /etc/os-release; echo "$ID")/gpg | sudo apt-key add - apt-key fingerprint 0EBFCD88 add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/$(. /etc/os-release; echo "$ID") \ $(lsb_release -cs) \ stable" apt-get update apt-get install docker-ce pip install docker-compose systemctl start docker systemctl enable docker
Создаем дерево каталогов
project-dir - корневой каталог ├─ config - для докер файлов и конфигов │ ├─ mysql │ ├─ nginx │ └─ php ├─ logs - для логов │ └─ nginx ├─ db-data - для базы данных └─ web - для файлов проекта └─ default
Создаем пользователя и все дальнейшие операции выполняем от этого пользователя:
useradd -m -s /bin/bash username passwd username usermod -a -G docker username
Создаем docker-compose.yml в каталоге project-dir, с содержимым:
#Версия version: '2' services: #Контейнер nginx nginx: #берем последний image: nginx:latest #пробрасываем 80 порт ports: - "80:80" #Пробрасываем каталоги и файлы настроек #- источник на хост машине(локальной) : где размещается на докер машине volumes: - ./config/nginx:/etc/nginx/conf.d - ./web/default:/var/web/default - ./logs:/var/log #Даем nginx разрешение общаться с php-fpm links: - phpfpm #Устанавливаем ПХП phpfpm: image: bitnami/php-fpm ports: - "9000:9000" volumes: - ./web:/var/web - ./images/php:/bitnami #MySQL mysql: image: mysql:8 ports: - "3306:3306" volumes: - ./db-data:/var/lib/mysql - ./images/mysql/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf environment: MYSQL_ROOT_PASSWORD: Password4Root
размещаем файлы проекта в каталоге ./project-dir/web/
стартуем docker-compose up -d
делаем автозапуск docker контейнера
Создаем файл /etc/systemd/system/docker-conteiner.service с содержимым:
[Unit] Description=Docker container start Requires=docker.service After=docker.service [Service] Restart=always ExecStart=/usr/local/bin/docker-compose -f /path2home/project-dir/compose/docker-compose.yml up ExecStop=/usr/local/bin/docker-compose -f /path2home/project-dir/docker-compose.yml down [Install] WantedBy=default.target
Затем запускаем его и ставим в автозапуск:
systemctl enable docker-conteiner.service systemctl start docker-conteiner.service
материал: дока тут
для использования ssl сертификатов есть небольшая заметка