Если вы пишете файл 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. Попробуйте бесплатно.