개발 일기

docker-compose - (1) ? 본문

컨테이너/Docker

docker-compose - (1) ?

이건욱

도커 컴포즈는 yaml 포맷으로 기술된 설정 파일로써 ,하나의 서버에서 여러 컨테이너의 관리를 할수가 있게 도와드립니다.

예를 들어 하나이상의 컨테이너에서 설정 파일 혹은 환경 변수 공유 및 다른 컨테이너와의 통신 등등일 때 필요합니다.

 

docker-compose가 실행이 가능한 환경인지를 알기 위해서는 다음과 같이 확인해 볼수가 있습니다.

$ docker-compose version

 

이제 간단하게 다음과 같이 작성을 합니다.

version : "3"
services:
  [컨테이너 이름]:                      ex) gunwook
    image: [이미지 명]:[태그 명]         ex) docker/gunwook:latest
    ports:
      - 9000:8000

이제 하나씩 설명을 해드리면 첫번째 version은 문법 버전을 표시해주는 것 입니다.

services 요소 아래에 저희가 생성할 컨테이너의 대한 정보를 넣습니다.

gunwook 이라고 제가 지정한 것은 컨테이너 이름입니다.

image는 도커의 이미지를 작성하시면 됩니다.

ports을 통해서 포트 포워딩을 설정을 진행 할수가 있습니다.

 

이제 실행을 시키기 위해서는 다음과 같이 명령어를 할수가 있습니다.

 

docker-compose up

여기에서 -d는 백그라운드 실행이기 때문에 크게 신경을 안쓰셔도 됩니다.

$ docker-compose up -d

 

그런 다음 이제 컨테이너가 생성이 되었는지 확인해볼수가 있습니다.

$ docker container ls

 

다음으로 컨테이너를 중지를 해보도록 하겠습니다.

docker-compose down

이 명령을 사용하면 docker-compose yml 파일에 작성된 모든 컨테이너가 정지 혹은 삭제가 됩니다.

 

기존에 image 생성을 하고 실행시키는 작업이 필요했지만 이제는 컴포즈를 사용을 하면 이미지를 함께 빌드해서 새로 생성한 이미지를 실행을 시킬수가 있습니다.

 

docker-compose.yml을 다음과 같이 수정을 합니다.

version : "3"
services:
  gunwook:
    build: .
    ports:
      - 9000:8000

그리고 다음과 같이 실행을 시키면 됩니다.

 

$ docker-compose up -d --build

컴포즈를 통해서 빌드를 시킨적이 있다면 빌드를 생량하고 컨테이너가 실행을 합니다. 따라서 위에서 --build을 통해서 강제로 다시 빌드를 진행을 하게 할수가 있습니다.

 

build 

매번 새로운 이미지를 생성을 하고 그 이미지 사용합니다.

version: "3.8"
services:
  webapp:
    build: ./dir

---------------------- or --------------------------
    
version: "3.8"
services:
  webapp:
    build:
      context: ./dir
      dockerfile: Dockerfile-alternate
      args:
        buildno: 1

여기에서 build에서 주소를 명시적으로 적어줄수도 있고 아니면 context 에 주소를 적어줄수도 있습니다.

 

dockerfile은 Dockerfile에 이름을 변경할수가 있습니다.

ARGS 같은 경우에는 Dockerfile에서 build하는 동안 환경 변수로 접근 할수가 있습니다.

ARG buildno
ARG gitcommithash

RUN echo "Build number: $buildno"
RUN echo "Based on commit: $gitcommithash"
build:
  context: .
  args:
    buildno: 1
    gitcommithash: cdc3b19
build:
  context: .
  args:
    - buildno=1
    - gitcommithash=cdc3b19

 

'컨테이너 > Docker' 카테고리의 다른 글

docker-compose - (3)  (0) 2020.05.12
docker-compose - (2)  (0) 2020.05.05
도커 컨테이너의 운영 및 관리 ?  (0) 2020.05.05
Docker Container  (0) 2020.04.21
docker image (2)  (0) 2020.04.19
Comments