Docker Compose между файлами и проектами
Compose поддерживает два метода совместного использования общей конфигурации:
- Расширение всего файла Compose с помощью нескольких файлов Compose
- Расширение отдельных сервисов с помощью поля extends
Несколько файлов Compose
докер-compose.yml
version: '3.4'
services:
sqldata:
image: mcr.microsoft.com/mssql/server:2019-latest
докер-compose.override.yml
version: '3.4'
services:
sqldata:
environment:
- SA_PASSWORD=Pass@word
- ACCEPT_EULA=Y
ports:
- "5433:1433"
volumes:
- eshop-sqldata:/var/opt/mssql
volumes:
eshop-sqldata:
external: false
Чтобы проверить переопределение, используйте конвертировать команда ниже —
docker compose convert
Выход
Когда вы запускаете docker compose up, он автоматически считывает переопределения. Теперь было бы неплохо использовать это приложение Compose в производственной среде. Итак, создайте еще один файл переопределения.
докер-compose.prod.yml
version: '3.4'
services:
sqldata:
environment:
- SA_PASSWORD=Pass@word
- ACCEPT_EULA=Y
ports:
- "5433:1433" # Important: In a production environment you should remove the external port
Чтобы развернуть этот производственный файл Compose, вы можете запустить
docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d
Это развертывает все три службы, используя конфигурацию в docker-compose.yml и docker-compose.prod.yml (но не конфигурацию dev в docker-compose.override.yml).
Расширение услуг
При определении любой службы в docker-compose.yml вы можете объявить, что вы расширяете другую службу следующим образом:
services:
web:
extends:
file: common-services.yml
service: webapp
services:
webapp:
build: .
ports:
- "8000:8000"
volumes:
- "/data"