[Docker] Docker Compose

강버섯·2022년 1월 11일
0

👉 Docker Compose?

docker compose는 여러개의 도커 이미지를 실행하고 관리할 때 사용한다.
즉, 연결된 다수의 컨테이너를 통합적으로 관리하도록 할 수 있다.
"docker-compose.ymal" 파일에 설정을 작성한다.

👉 docker-compose.yaml

컨테이너의 실행 옵션을 미리 정의해둔 문서이다.
docker compose는 docker-compose.yaml에 정의된 대로 실행을 한다.

#버전 정의
#버전에 따라서 지원하는 형식이 다름
version: '3.0'

# service 정의
# docker-compose로 생성 할 container의 옵션을 정의
# service안의 container들은 하나의 project로서 docker-compose로 관리
services:
    #생성 할 container 이름을 지정
	#정의된 각 container들을 service하는 것이라고 생각하면 됨
    container-이름:
        #container 생성시 사용 할 이미지 지정
        image: node-server:v1
        #build 옵션
        # docker-compose build 옵션에서 사용
        # dockerfile에 명시된 FROM의 image를 사용하여 명시된 image 이름과 tag로 새로운 image를 생성
        build:
            #dockerfile의 위치를 지정
            context: .
            dockerfile: ./docker/Dockerfile
#           image: dockerfile로 이미지를 바로 만들지 않고 만들어진 이미지를 사용할 수도 있음
        #container port mapping 정보
		#"local port:docker port"
        ports:
            - "80:80"
        #EXPOSE
        # 도커 컨테이너가 실행되었을 때 요청을 기다리고 있는(Listen) 포트를 지정, 여러개의 포트 지정 가능
        expose:
            - "80"
        #외부 저장소 설정
		#docker가 종료되어도 저장소는 남아 있기 때문에 재시작해도 정보를 유지할 수 있음
	volumes:
		- "./:/apps"
				#환경 변수 리스트를 정의
        environment:
            UPDATE_URL: "https://www.doitnow-man.com"

보통의 yaml 파일은 환경 변수 읽어오기가 안되지만 docker-compose.yaml은 환경 변수를 읽어오는 것이 가능하기 때문에 $환경변수이름으로 값을 대신 작성할 수 있다.

👉 실행하기

  • docker compose 실행👇
$> docker-compose up
  • docker compose 종료👇
$> docker-compose down

docker compose를 종료할 때에 volume이 같이 삭제되지 않으나, 원한다면 docker compose 종료 시에 volume을 같이 삭제하도록 하는 옵션도 존재한다.

profile
무럭무럭 버섯농장

0개의 댓글