Портовый рабочий или осваиваем Docker

Краткая инструкция по быстрой настройке связки 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 сертификатов есть небольшая заметка

Подискутировать

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.