Docker совет №4: Структура проекта с несколькими Dockerfile и docker-compose

Oct 19, 2017 08:36 · 151 words · 1 minute read docker docker-compose

Когда дело доходит до организации крупных проектов с несколькими Dockerfile и их взаимодействием через docker-compose, делать это можно по-разному. В данной статье предлагаю рассмотреть, как это делаю я — давайте разберемся!

Маленький проект (одно приложение с одним Dockerfile и одним docker-compose.yml) никогда не вызывает вопросов, его структура выглядит так:

my_super_app/
  - appcode/
  - Dockerfile
  - docker-compose.yml

При этом содержимое файла docker-compose.yml в общем случае выглядит так:

version: '3'
 
services:
  myapp:
    build: '.'

Но когда в проекте существует несколько отдельных сервисов со своими Dockerfil‘ами (например, nginx + php-fpm и redis), то все равно для удобства управления нам нужен один и только один docker-compose.yml. Структура проекта во втором случае будет похожа на эту:

my_super_app/
  - nginx/
    - Dockerfile
  - php-fpm/
    - Dockerfile
  - redis/
    - Dockerfile
  - memcached/
    - Dockerfile
  - docker-compose.yml

А сам файл docker-compose.yml превратится в:

version: '3'
 
services:
  nginx:
    build: './nginx'
  php-fpm:
    build: './php-fpm'
  redis:
    build: './redis'
  memcached:
    build: './memcached'
tweet Share