[Docker] Docker compose.yaml 파일 작성법

박정태·2024년 8월 9일

Docker

목록 보기
3/3
post-thumbnail

Compose file 작성하는법 (YAML형식)

“주항목 → 이름 추가 → 설정” 순서로 작성한다.

  • 주항목 : services, networks, volumes 등등이 존재한다.
  • 주항목 아래에 이름을 추가한다. (YAML 형식은 들여쓰기가 중요하다)
    • 컨테이너 이름, 네트워크 이름, 볼륨 이름
    • yaml형식에 따라 : 를 사용한다.
      바로 뒤에 값이 들어가는 경우 반드시 띄어쓰기(공백) 처리 해야한다.
services:
  todobackend:
  • 설정
    • 기재할 내용이 한가지라면 : 후에 공백 사용하여 작성한다.
    • 내용이 여러 개라면 - 을 앞에 적고 들여쓰기로 맞춰서 작성한다.
    • 하이픈 앞에 적은 행은 다시 공백을 넣어서 써야 한다.
services:
  todobackend:
    depends_on:
      - todomysql
    image: todobackend:0.0.2
    ports:
      - 8080:8080
    restart: always
    # 내용이 여러가지 일때 key: value 형식으로도 작성이 가능하다.
    environment:
      DB_HOST: todomysql
      DB_PORT: 3306
      DB_USER: todoAdmin
      DB_PASSWORD: todoAdmin

Compose file 작성 요령 (YAML 형식)

  • 첫 줄에 도커 컴포즈 버전을 기재
# 업데이트되면서 굳이 version을 넣어주지 않아도 됨.
version: "1"
  • 주 항목 services, networks, volumes 아래에 내용을 기재
services:

networks:

volumes:
  • 항목 간 상하 관계는 공백을 이용한 들여쓰기로 표현
# 들여쓰기로 services와 todobackend, depends_on, image의 상하 관계 표현
# services는 최상위
# todobackend는 services의 하위
# depends_on, image는 동등 관계이고 services, todobackend의 하위 관계
services:
  todobackend:
    depends_on:
      - todomysql
    image: todobackend:0.0.2
  • 여러 항목을 기재하는 경우에는 앞에 - 을 붙여서 사용한다.
services:
  todobackend:
    environment:
      - DB_HOST=todomysql
      - DB_PORT=3306
      - DB_USER=todoAdmin
      - DB_PASSWORD=todoAdmin
  • 항목 이름 뒤에는 : 를 반드시 붙인다.
services:
  todobackend:
    environment:
  • : 또는 - 뒤에는 공백이 반드시 있어야 한다. 단, : 줄바꿈이 있는 경우 상관 없다.
todomysql:
  image: mysql:8.4.2
  volumes:
    - ./mysql:/var/lib/mysql
  • 뒤에 내용은 주석이다.

# 주석이 가능
todomysql:
  image: mysql:8.4.2
  volumes:
    - ./mysql:/var/lib/mysql
  • 문자열은 작은 따옴표 또는 큰따옴표 를 사용한다.

예시

# DB, backend, frontend를 한번에 연결
services:
  todobackend:
    depends_on:
      - todomysql
    image: todobackend:0.0.2
    ports:
      - 8080:8080
    restart: always
    environment:
      DB_HOST: todomysql
      DB_PORT: 3306
      DB_USER: todoAdmin
      DB_PASSWORD: todoAdmin
      
  todofrontend:
	  depends_on:
		  - todobackend
		image: todofrontend:0.0.2
		ports:
			- 3000:3000
	  restart: always

  todomysql:
    image: mysql:8.4.2
    volumes:
      - ./mysql:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: todobackendDB
      MYSQL_DATABASE: todos
      MYSQL_USER: todoAdmin
      MYSQL_PASSWORD: todoAdmin
profile
정보 공유

0개의 댓글