7.1.도커 컴포즈 파일의 구조

도커 컴포즈 파일

  • 모든 컴포넌트가 실행 중일 때 어떤 상태여야 하는지를 기술하는 파일
  • 컨테이너, 네트워크, 볼륨 등 필요한 모든 도커 객체를 만들도록 도커 API에 명령을 내린다
  • 애플리케이션의 모든 설정 사항값과 최상위 레벨 도커 요소가 정의되어 간접적으로 문서화하는 효과도 얻을 수 있다.
version: '3.7'

services:

  todo-web:
    image: diamol/ch06-todo-list
    ports:
      - "8020:80"
    networks:
      - app-net

networks:
  app-net:
    external:
      name: nat
  • version:
  • 도커 컴포즈 파일 형식의 버전
  • 문법과 표현 가능한 요소에 많은 변화가 있었으므로 먼저 정의가 따르는 형식 버전을 지정할 필요가 있다.
  • services:
  • 애플리케이션을 구성하는 모든 컴포넌트를 열거하는 부분
  • 서비스 이름은 컨테이너의 이름이자 도커 네트워크상에서 해당 컨테이너를 식별하기 위한 DNS 네임으로도 쓰인다.
  • networks:
  • 서비스 컨테이너가 연결될 모든 도커 네트워크를 열거하는 부분
  • external 필드의 의미는 nat 네트워크가 이미 존재하므로 새로 생성하지 말라는 뜻

도커 컴포즈 실행

001)  docker network create nat
002) 0ccd6236decb36768f01a0785b0d3cc57e5fa7bcf1de081ed313ad7e45f7f687
003)  
004)  docker-compose up -d
005) WARN[0000] network app-net: network.external.name is deprecated. Please set network.name with external: true 
006) [+] Running 8/8
007)   todo-web 7 layers [⣿⣿⣿⣿⣿⣿⣿]      0B/0B      Pulled                                                                                                                                    4.9s 
008)     f338bc35613f Already exists                                                                                                                                                         0.0s 
009)     5636d912c69e Already exists                                                                                                                                                         0.0s 
010)     362df8b85fca Already exists                                                                                                                                                         0.0s 
011)     24c3992ceef4 Already exists                                                                                                                                                         0.0s 
012)     546a81dfea0f Already exists                                                                                                                                                         0.0s 
013)     3e6d6e6fdcce Pull complete                                                                                                                                                          0.8s 
014)     697b28c7a381 Pull complete                                                                                                                                                          1.2s 
015) [+] Running 1/1
016)   Container todo-list-todo-web-1  Started
  1. 001: 컴포즈 스크립트의 external 필드에 정의된 네트워크는 애플리케이션 실행 전에 생성돼 있어야 한다.

  2. http://localhost:8020로 접속

links

social