Расширенные возможности и конфигурация Compose
Хотя базовая структура и команды Compose мощны, Docker Compose также предлагает ряд расширенных функций и параметров конфигурации, которые помогут вам создавать более сложные и надежные приложения.
Переменные окружения и секреты
Вы можете использовать переменные окружения для передачи параметров конфигурации вашим службам. Docker Compose поддерживает переменные окружения как на этапе сборки, так и на этапе выполнения, которые могут быть определены на уровне службы или глобальном уровне.
Кроме того, вы можете использовать Docker Secrets для безопасного хранения конфиденциальной информации, такой как пароли баз данных или ключи API, и предоставлять ее вашим службам.
version: "3"
services:
web:
image: myapp/web
environment:
- DATABASE_URL=mysql://root:${DB_PASSWORD}@db/myapp
secrets:
- db-password
secrets:
db-password:
file: ./db-password.txt
Управление зависимостями и проверки работоспособности
Docker Compose позволяет определять зависимости между службами, гарантируя, что службы запускаются в правильном порядке и что зависимые службы работоспособны перед запуском других служб.
Вы также можете настроить проверки работоспособности для ваших служб, которые позволяют Compose отслеживать состояние ваших контейнеров и принимать соответствующие действия, такие как перезапуск неработоспособных контейнеров.
version: "3"
services:
web:
image: myapp/web
depends_on:
db:
condition: service_healthy
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost"]
interval: 30s
timeout: 10s
retries: 5
db:
image: mysql:5.7
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
interval: 30s
timeout: 10s
retries: 5
Сети и обнаружение служб
Docker Compose автоматически создает стандартную сеть для вашего приложения, но вы также можете определить пользовательские сети и контролировать сетевую конфигурацию для ваших служб.
Кроме того, Compose предоставляет встроенное обнаружение служб, позволяющее вашим службам находить и взаимодействовать друг с другом, используя имена служб, определенные в файле Compose.
version: "3"
services:
web:
image: myapp/web
networks:
- frontend
environment:
- DB_HOST=db
db:
image: mysql:5.7
networks:
- backend
networks:
frontend:
backend:
Используя эти расширенные возможности, вы можете создавать более сложные, устойчивые и масштабируемые приложения Docker Compose, которые соответствуют потребностям вашей организации.