|
|
|
@ -0,0 +1,49 @@
|
|
|
|
|
# Docker Compose Profile - профили
|
|
|
|
|
|
|
|
|
|
Те, кто юзает docker-compose, обычно делятся на 2 типа:
|
|
|
|
|
- пихаем все в 1 файл на каждый хост
|
|
|
|
|
- пихаем в разные файлы с какой-то логикой
|
|
|
|
|
|
|
|
|
|
Что, если я напишу, что можно совместить эти 2 типа людей. 1 файл, но с разбивкой по профилям с какой-то логикой. Звучи правда классно?
|
|
|
|
|
|
|
|
|
|
Возьмем классический монолитный файл docker-compose:
|
|
|
|
|
|
|
|
|
|
```yaml title="docker-compose.yaml"
|
|
|
|
|
version: "3.9"
|
|
|
|
|
services:
|
|
|
|
|
nginx1:
|
|
|
|
|
image: nginx
|
|
|
|
|
container_name: nginx1
|
|
|
|
|
profiles:
|
|
|
|
|
- prod
|
|
|
|
|
- test
|
|
|
|
|
nginx2:
|
|
|
|
|
image: nginx
|
|
|
|
|
container_name: nginx2
|
|
|
|
|
profiles:
|
|
|
|
|
- prod
|
|
|
|
|
nginx3:
|
|
|
|
|
image: nginx
|
|
|
|
|
container_name: nginx3
|
|
|
|
|
profiles:
|
|
|
|
|
- test
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Используя profile, можно поместить 1 службу в несколько профилей, что дает больше гибкости, чем несколько файлов.
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
user@test tmp % docker-compose --profile test up -d
|
|
|
|
|
[+] Running 2/2
|
|
|
|
|
⠿ Container nginx1 Started 0.1s
|
|
|
|
|
⠿ Container nginx3 Started
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Пример выше показывает, что были запущены только сервисы, с профилем `test`. Больше информации можно найти в [документации Docker](https://blog.ktz.me/monolithic-docker-compose-files-filtered-by-labels/#:~:text=%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D0%B8%D0%B8%20Docker%20.) .
|
|
|
|
|
|
|
|
|
|
!!! note
|
|
|
|
|
Eсли включаем профиль, то простой вариант docker-compose up -d не выполнится:
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
user@test tmp % docker-compose up -d
|
|
|
|
|
no service selected
|
|
|
|
|
```
|