
λ²μ¨ λ컀 3λ²μ§Έ μ리μ¦μ
λλ€. μ§κΈκΉμ§ λ컀μ κΈ°μ΄, μ΄λ―Έμ§μ 컨ν
μ΄λ, λ€νΈμν¬μ λν΄ λ°°μ μ΅λλ€. μ΄λ²μ μ λ² κΈμ μ΄μ§ μΈκΈνλ docker composeμ λν΄ μμλ³΄κ² μ΅λλ€.

곡μ docsμμλ pythonμ νμ©ν compose v1μ λ μ΄μ μ§μνμ§ μμ κ²μ΄λ Go κΈ°λ°μ compose v2λ₯Ό μ¬μ©νλΌκ³ νλ€μ. κ·Έλ¬λ μ΄ κΈμμ v2λ₯Ό κΈ°μ€μΌλ‘ μμ±νκ² μ΅λλ€.

μμ μ€λͺ
νλ―μ΄ νλ μ΄ν리μΌμ΄μ
μ λ¨μΌ 컨ν
μ΄λλ‘ κ΅¬λνκΈ°μ λ무λλ λ§μ κ²μ μꡬν©λλ€. μΉ κ°λ°μ μμλ‘ λ€μ΄λ΄
μλ€. μΉ μ΄ν리μΌμ΄μ
, λ°μ΄ν°λ² μ΄μ€ (MySQL, PostgreSQL), μΊμ± μμ€ν
(Redis, Memcached), λ©μμ§ λΈλ‘컀 (RabbitMQ, Kafka), λ‘κΉ
λ° λͺ¨λν°λ§ μμ€ν
(Prometheus, ELK Stack) λ±μ΄ μ¬μ©λ μ μλλ° μ΄ λ§μ μμμ 컨ν
μ΄λλ€μ κ°μ κ΄λ¦¬νκΈ°μ λ무 λΉν¨μ¨μ μ
λλ€. μ΄ λΆνΈν¨μ docker compose κ° ν΄κ²°ν΄μ€λλ€.
docker-compose.yml)λ‘ κ΄λ¦¬ κ°λ₯docker-compose.yml μ μ¬μ©ν΄ λμΌν νκ²½μ μ½κ² λ°°ν¬ κ°λ₯π‘ YAML
- λ°μ΄ν° ꡬ쑰ν λ¬Έλ² μ€ νλ (CSV, JSON, XML, YAML λ±)
- κΈ°λ³Έ λ¬Έλ²
#: μ£Όμ...or---: λ¬Έμμ λ§μ§λ§ λͺ μkey: value: key-value κ°, λ°λμ λμ΄μ°κΈ°κ° νμ- κ³μΈ΅ ꡬ쑰λ₯Ό λ€μ¬μ°κΈ°(indent)λ‘ λνλ
int,string,booleanμ§μ
- μμ λ°μ΄ν = λ¬Έμ κ·Έλλ‘ ('\n' μ κ·Έλ₯ \nμΌλ‘ μΈμ)
- ν° λ°μ΄ν = μ΄μ€μΌμ΄νλ¬Έ κ΅¬λΆ ("\n"μ κ°νλ¬Έμλ‘ μΈμ)
- λ°°μ΄μ νμ΄ν (-)μΌλ‘ νν
version: '3.8'
services:
postgres:
image: postgres:17.2
container_name: postgres
restart: always
env_file:
- .env
ports:
- "5432:5432"
volumes:
- postgres_data:/var/lib/postgresql/data
networks:
- backend_network
redis:
image: redis:latest
container_name: redis
restart: always
ports:
- "6379:6379"
networks:
- backend_network
spring-app:
image: my-backend:latest
container_name: spring-app
restart: always
depends_on:
- postgres
- redis
ports:
- "8080:8080"
environment:
REDIS_HOST: ${REDIS_HOST}
REDIS_PORT: ${REDIS_PORT}
networks:
- backend_network
networks:
backend_network:
driver: bridge
volumes:
postgres_data:
image : ν΄λΉ μλΉμ€(컨ν
μ΄λ)μμ μ€νν μ΄λ―Έμ§environments : ν΄λΉ μλΉμ€μμ μ¬μ©ν νκ²½ λ³μ.env νμΌμ μμ± ν env_fileμ ν΅ν΄ μ€μ ν μλ μμ (κΆμ₯)ports : 곡κ°ν ν¬νΈ μ 보networks : 컨ν
μ΄λκ° μ μν λ컀 λ€νΈμν¬ μ μdepends_on : νΉμ μλΉμ€κ° μ€νλ μ΄νμ μμλλλ‘ μ€μ (μ? μμ΄? DB μμ΄λ Έλλ° spring μ€ννλ©΄ μλ¬ μλ°λ° λλκΉ.)externalμ μ€μ νλ©΄ μΈλΆ λ€νΈμν¬λ μ¬μ© κ°λ₯services:
postgres:
image: postgres:17.2
volumes:
- /var/lib/postgresql/data-d : λ°±κ·ΈλΌμ΄λ μ€ν)docker compose up -d
docker compose ps
docker compose down
docker compose up -d μλΉμ€μ΄λ¦
docker compose stop μλΉμ€μ΄λ¦
-f : μ€μκ° λ‘κ·Έ νμΈ)docker compose logs -f
docker compose restart
λ€.. μκ°λ³΄λ€ λ΄μ©μ΄ λ³λ‘ μ΄λ €μΈ κ² μμ£ ? μ€μν κ²μ networks μ€μ κ³Ό volumesλ₯Ό μ΄λ»κ² λ€λ£°μ§ κ°μ΅λλ€. λν docker composeλ μ€μΌμ€νΈλ μ΄μ
μ΄ μλλΌλ μ , λ€μ κΈμ μ€μΌμ€νΈλ μ΄μ
μ λν΄ λ€λ£° κ²μ΄λΌλ κ².
κ·Έκ²μ΄ μ½μμ΄λκΉ.

μ... μ΄λ ΅μ΅λλ€ μ¬μ€ν μΈνλΌμ μΈκ³, κ·Έλλ μ λ³΄κ³ κ°λλ€!!