[Docker]Docker-Compose란?

Junseo Jung·2024년 4월 18일
0

Docker

목록 보기
2/2
post-thumbnail

Docker Compose?

: 하나의 호스트에서 여러개의 컨테이너를 사용하는 경우 여러개의 컨테이너를 하나의 컨테이너 묶음으로 관리하게 해주는 도구

docker-compose.yml

: docker-compose를 정의하는 명령어 (dockerfile과 비슷하다 생각해도 됨)

version: "3" # docker-compose 버전

services: # 컨테이너의 집합체 정의
  app: # 서비스 내부 컨테이너 이름
    build: . # 해당 컨테이너의 DockerFile의 위치
    ports:
      - "8000:8000"
    restart: unless-stopped
    command:
      - sh
      - -c
      - |
        cd ./src
        python manage.py migrate
        celery -A kepco worker -l info &
        python manage.py runserver --insecure 0.0.0.0:8000
    volumes:
      - .:/app/src
    environment: # 환경변수 설정
      - REDIS_HOST=redis
    env_file: # .env를 통한 환경변수 설정
      - ./src/.env.prod
		networks:
			- test_net
    depends_on: # 의존성 설정(컨테이너에 대한 의존성)
      - redis

  redis:
    image: redis:7.2.4
    container_name: redis_boot
    command: redis-server --port 6379
    hostname: redis
    networks:
	    - test_net
    ports:
      - 6379:6379

networks: # 네트워크 설정
	test_net:
		driver: bridge

docker-compose는 기본적으로 하나의 디폴트 네트워크에 모든 컨테이너를 연결한다. 따라서 하나의 docker-compose에 존재하는 컨테이너들은 별도로 네트워크를 연결하지 않아도 서비스 내부의 컨테이너 이름을 통해 통신 가능하다.
ex) redis://redis:6379

사용 방법

  1. 실행

    docker-compose.yml이 존재하는 위치에서 실행해야 한다.

    docker-compose up -d
    • docker-compose up
      1. 서비스를 띄울 네트워크 생성
      2. 필요한 볼륨 생성 (기존 볼륨과 연결)
      3. 필요한 이미지 pull
      4. 필요한 이미지 build
      5. 서비스 실행
      • -d: 백그라운드 실행
      • —build: 강제로 빌드 진행
      • —force-recreate: yml의 변경이 없어도 컨테이너 재생성
  2. 가동된 서비스 조회

    docker-compose ps
  3. 로그 확인

    docker-compose logs
  4. 중지

    docker-compose down

참고.

Docker Compose 사용법

0개의 댓글

관련 채용 정보