[클라우드/Docker 기본(12) - Docker-compose(4) : extends 사용, 이미지 build]

SooYeon Yeon·2022년 8월 30일
0

클라우드 Docker

목록 보기
13/24

extends 옵션 사용하기

  • yml 파일을 추가적으로 만들거나 하나의 yml 내에서 추가 컨테이너 내에 기본 내용을 작성하고, 이를 다른 파일이나 서비스에서 상속하여 사용하는 방법
  • 주로 두개의 파일을 만들어 두고 이를 상속받는 방법을 사용한다.

기준이 되는 파일 : extend-compose.yml

docker-compose.yml에서 extend-compose 파일을 끌어와서 사용

  • yml 파일 생성
rapa@rapa:~/0822/test2$ touch docker-compose.yml extend-compose.yml
  • docker-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같은 건 상속해서 쓰지 않고 팀원마다 다르게 할 수 있다.

  • extend-compose.yml 파일 작성
rapa@rapa:~/0822/test2$ cat extend-compose.yml 
version: '3.7'
services: 
  testweb: 
    image: httpd 
    ports: 
      - "80"
  • extend파일을 끌어와 두 파일 함께 배포
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
  • ps에서 확인해보면 web이 배포되어 있음. compose상에서는 test2_web_1만이 배포
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

이미지 지정하기

  • docker-compose.yml
  • Dockerfile

두가지 파일이 있다.

만든 이미지를 사용하려면 build:를 하고 현재위치 . 을 작성한다.

version: ‘3.7’

services:

web:

build: .

image: myweb:1.0

0개의 댓글