기준이 되는 파일 : extend-compose.yml
docker-compose.yml에서 extend-compose 파일을 끌어와서 사용
rapa@rapa:~/0822/test2$ touch docker-compose.yml extend-compose.yml
rapa@rapa:~/0822/test2$ cat docker-compose.yml
version: '3.7'
services:
web:
extends:
file: extend-compose.yml
service: testweb
links:
- db
db:
image: mysql:5.7
environment:
- MYSQL_DATABASE=testdb
extend-compose.yml에서의 service안에 testweb에 대한 내용을 가져다 쓰겠다는 뜻
링크 연결 등은 상속받을 수 없음
예를 들어, 팀원 모두가 똑같은 web을 만들고싶으면 extend-compose에 해당 web을 작성하고 팀원들이 그것을 상속해서 쓰는 방향으로 사용하면 된다.
해당 부분에서 web을 상속했고, links나 db같은 건 상속해서 쓰지 않고 팀원마다 다르게 할 수 있다.
rapa@rapa:~/0822/test2$ cat extend-compose.yml
version: '3.7'
services:
testweb:
image: httpd
ports:
- "80"
rapa@rapa:~/0822/test2$ dc -f docker-compose.yml -f extend-compose.yml up -d
Creating network "test2_default" with the default driver
Creating test2_testweb_1 ... done
Creating test2_web_1 ... done
rapa@rapa:~/0822/test2$ dc ps
Name Command State Ports
-------------------------------------------------------------------------------
test2_web_1 httpd-foreground Up 0.0.0.0:49161->80/tcp,:::49161->80/tcp
rapa@rapa:~/0822/test2$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
08c9ce6871be httpd "httpd-foreground" About a minute ago Up About a minute 0.0.0.0:49161->80/tcp, :::49161->80/tcp test2_web_1
b9cfe07e177f httpd "httpd-foreground" About a minute ago Up About a minute 0.0.0.0:49162->80/tcp, :::49162->80/tcp test2_testweb_1
두가지 파일이 있다.
만든 이미지를 사용하려면 build:를 하고 현재위치 . 을 작성한다.
version: ‘3.7’
services:
web:
build: .
image: myweb:1.0