Note

docker-compose 본문

Dev/Etc

docker-compose

레모네모 2019. 11. 24. 16:15

docker-compose?

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

  • 사용 환경
    • 개발
    • 테스트
    • 스테이징

== Options

  • 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와 동일

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"

'Dev > Etc' 카테고리의 다른 글

Dockerfile  (0) 2019.11.24
Maven  (0) 2019.11.24
Clean Code  (0) 2019.11.24
Nginx Loadbalance 설정  (0) 2019.11.24
CentOS 메일서버 설정 및 자바에서 메일 발송하기  (0) 2019.11.24
Comments