Создание отдельной конфигурации docker-compose для производства и разработки

У меня есть установка docker-compose для разработки, и мне нужно реплицировать тот же файл для производства или постановки.

В настоящее время, помимо volumes, ports и environment, я не совсем уверен, какие настройки «может потребоваться» изменить для производства / среды.

Чтобы уточнить:

  • Мне нужно сменить volumes, потому что я обычно подключаю USB-накопитель к своему докер-контейнеру, например: d:/var/www
  • Проблема с ports заключается в том, что на моем локальном компьютере могут быть другие службы, использующие порт 80, поэтому мне может потребоваться это изменить.
  • environment, конечно, отличается для prod / dev .. (в основном аутентификация и доступ к базе данных)

Было бы неплохо узнать больше советов.

Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
4
0
362
2

Ответы 2

Вы должны следовать Использование Compose в производстве документация:

You probably need to make changes to your app configuration to make it ready for production. These changes may include:

  • Removing any volume bindings for application code, so that code stays inside the container and can’t be changed from outside
  • Binding to different ports on the host
  • Setting environment variables differently, such as when you need to decrease the verbosity of logging, or to enable email sending)
  • Specifying a restart policy like restart: always to avoid downtime

  • Adding extra services such as a log aggregator

Я прочитал документы, пункты два и пять немного расплывчаты, а документ далек от подробностей, поэтому я задал вопрос

samayo 16.10.2018 18:13

Точный список будет зависеть от требований вашей среды / команды операций, но это то, что кажется полезным помимо портов / существующих томов:

Сети

Сеть по умолчанию может не работать в вашей производственной среде. Например, ваша команда операторов может решить разместить nginx / php-fpm / mariadb в разных сетях, как в следующем примере (https://docs.docker.com/compose/networking/#specify-custom-networks), или даже использовать уже существующую сеть.

Конфиги mysql

Обычно они находятся в отдельном каталоге, то есть /etc/my.cnf и /etc/my.cnf.d. Эти конфигурации могут отличаться между prod / dev. Не вижу его на пути к вашим томам

PHP-fpm7

Не работал с php-fpm7, но в php-fpm5 у него также была другая папка с файлами конфигурации (/etc/php-fpm.conf и /etc/php-fpm.d), которая отсутствует на ваших томах. Эти файлы также могут отличаться, если вы справитесь даже с умеренной нагрузкой (вам нужно будет настроить количество рабочих / тайм-аутов и т. д.)

Nginx

Как и для php-fpm, настройки ssl / имена хостов / конфигурации доменов могут отличаться

логирование

Подумайте, какой драйвер регистрации может лучше всего соответствовать вашим потребностям. От здесь:

Docker includes multiple logging mechanisms to help you get information from running containers and services. These mechanisms are called logging drivers.

Вы можете легко настроить его в docker-compose, вот пример, вызывающий выделенный контейнер fluentd для ведения журнала:

version: "3"

services:
  randolog:
    image: golang
    command: go run /usr/src/randolog/main.go
    volumes:
      - ./randolog/:/usr/src/randolog/
    logging:
      driver: fluentd
      options:
        fluentd-address: "localhost:24224"
        tag: "docker.{{.ID}}"

  fluentd:
    build:
      context: ./fluentd/
    ports:
      - "24224:24224"
      - "24224:24224/udp"

Другие вопросы по теме