Сокращение длины файла Docker-compose с помощью ключа слияния YAML <<

Если вы пишете файл docker-compose, может случиться так, что одна и та же часть конфигурации каждого контейнера будет повторяться в файле снова и снова.

Рассмотрим этот пример.

version: '3.7'

services:
  web:
    restart: always
    image: web
    environment:
    - ENVIRONMENT_NAME=local_dev
    - USING_DOCKER_COMPOSE=true
    - DJANGO_SETTINGS_MODULE=sms_mailer.settings
    - DJANGO_CONFIGURATION=Local
    - DJANGO_SECRET_KEY
    - DJANGO_ALLOWED_HOSTS
    - DJANGO_CORS_ORIGIN_WHITELIST
    build:
      context: ./
      dockerfile: Dockerfile
    ports:
      - "8000:8000"
    command: /code/run_web.sh

  task_runner:
    restart: always
    image: task_runner
    environment:
    - ENVIRONMENT_NAME=local_dev
    - USING_DOCKER_COMPOSE=true
    - DJANGO_SETTINGS_MODULE=sms_mailer.settings
    - DJANGO_CONFIGURATION=Local
    - DJANGO_SECRET_KEY
    - DJANGO_ALLOWED_HOSTS
    - DJANGO_CORS_ORIGIN_WHITELIST
    build:
      context: ./
      dockerfile: Dockerfile
    ports:
      - "5000:5000"
    command: /code/task_runner.sh   
Вход в полноэкранный режим Выйти из полноэкранного режима

В файле docker-compose эта часть кода повторяется два раза.

environment:
    - ENVIRONMENT_NAME=local_dev
    - USING_DOCKER_COMPOSE=true
    - DJANGO_SETTINGS_MODULE=sms_mailer.settings
    - DJANGO_CONFIGURATION=Local
    - DJANGO_SECRET_KEY
    - DJANGO_ALLOWED_HOSTS
    - DJANGO_CORS_ORIGIN_WHITELIST
  build:
    context: ./
    dockerfile: Dockerfile
Войти в полноэкранный режим Выйти из полноэкранного режима

Давайте воспользуемся ключевым словом << YAML, чтобы сделать этот файл немного короче.

version: '3.7'

x-web-environment:
  &web-environment
  environment:
    - ENVIRONMENT_NAME=local_dev
    - USING_DOCKER_COMPOSE=true
    - DJANGO_SETTINGS_MODULE=sms_mailer.settings
    - DJANGO_CONFIGURATION=Local
    - DJANGO_SECRET_KEY
    - DJANGO_ALLOWED_HOSTS
    - DJANGO_CORS_ORIGIN_WHITELIST
  build:
    context: ./
    dockerfile: Dockerfile

services:
  web:
    <<: *web-environment
    restart: always
    image: web
    ports:
      - "8000:8000"
    command: /code/run_web.sh

  task_runner:
    <<: *web-environment
    restart: always
    image: task_runner
    ports:
      - "8001:8001"
    command: /code/run_task_runner.sh
Вход в полноэкранный режим Выход из полноэкранного режима

И мы только что оптимизировали файл Docker Compose.🤟

Статья опубликована с использованием bloggu.io. Попробуйте бесплатно.

Оцените статью
Procodings.ru
Добавить комментарий