멀티 컨테이너 Docker 애플리케이션을 정의하고 실행할 수 있게 해주는 도구
여러 개의 Docker 컨테이너를 하나의 설정 파일에서 정의 및 간편하게 실행
docker-compose.yml
services:
k6:
container_name: webty-k6
image: grafana/k6:latest
volumes:
- .:/scripts
working_dir: /scripts
environment:
- API_BASE_URL=http://webty-k6-backend:8080 # 백엔드 테스트 URL
- DB_HOST=mysql-k6
- DB_PORT=3306
- DB_USER=k6_user
- DB_PASSWORD=k6_password
- DB_NAME=webty_k6_db
- REDIS_HOST=webty-k6-redis # Redis 연결 정보
- REDIS_PORT=6379 # Redis 포트
command: run /scripts/load-test.js
depends_on:
- webty-k6-backend # 백엔드가 실행된 후 K6 실행
- webty-k6-redis # Redis가 실행된 후 K6 실행
networks:
- k6-webty-net
mysql-k6:
container_name: webty-k6-mysql-container
image: mysql:latest
restart: always
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=webty_k6_db
- MYSQL_USER=k6_user
- MYSQL_PASSWORD=k6_password
ports:
- "3307:3306"
networks:
- k6-webty-net
webty-k6-backend:
container_name: webty-k6-backend
build:
context: ../../.. # 프로젝트 루트 디렉토리를 빌드 컨텍스트로 설정
dockerfile: Dockerfile # Dockerfile을 루트 디렉토리에서 참조
image: webty-backend # 빌드된 이미지를 사용
restart: always
environment:
- SPRING_PROFILES_ACTIVE=k6 # 프로파일을 k6로 활성화하여 application-k6.yml 사용
- SPRING_DATASOURCE_URL=jdbc:mysql://mysql-k6:3306/webty_k6_db?serverTimezone=Asia/Seoul&characterEncoding=UTF-8
- SPRING_DATASOURCE_USERNAME=k6_user
- SPRING_DATASOURCE_PASSWORD=k6_password
- REDIS_HOST=webty-k6-redis # Redis 연결 정보 (백엔드에서 Redis 사용할 경우)
- REDIS_PORT=6379 # Redis 포트
ports:
- "8080:8080"
depends_on:
- mysql-k6 # MySQL이 실행된 후 백엔드 실행
- webty-k6-redis # Redis가 실행된 후 백엔드 실행
networks:
- k6-webty-net
webty-k6-redis:
container_name: webty-k6-redis
image: redis:latest
restart: always
ports:
- "6379:6379" # Redis 포트 매핑
networks:
- k6-webty-net
networks:
k6-webty-net:
driver: bridge
// 멀티 컨테이너 생성
docker-compose -f 경로/docker-compose.yml create
// 멀티 컨테이너 실행
docker-compose -f 경로/docker-compose.yml start
// 멀티 컨테이너 생성 및 실행
docker-compose -f 경로/docker-compose.yml up
// 이미지 빌드 후 멀티 컨테이너 생성 및 실행
docker-compose -f 경로/docker-compose.yml up --build