https://docs.docker.com/compose/compose-file/11-extension/
모듈화
version: '3.8'
x-common:
&common
restart: always
volumes:
- source:/code
environment:
&default-env
BY: "x-common"
x-value: &v1 x
services:
ubuntu:
<<: *common
image: ubuntu:22.04
environment:
<<: *default-env
FROM: "env definition"
X: *v1
entrypoint: /bin/bash
command:
- -c
- echo 'env from ${FROM}' && echo env from $${BY}
restart: no
volumes:
source:
설명
----
&common
==
restart: always
volumes:
- source:/code
&default-env
==
BY: "x-common"
&v1
==
x
version: '3.8'
services:
ubuntu:
image: ubuntu:22.04
restart: always
volumes:
- source:/code
environment:
BY: "x-common"
FROM: "env definition"
X: x
entrypoint: /bin/bash
command:
- -c
- echo 'env from ${FROM}' && echo env from $${BY}
restart: no
volumes:
source:
https://docs.docker.com/compose/profiles/
https://docs.docker.com/compose/compose-file/15-profiles/
예제
1. yaml 파일 작성
--------------
version: '3.8'
services:
postgres:
image: postgres:16.1-bullseye
environment:
- POSTGRES_PASSWORD=mysecretpassword
server:
image: ubuntu:22.04
stdin_open: true # docker run -i
tty: true # docker run -t
depends_on:
- postgres
pgadmin:
image: dpage/pgadmin4:7.4
environment:
- [email protected]
- PGADMIN_DEFAULT_PASSWORD=SuperSecret
depends_on:
- postgres
- server
profiles:
- debug
2. 프로젝트 실행, profile 선언 x
-------------------------------
docker compose -f docker-compose.yaml up -d
=> postgres, server 2개의 서비스만 실행
3. 프로젝트 실행, profile 선언 o
-------------------------------
docker compose -f docker-compose.yaml --profile debug up -d
=> postrgres, server ,pgadmin 3개의 서비스 실행
https://docs.docker.com/compose/compose-file/deploy/
예제
deploy:
resources:
limits: ------- 한계치
cpus: '0.50'
memory: 50M
pids: 1
reservations: ----- 사용할 예약 공간
cpus: '0.25'
memory: 20M
restart_policy:
condition: on-failure
delay: 5s
max_attempts: 3
window: 120s ----- 120초안에 3번의 시도가 있었는지
update_config:
parallelism: 2
delay: 10s
order: stop-first
예제2
name: deploy-replica
services:
web:
image: nginx:latest
expose:
- 80
deploy:
replicas: 3