Разворачиваем LEMP-стэк на контейнерах Docker

Containers / LEMP Stack 26-07-2021, 16:45 sobir 542 0


Compose — это инструмент, который позволяет одновременно развертывать несколько контейнеров и управлять ими.

Compose работает во всех средах: production, staging, development, testing, а также в рабочих процессах CI.

Файл docker-compose.yml содержит инструкции для развертывания контейнеров Docker.

В этом файле указываем, например:
  • Откуда взять Dockerfile для создания кастомного образа
  • Какие порты привязать к хост-машине
  • Где хранить данные
  • и т.д...

Compose считывает этот файл и выполняет команды.

Установим Compose командой:
curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

Разрешаем права на выполнение:
chmod +x /usr/local/bin/docker-compose

Создадим символическую ссылку на скрипт:
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

Проверяем:
docker-compose --version

Создадим директории для проекта:
mkdir -p /data/{app,db,src}

где, app это директория для хранения файлов сайта, в db содержатся файлы баз данных MySQL, а в src хранятся исходники для сборки кастомных контейнеров Docker.

Содержимое файла docker-compose.yml:
vi /data/docker-compose.yml

version: '3.7'
services:

  # NGINX Service
  web:
    image: nginx:latest
    container_name: web
    ports:
      - "80:80"
    volumes:
      - ./app:/var/www/html  

  # PHP Service
  app:
    build:
      context: ./src
      dockerfile: Dockerfile-PHP-FPM
    container_name: app
    working_dir: /var/www/html
    volumes:
      - ./app:/var/www/html

  # MySQL Service
  db:
    image: mariadb:10.5.10
    container_name: db
    environment:
      MARIADB_ROOT_PASSWORD: 1234567890
    volumes:
      - ./db:/var/lib/mysql

volumes:
  app:
    driver: local
  db:
    driver: local  

Содержимое файла Dockerfile-PHP-FPM:
vi /data/src/Dockerfile-PHP-FPM

FROM php:7.4-fpm
RUN apt-get update && apt-get install -y \
        libfreetype6-dev \
        libjpeg62-turbo-dev \
        libpng-dev \
    && docker-php-ext-configure gd --with-freetype --with-jpeg \
    && docker-php-ext-install -j$(nproc) gd \
    && docker-php-ext-install mysqli

Запускаем контейнеры:
docker-compose up -d --build
Похожие новости
How to install Docker and Compose on AlmaLinux

Quick setup docker and docker-compose with a simple bash script....

Подробнее
Как назначить конкретную подсеть контейнерам Docker

Создание выделенной сети контейнерам Docker....

Подробнее
Поднимаем ocserv с аутентификацией LDAP

Поднимаем VPN сервер OpenConnect (ocserv) в контейнере Docker с аутентификацией пользователей из Microsoft...

Подробнее
Настройка частного реестра Docker Private Registry

Создаем свой репозиторий образов контейнеров Docker....

Подробнее
Как назначить статические IP-адреса контейнерам Docker

Назначаем статические IP-адреса контейнерам Docker....

Подробнее
Разворачиваем NGINX в Docker

Создание кастомного образа nginx из Dockerfile....

Подробнее
Комментарии (0)
Новые комментарии
komronu8 сентября 2022 18:23

Салом, можно ещё создать файл в /etc/nginx/proxy_params, a потом добавить туда

img
К комментарию
sobir26 августа 2022 10:43

Можно ещё так: 1. Создаем отдельную сеть для наших контейнеров docker network

img
К комментарию
komronu22 августа 2022 15:12

Спасибо за отзыв, написал отдельную статью по установке и настройке Ansible

img
К комментарию
sobir19 августа 2022 18:00

Думаю в статье необходимо также описать процесс установки Ansible.

img
К комментарию
sobir17 октября 2021 11:40

Принудительное обновление сертификата: certbot certonly --force-renew -d

img
К комментарию
sobir7 августа 2021 15:35

Получаем SSL сертификат с помощью плагина nginx: certbot certonly --nginx -d

img
К комментарию
Все комментарии
Какой дистрибутив Linux вы часто используете?
Календарь
«    Январь 2023    »
ПнВтСрЧтПтСбВс
 1
2345678
9101112131415
16171819202122
23242526272829
3031 
Облако тегов