본문 바로가기
도커&쿠버네티스

[도커/쿠버네티스] 4장 도커 컴포즈

by bzerome240 2022. 1. 25.

Docker Compose

: 멀티 컨테이너 도커 어플리케이션을 정의하고 실행하는 도구

  • 여러개의 도커 컨테이너로 부터 이루어진 서비스를 구축 및 네트워크 연결, 실행 순서를 자동으로 관리
  • docker-compose.yml 파일을 작성하여 1회 실행하는 것으로 설정된 모든 컨테이너를 실행

 

4.1 도커 컴포즈를 사용하는 이유

실제 운영시 여러개의 서버에서 모니터링, 로드밸런싱이 필요한 경우 사용하면 좋다.

 

 

4.2 도커 컴포즈 설치

4.3 도커 컴포즈 사용

4.3.1 도커 컴포즈 기본 사용법

 

 

4.3.1.1 docker-compose.yml 작성과 활용

 

  • version : 도커 컴포즈 버전
  • services : 실행하려는 컨테이너들을 정의

 

서비스명 하위 속성

  • contailner_name : 컨테이너 이름 
  • build : Dockerfile이 있는 위치
  • depends_on : 특정 컨테이너에 대한 의존관계
    environment : 환경변수를 정의, 이러한 환경변수는 런타임에 실행 중인 서비스 컨테이너에 자동으로 넣을 수 있습니다. 예를 들면 개발환경과 프로덕션 환경 간에 전환하고 앱의 처리를 확인할 때 환경변수를 활용할 수 있습니다.
    image : 컨테이너 생성 시 사용할 도커 이미지 
  • networks : 주어진 서비스를 정의된 네트워크와 연결하게 해줍니다. 예를 들어 노드와 몽고 디비를 연결하는 것 같이 런타임에 도커 컨테이너에서 연결처리가 가능합니다.
    ports : 접근 포트 설정 (컨테이너 외부:컨테이너 내부)
  • volumes: 로컬 개발 머신의 소스코드를 볼륨으로 정의하여 볼륨을 컨테이너에 연결 (호스트 디렉토리:컨테이너 디렉토리)
  • restart : 컨테이너 실행 실패 시 재시작 여부

 

 

환경변수

  • 환경변수 정보들을 분리하여 별도의 파일로 구성할 때 간편한 방법은 compose 파일이 위치한 경로에 .env 파일을 구성
  • 작성한 .env 파일은 별다른 설정 없이 Docker compose에 바로 반영
# .env 파일 자동 반영
$ docker-compose config

# 이미지 없을 때 이미지 빌드 후 컨테이너 실행
$ docker-compose up

# 이미지가 있은 없든 재빌드하여 컨테이너 실행
$ docker-compose up --build

 

  • 비밀정보는 코드에 노출되지 않도록 .gitignore에 .env 파일 추가
  • 더 높은 보안을 제공하는 오픈소스 고려 ex) HashiCorp Vault
# .env 파일 (.gitignore에 추가하기)
SPRING_DATA_USERNAME=root
SPRING_DATA_PASSWORD=1234

 

 

 

4.3.1.2 도커 컴포즈의 프로젝트, 서비스, 컨테이너

4.3.2 도커 컴포즈 활용

4.3.2.1 YAML 파일 작성

4.3.2.2 도커 컴포즈 네트워크

4.3.2.3 도커 스웜 모드와 함께 사용하기

4.4 도커 학습을 마치며: 도커와 컨테이너 생태계

 

 

728x90
반응형

댓글