Search

docker-compose

대분류
DevOps/Tool
소분류
Docker
설명
docker-compose 사용법
유형
사용법
최종 편집 일시
2024/10/27 15:42
생성 일시
2024/01/23 04:58
14 more properties

docker-compose란?

복수 개의 컨테이너를 실행시키는 도커 애플리케이션이 정의를 하기 위한 툴
yaml 파일을 이용해 서비스 구성 가능

구조

# docker-compose.yml version: '3' # docker-compose 버전 services: # 서비스 관리 frontend: # 서비스 명 build: # dockerfile 이용 build 및 생성이미지 base로 사용 context: ./frontend # Dockerfile 빌드 경로 # 또는 dockerfile: dockerfile-server ## dockerfile이 아닐시 파일명 입력필요 ports: - "172.16.250.245:8080:80" # 포트 번호 # 또는 - target: 8080 ## 컨테이너 내부 포트 published: 8080 ## 호스트 OS에서 공개할 포트 protocol: ## 포트 프로토콜 container_name: pms-frontend expose: # dockerfile에 expose가 명시되있을 경우 작성X - 8080 #도커 내부 포트 backend: build: context: ./pms_backend ports: - "172.16.250.245:3000:3000" container_name: pms-backend nginx: image: nginx:stable-alpine # 사용할 이미지 명 container_name: pms-proxy # 컨테이너 이름 ports: - "80:80" depends_on: - frontend - backend volumes: - ./mysql/mysql_data:/var/lib/mysql - ./mysql/sqls/:/docker-entrypoint-initdb.d/
Bash
복사

version : 버전

services : 컨테이너 관리

image : 이미지 지정

이미지가 로컬 환경에 없다면 해당 이미지를 다운받아서 base 이미지로 사용
<이미지 이름>:<버전>

build : Dockerfile 빌드

context <Dockerfile 빌드 경로> : 해당 경로에 있는 Dockerfile이 실행
+ dockerfile <파일명> : dockerfile의 파일명이 dockerfile이 아닐 경우 파일명 입력

ports : 외부 통신

호스트 OS와 컨테이너의 포트를 바인딩 시키는 포트포워딩 역할
컨테이너의 포트번호만 지정한 경우, 호스트 머신의 포트는 랜덤한 값으로 설정
container:host (protocol)
target : 컨테이너 내부 포트
published : 호스트OS의 포트
protocol : 포트 프로토콜

expose : 내부 통신

컨테이너-컨테이너간의 통신만이 필요한 경우에 사용 (호스트 접근X)
일반적으로 로그 서버와 같이 호스트 머신에서 직접 액세스하지 않고, 웹 애플리케이션 서버 기능을 갖고 있는 컨테이너를 경유해서만 액세스하고 싶은 경우 등에 사용
dockerfile에 expose가 명시되어 있다면 docker-compose에는 작성X

depends_on : 종속

services간 종속 설정

container_name : 컨테이너 이름

volumes : 볼륨

dockerfile에서 사용되는 volume과 같이 컨테이너에 볼륨을 마운트할 때 사용 <호스트>:<컨테이너>
:ro : 읽기 전용