#docker run --name web-server -p 80:80 nginx
services: # 하나의 컨테이너
my-web-server: # 서비스 이름
container_name: web-server # 컨테이너 이름
image: nginx # 이미지 기반
ports:
- 80:80
compose 실행
docker compose up (-d)
compose 종료
docker compose down
실행되고 있는 compose 확인
docker compose ps
compose 로그 확인
docker compose logs
이미지를 업데이트
docker compose pull
services:
my-cache-server:
image: redis
ports:
- 6379:6379
services:
my-db:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: pwd1234
volumes:
- ./mysql_data:/var/lib/mysql
ports:
- 3306:3306
services:
my-server:
build: . #dockerfile의 위치
ports:
- 8080:8080
build: 이미지에서 build를 새로 해주는 기능
docker compose up -d --build
services:
my-db:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: pwd1234
volumes:
- ./mysql_data:/var/lib/mysql
ports:
- 3306:3306
my-cache-server:
image: redis
ports:
- 6379:6379
services:
my-server:
build: .
ports:
- 8080:8080
depends_on:
my-db:
condition: service_healthy
my-db:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: pwd1234
MYSQL_DATABASE: mydb
volumes:
- ./mysql_data:/var/lib/mysql
ports:
- 3306:3306
healthcheck:
test: ["CMD", "mysqladmin", "ping"]
interval: 5s
retries: 20
-> mysql 연결이 안되는 문제 발생

-> 해결 방법
application.yml

services:
my-server:
build: .
ports:
- 8080:8080
depends_on:
my-db:
condition: service_healthy
my-cache-server:
condition: service_healthy
my-db:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: pwd1234
MYSQL_DATABASE: mydb
volumes:
- ./mysql_data:/var/lib/mysql
ports:
- 3306:3306
healthcheck:
test: ["CMD", "mysqladmin", "ping"]
interval: 5s
retries: 20
my-cache-server:
image: redis
ports:
- 6379:6379
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 5s
retries: 20
