- PVSM.RU - https://www.pvsm.ru -

Docker-compose switch to version 2

image

Совсем недавно, после выхода Compose 1.6.0+ и Docker 1.10.0+, стала доступна 2 версия [1].
Добавлены ключи: services [2], volumes [3], networks [4]. Будут удалены ключи: links [5].

Version 1

# docker-compose.yml
app:
  build: .
  ports:
    - '3000:3000'
  volumes:
    - .:/home/web
  links:
    - db
db:
  image: sameersbn/postgresql
  ports:
    - '5432'
  volumes_from:
    - db_data
  env_file:
    - $HOME/.docker/$APP/db.env
db_data:
  image: tianon/true
  volumes:
    - /var/lib/postgresql

# config/database.yml
development:
  adapter: postgresql
  encoding: unicode
  database: <%= ENV['DB_ENV_DB_NAME'] %>
  pool: 5
  username: <%= ENV['DB_ENV_DB_USER'] %>
  password: <%= ENV['DB_ENV_DB_PASS'] %>
  host: <%= ENV['DB_PORT_5432_TCP_ADDR'] %>

Version 2

fallback mode

Пока links [5] работают по-старому только network_mode [6]: bridge.

# docker-compose.yml
version: '2'
services:
  app:
    build: .
    ports:
      - '3000:3000'
    volumes:
      - .:/home/web
    depends_on:
      - db
    links:
      - db
    network_mode: bridge
  db:
    image: sameersbn/postgresql
    ports:
      - '5432'
    volumes:
      - db_data:/var/lib/postgresql
    env_file:
      - $HOME/.docker/$APP/db.env
    network_mode: bridge
volumes:
  db_data:

# config/database.yml
development:
  adapter: postgresql
  encoding: unicode
  database: <%= ENV['DB_ENV_DB_NAME'] %>
  pool: 5
  username: <%= ENV['DB_ENV_DB_USER'] %>
  password: <%= ENV['DB_ENV_DB_PASS'] %>
  host: <%= ENV['DB_PORT_5432_TCP_ADDR'] %>

Без links [5], но используя env file [7].

# docker-compose.yml
version: '2'
services:
  app:
    build: .
    ports:
      - '3000:3000'
    volumes:
      - .:/home/web
    depends_on:
      - db
    env_file:
      - $HOME/.docker/$APP/db.env
  db:
    image: sameersbn/postgresql
    ports:
      - '5432'
    volumes:
      - db_data:/var/lib/postgresql
    env_file:
      - $HOME/.docker/$APP/db.env
volumes:
  db_data:

# config/database.yml
development:
  adapter: postgresql
  encoding: unicode
  database: <%= ENV['DB_NAME'] %>
  pool: 5
  username: <%= ENV['DB_USER'] %>
  password: <%= ENV['DB_PASS'] %>
  host: <%= ENV['DB_HOST'] %>

# $HOME/.docker/$APP/db.env
DB_NAME=habrahabr
DB_USER=habrahabr
DB_PASS=habrahabr
DB_HOST=db

Спасибо за внимание.

Автор: AfsmNGhr

Источник [8]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/razrabotka/113513

Ссылки в тексте:

[1] 2 версия: https://github.com/docker/compose/blob/master/docs/compose-file.md#version-2

[2] services: https://github.com/docker/compose/blob/master/docs/compose-file.md#service-configuration-reference

[3] volumes: https://github.com/docker/compose/blob/master/docs/compose-file.md#volume-configuration-reference

[4] networks: https://github.com/docker/compose/blob/master/docs/compose-file.md#network-configuration-reference

[5] links: https://github.com/docker/compose/blob/master/docs/link-env-deprecated.md

[6] network_mode: https://github.com/docker/compose/blob/master/docs/compose-file.md#network_mode

[7] env file: https://github.com/docker/compose/blob/master/docs/compose-file.md#env_file

[8] Источник: https://habrahabr.ru/post/278083/