Какие настройки docker-compose необходимо удалить для производства? - PullRequest
0 голосов
/ 10 октября 2018

Я пытаюсь создать отдельный docker-compose для производства, в настоящее время у меня есть только один compose-файл, который я использую для локальной разработки, но чтобы создать его для производства, я не знаю, какие атрибуты удалить в сторону volumesи ports

мой текущий файл составления dev выглядит следующим образом:

version: '3'

services:
    db:
      container_name: mariadb
      build:
        context: ./mariadb
      volumes:
          - ./mariadb/scripts:/docker-entrypoint-initdb.d
          - ./.data/db:/var/lib/mysql
          - ./logs/mariadb:/var/log/mysql
      environment:
          MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
          MYSQL_DATABASE: ${MYSQL_DATABASE}
          MYSQL_USER: ${MYSQL_USER}
          MYSQL_PASSWORD: ${MYSQL_PASSWORD}
      ports:
          - '${MYSQL_PORT:-3306}:3306'
      command:
          'mysqld --innodb-flush-method=fsync'
      networks:
        - default
      restart: always
    php-fpm:
      container_name: php
      build:
          context: ./php7-fpm
          args:
              TIMEZONE: ${TIMEZONE}
      volumes:
          - ${APP_PATH}:/var/www/app
          - ./php7-fpm/config/php.ini:/usr/local/etc/php/php.ini
      environment:
          DB_HOST: db
          DB_PORT: 3306
          DB_DATABASE: ${MYSQL_DATABASE}
          DB_USERNAME: ${MYSQL_USER}
          DB_PASSWORD: ${MYSQL_PASSWORD}
      depends_on:
        - db
      networks:
        - default
      restart: always
    nginx:
      container_name: nginx
      build:
        context: ./nginx
        args:
          - 'php-fpm'
          - '9000'
      volumes:
        - ${APP_PATH}:/var/www/app
        - ./logs/nginx/:/var/log/nginx
      ports:
        - "80:80"
        - "443:443"
      depends_on:
        - php-fpm
      networks:
        - default
      restart: always
networks:
  default:
    driver: bridge

Ответы [ 2 ]

0 голосов
/ 19 октября 2018

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

Сети

сеть по умолчанию может не работать в вашей среде.Например, ваша рабочая группа может решить разместить 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-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"
0 голосов
/ 16 октября 2018

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

Возможно, вам нужно внести изменения в конфигурацию вашего приложения, чтобы подготовить его к работе.Эти изменения могут включать:

  • Удаление любых привязок томов для кода приложения, чтобы код оставался внутри контейнера и не мог быть изменен извне
  • Связывание с различными портами на хосте
  • Установка переменных среды по-разному, например, когда вам необходимо уменьшить детализацию ведения журнала или включить отправку электронной почты)
  • Указание политики перезапуска, например restart: always, чтобы избежать простоев

  • Добавление дополнительных сервисов, таких как агрегатор журналов

...