Docker Compose & Multi Container

dia·2025년 3월 4일

Docker Compose

멀티 컨테이너 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
profile
CS 메모장

0개의 댓글