Spec-Zone.ru › MariaDB

Настройка стека LAMP с Docker Compose

Docker Compose — это инструмент, который позволяет определить, какие контейнеры Docker должны запускаться и какие отношения должны между ними существовать. Он следует подходу инфраструктура как код, как и большинство инструментов автоматизации и сам Docker.

Дополнительную информацию об установке Docker Compose см. в документации Docker по ссылке Установка Docker Compose.

Файл docker-compose.yml

При использовании Docker Compose, инфраструктура Docker должна быть описана в файле YAML, который называется docker-compose.yml.

Рассмотрим пример:

version: "3"

services:
  web:
    image: "apache:${PHP_VERSION}"
    restart: 'always'
    depends_on:
      - mariadb
    restart: 'always'
    ports:
      - '8080:80'
    links:
      - mariadb
  mariadb:
    image: "mariadb:${MARIADB_VERSION}"
    restart: 'always'
    volumes: 
      - "/var/lib/mysql/data:${MARIADB_DATA_DIR}"
      - "/var/lib/mysql/logs:${MARIADB_LOG_DIR}"
      - /var/docker/mariadb/conf:/etc/mysql
    environment:
      MYSQL_ROOT_PASSWORD: "${MYSQL_ROOT_PASSWORD}"
      MYSQL_DATABASE: "${MYSQL_DATABASE}"
      MYSQL_USER: "${MYSQL_USER}"
      MYSQL_PASSWORD: "${MYSQL_PASSWORD}"

В первой строке мы объявляем, что используем версию 3 языка Docker Compose.

Затем идёт список сервисов, а именно сервисы web и mariadb.

Рассмотрим свойства сервисов:

  • port отображает порт контейнера 8080 на порт хост-системы 80. Это очень полезно для среды разработки, но не для производства, так как это позволяет подключиться к контейнеризованному веб-серверу через браузер. Обычно нет необходимости подключаться к MariaDB из хост-системы.
  • links объявляет, что этот контейнер должен уметь подключаться к mariadb. Имя хоста — это имя контейнера.
  • depends_on объявляет, что mariadb должен запускаться до web. Это необходимо, так как мы не можем ничего делать с нашим приложением, пока MariaDB готова принимать подключения.
  • restart: always объявляет, что контейнеры должны перезапускаться в случае сбоя.
  • volumes создаёт тома для контейнера, если это задано в определении сервиса, или том, который может быть использован любым контейнером, если он задан глобально на том же уровне, что и services. Тома — это каталоги в хост-системе, к которым может получить доступ любое количество контейнеров. Это позволяет уничтожить контейнер без потери данных.
  • environment устанавливает переменные среды внутри контейнера. Это важно, так как при установке этих переменных мы устанавливаем учетные данные пользователя root MariaDB для контейнера.

О томах

Рекомендуется создавать тома для:

  • Каталога данных, чтобы не потерять данные при создании или замене контейнера, например, при обновлении MariaDB.
  • Каталога, куда сохраняются все логи, если это не каталог данных.
  • Каталога с конфигурационными файлами (для сред разработки), чтобы можно было редактировать эти файлы с помощью редактора, установленного в хост-системе. Обычно редактор не устанавливается в контейнерах. В производственной среде это не нужно, так как можно копировать файлы из репозитория, расположенного в хост-системе, в контейнеры.

Обратите внимание, что переменные Docker Compose — это просто заглушки для значений. Compose не поддерживает присваивание, условные операторы или циклы.

Использование переменных

В приведённом выше примере вы можете увидеть несколько переменных, например, ${MARIADB_VERSION}. Перед выполнением файла Docker Compose заменит этот синтаксис на переменную MARIADB_VERSION.

Переменные позволяют сделать файлы Docker Compose более многоразовыми: в этом случае мы можем использовать любую версию образа MariaDB без изменения файла Docker Compose.

Наиболее распространённый способ передачи переменных — запись их в файл. Это позволяет управлять версией файла переменных вместе с файлом Docker Compose. Он использует тот же синтаксис, что и в BASH:

PHP_VERSION=8.0
MARIADB_VERSION=10.5
...

Для более крупных проектов может быть целесообразно использовать разные файлы окружения для разных сервисов. Для этого необходимо указать используемый файл в файле Compose:

services:
  web:
    env_file:
      - web-variables.env
...

Команды Docker Compose

Docker Compose управляется с помощью docker-compose. Здесь мы рассмотрим наиболее распространённые команды. Дополнительные команды и подробную информацию о здесь упомянутых командах см. в документации.

Docker Compose предполагает, что файл Compose находится в текущем каталоге и называется docker-compose.yml. Чтобы использовать другой файл, необходимо указать параметр -f <filename>.

Для скачивания необходимых образов:

docker-compose pull

Контейнеры, описанные в файле Compose, могут быть созданы несколькими способами.

Для создания только в случае отсутствия:

docker-compose up --no-recreate

Для создания в случае отсутствия и пересоздания в случае изменения образа или конфигурации:

docker-compose up

Для пересоздания контейнеров в любом случае:

docker-compose up --force-recreate

В обычном режиме docker-compose up запускает контейнеры. Чтобы создать их без запуска, добавьте опцию --no-start.

Для перезапуска контейнеров без пересоздания:

docker-compose restart

Для остановки контейнера путём отправки SIGKILL:

docker-compose kill <service>

Для мгновенного удаления работающего контейнера:

docker-compose rm -f <serice>

Для остановки всех контейнеров, созданных текущим файлом Compose:

docker-compose down

Ресурсы и ссылки Docker Compose

  • Обзор Docker Compose в документации Docker.
  • Файл Compose в документации Docker.
  • Docker Compose на GitHub.

Дополнительную информацию об описанных в этом разделе понятиях можно найти в документации Docker:

  • Переменные окружения в Compose.
  • Обзор docker-compose CLI.
  • Справочник по командам Compose.

Содержание, изначально предоставленное Vettabase Ltd.

Содержание, воспроизводимое на этом сайте, является собственностью соответствующих владельцев, и это содержание не предварительно проверяется MariaDB. Мнения, информация и мнения, выраженные в этом содержании, не обязательно отражают взгляды MariaDB или любой другой стороны.

© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/setting-up-a-lamp-stack-with-docker-compose/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API