docker-compose.yml 와 Dockerfile

sun·6일 전
0

docker

목록 보기
2/2
post-thumbnail

docker-compose.yml

여러 개의 Docker 컨테이너를 한꺼번에 정의하고 실행하는 도구.

🖋 사용 이유

  1. 간소화된 제어
    • 단일 YAML 파일에서 여러 컨테이너 애플리케이션을 정의하고 관리 가능.
  2. 효율적인 협업
    • 파일 공유가 간편하여 개발자, 운영팀, 기타 이해관계자 간의 협업을 촉진.
  3. 신속한 애플리케이션 개발
    • 컨테이너 생성에 사용된 구성을 캐시함. (변경되지 않은 서비스를 다시 시작하면 기존 컨테이너 재사용)
  4. 다양한 환경 간 이식성 : 변수를 지원하여 다양한 환경이나 사용자에 맞게 구성을 사용자 지정 가능.

🖋 주요 구성 요소

  • version : Compose 파일 형식 버전 (compose V2는 필요 없음)
  • service : 여러 개의 컨테이너를 정의하는 부분
  • image : Docker Hub에서 다운받을 이미지
  • build : Dockerfile을 직접 빌드해서 이미지 생성
  • ports : 호스트포트:컨테이너포트 포트 매핑
  • restart : 컨테이너가 예기치 않게 꺼졌을 때 설정
  • volumes : 데이터 지속 저장을 위한 디렉토리 매핑
  • environment : 환경변수 설정 (DB 패스워드 등)
  • depends_on : 의존성 설정 (실행 순서 조절)
  • container_name : 컨테이너 이름 지정
  • networks : Docker 컨테이너들 끼리 서로 통신할 수 있도록 네트워크를 묶어주는 설정

🖋 하나의 파일에 모두 작성 VS 각각 파일 작성

  • 하나의 파일에 모두 작성
    • 모든 서비스는 자동으로 동일한 default 네트워크에 연결
    • depends_on, links 등을 사용해 실행 순서 및 의존성도 표현 가능
  • 각각 파일 작성
    • 서비스는 완전히 독립적
    • 서로 다른 네트워크를 사용하여 직접 연결이 안됨.
    • 수동으로 연결해줘야 함
	# 각 파일에 동일한 외부 네트워크 정의
    networks:
  		shared-network:
    	external: true
       
    # 네트워크 생성 명령어
 	docker network create shared-network

Dockerfile

  • Dockerfile : 이미지를 만들기 위한 명령어 모음.
  • Image : "환경 + 코드 + 설정" 이 포장된 파일.
  • Container : 이미지를 실행한 실제 인스턴스.

Dockerfile 과 docker-compose.yml 차이

🖋 Dockerfile

  • 이미지를 어떻게 만들지 정의 (환경 설정 포함)
  • 새로운 이미지를 만들고 싶을 때 사용
  • 단일 이미지 중심 (ex. 나만의 java 서버)
  • docker build, docker run 으로 실행

🖋 docker-compose.yml

  • 이미지들을 어떻게 실행할지 정의 (컨테이너 조합)
  • 여러 컨테이너는 한 번에 실행할 때 사용
  • 여러 서비스 조합 (ex. 웹 + DB + 캐시)
  • docker-compose up 으로 실행
profile
Please, Steadily

0개의 댓글

관련 채용 정보