docker-compose


1. docker-compose?

Docker Compose는 하나의 설정으로 여러 컨테이너를 정의하고 실행할 수 있도록 도와주는 툴이다. 하나의 명령어로 여러 컨테이너를 띄워서 어플리케이션을 실행할 수 있다.

  • 사용 환경

    • 개발

    • 테스트

    • 스테이징

2. Options

OptionDescription

image

사용할 이미지의 태그나 ID를 명시

build

Docker파일이 있는 디렉토리의 경로

dockerfile

기본 Dockerfile명이 아닐 경우 여기에 이름을 명시

command

기본 command를 지정

links

컨테이너를 다른 서비스와 연결. 연결하려는 서비스의 이름이나 별칭을 작성하면 컨테이너의 /etc/hosts 파일에 그 내용이 추기

external_links

links와 비슷하지만 compose외부의 서비스와 연결을 위해 사용

extra_hosts

/etc/hosts에 외부 호스트 정보를 추가

ports

호스트포트:컨테이너포트 식으로 호스트와 컨테이너의 포트를 포딩한다.

expose

호스트에는 노출하지 않고 연결된 서비스끼리만 접근 가능한 포트를 명

volumes

볼륨으로 마운트할 디렉토리를 명

volumes_from

다른 서비스나 컨테이너의 볼륨 전체를 마운트

environment

환경 변수를 명시

env_file

환경 변수를 파일에서 추

extends

다른 compose 설정을 현재 파일에 가져와 사용

labels

컨테이너docker label을 이용해서 메타데이터를 추가

container_name

컨테이너 이름을 지정

log driver

컨테이너에서 사용할 로깅 드라이버를 명시

net

네트워킹 모드를 지정. docker-net 옵션과 동일

pid

PID 모드를 호스트 PID모드로 설정. 호스트와 컨테이너 운영체제가 같은 PID 주소 공간을 공유

dns

컨테이너가 사용할 커스텀 DNS서버를 설정

dns_search

DNS검색 도메인을 지정

cap_add

컨테이너의 시스템에 관한 권한을 추가

cap_drop

컨테이너의 시스템에 관한 권한을 삭제

devices

디바이스 매핑 목록. docker--devices와 동일

3. Example

version: '3'
services:
  example:
    build:
      context: ./docker
      dockerfile: Dockerfile
    image: example:latest
    environment:
      STATIC_DOMAIN: "http://static.nuti.pe.kr"
      VM_XMS: "256m"
      VM_XMX: "1024m"
      VM_XX_NEW_SIZE: "384m"
      VM_XX_NEW_PERM_SIZE: "128m"
      DB_HOST: "db.nuti.pe.kr"
      DB_NAME: "blog"
      DB_USERNAME: "nuti"
      DB_PASSWORD: "db_pw"
    volumes:
      - ./logs:/tomcat/logs
    ports:
      - "80:80"
    network_mode: "bridge"