랄라

Docker compose 본문

카테고리 없음

Docker compose

devdaeun 2025. 3. 11. 08:05

Docker를 정의하고 실행하기위한 도구

docker-compose.yml 파일로 애플리케이션의 관련 설정(서비스,네트워크)들을 정의


docker-compose.yml 예시

version: '3'  # Docker Compose 파일의 버전 지정

services:  # 애플리케이션의 각 서비스 정의
    web:  # 웹 서비스 (nginx 사용)
    image: nginx  # 사용할 Docker 이미지 지정
    ports:  # 컨테이너와 호스트 간의 포트 매핑
      - "8080:80"  # 호스트의 8080 포트를 컨테이너의 80 포트에 연결

    app:  # 애플리케이션 서비스 (사용자 정의 이미지 빌드)
    build: .  # 현재 디렉토리에서 Dockerfile을 사용하여 이미지를 빌드
    ports:  # 컨테이너와 호스트 간의 포트 매핑
      - "8081:8080"  # 호스트의 8081 포트를 컨테이너의 8080 포트에 연결
    depends_on:  # 이 서비스는 db 서비스에 의존함
      - db  # db 서비스가 먼저 실행되기를 기다림

    db:  # 데이터베이스 서비스 (PostgreSQL 사용)
    image: postgres  # PostgreSQL 이미지를 사용
    environment:  # 데이터베이스 환경 변수 설정
      POSTGRES_PASSWORD: example  # PostgreSQL 데이터베이스의 비밀번호 설정
      
  # redis를 사용하는경우 해당 내용으로 작성됨
    redis-stack:  # Redis Stack 서비스 정의
        image: redis/redis-stack  # 사용할 Redis Stack 이미지 이름 지정
        container_name: redis-test-compose  # 컨테이너 이름 지정 (docker ps로 확인할 때 사용)
        restart: always  # 컨테이너가 종료되거나 실패하면 자동으로 다시 시작되도록 설정
        environment:  # 환경 변수 설정
            REDIS_ARGS: "--requirepass password1234"  # Redis에 접속할 때 비밀번호 요구: "password1234" 설정
        ports:  # 컨테이너와 호스트 간의 포트 매핑
        - 6379:6379  # 호스트의 6379 포트를 컨테이너의 6379 포트에 연결 (Redis 기본 포트)
        - 8001:8001  # 호스트의 8001 포트를 컨테이너의 8001 포트에 연결 (Redis Stack의 Web UI 포트)

Docker compose 명령어

  • 서비스 빌드 및 시작
docker compose up # 실행중 터미널 사용불가
docker compose up -d #백그라운드에서 실행 / 터미널 사용가능
  • 서비스 빌드
docker compose bulid #빌드만 진행
  • 서비스 중지
docker compose down
  • 실행중인 서비스 조회
docker compose ps
  • 실행중인 서비스 로그 조회
docker compose logs