도커 컴포즈 파일
- 모든 컴포넌트가 실행 중일 때 어떤 상태여야 하는지를 기술하는 파일
- 컨테이너, 네트워크, 볼륨 등 필요한 모든 도커 객체를 만들도록 도커 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
-
001: 컴포즈 스크립트의 external 필드에 정의된 네트워크는 애플리케이션 실행 전에 생성돼 있어야 한다.
-
http://localhost:8020
로 접속