Docker-compose

wwiki
이동: 둘러보기, 검색

Compose는 다중 컨테이너 Docker 애플리케이션을 정의하고 실행하기 위한 도구입니다.

네트워킹[편집 | 원본 편집]

myapp이라는 디렉토리에 다음과 같은 docker-compse.yml이 있다면

version: "3"
services:
  web:
    build: .
    ports:
      - "8000:8000"
  db:
    image: postgres
    ports:
      - "8001:5432"

docker-compose up 을 실행하면

  1. 'myapp_default'라는 네트워크가 생성된다.
  2. 'web'의 설정을 사용한 컨테이너가 생성되고, 'web'이란 이름으로 'myapp_default'에 연결된다.
  3. 'db'의 설정을 사용한 컨테이너가 생성되고, 'db'라는 이름으로 'myapp_default'에 연결된다.

각 컨테이너는 'web', 'db'라는 호스트 이름으로 찾을 수있고, 컨테이너의 아이피 주소를 얻을 수 있다. 가령 'web'의 어플리케이션 코드에서 URL'postgres://db:5432'로 접속해서 데이터베이스를 사용할 수 있다.

'HOST_PORT"와 "CONTAINER_PORT'와의 차이점에 유의하는게 중요하다. 위의 예에서 'db'의 'HOST_PORT'는 8001이고 컨테이너의 포트는 5432이다. 'HOST_PORT'가 정의되면 , 서비스는 외부에서 접속이 가능해진다.

'web'컨테이너에서, 'postgres://db:5432'로 접속할 수 있고, 호스트 머신에서 연결문자열은 'postgres://{DOCKER_IP}:8001'이다.

compose file[편집 | 원본 편집]

https://docs.docker.com/compose/compose-file/

Services[편집 | 원본 편집]

links[편집 | 원본 편집]

Link to containers in another service. Either specify both the service name and a link alias ("SERVICE:ALIAS"), or just the service name.

web:
  links:
    - "db"
    - "db:database"
    - "redis"

ports[편집 | 원본 편집]

호스트(컴퓨터)에 노출할 포트

ports:
  - "3000"
  - "3000-3005"
  - "8000:8000"
  - "9090-9091:8080-8081"
  - "49100:22"
  - "127.0.0.1:8001:8001"
  - "127.0.0.1:5000-5010:5000-5010"
  - "6060:6060/udp"
  - "12400-12500:1240"

expose[편집 | 원본 편집]

Expose ports without publishing them to the host machine - they’ll only be accessible to linked services. Only the internal port can be specified.

expose:
  - "3000"
  - "8000"

environment[편집 | 원본 편집]

environment:
  RACK_ENV: development
  SHOW: 'true'
  SESSION_SECRET:
environment:
  - RACK_ENV=development
  - SHOW=true
  - SESSION_SECRET
타임존[편집 | 원본 편집]
    environment:
      - TZ=Asia/Seoul

logging[편집 | 원본 편집]

logging:
      options:
        max-size: "1024m"  
        max-file: "5"


Volumes[편집 | 원본 편집]

다음과 같이 구성하면 주기적으로 백업할 수 있도록 할 수 있다.

services:
  backend:
    image: awesome/database
    volumes:
      - db-data:/etc/data

  backup:
    image: backup-service
    volumes:
      - db-data:/var/lib/backup/data

volumes:
  db-data:

external[편집 | 원본 편집]

true로 설정하면 플랫폼 내에 이미 존재하는 볼륨이고 수명은 application의 외부에서 관리된다. compose는 볼륨이 생성하려고 시도하지 않으며, 만약 존재하지 않으면 에러를 반환할 것이다.

services:
  backend:
    image: awesome/database
    volumes:
      - db-data:/etc/data

volumes:
  db-data:
    external: true


Command[편집 | 원본 편집]

https://docs.docker.com/compose/reference/

up[편집 | 원본 편집]

Create and start containers

down[편집 | 원본 편집]

Stop and remove containers, networks, images, and volumes

start[편집 | 원본 편집]

Start services

stop[편집 | 원본 편집]

Stop services

exec[편집 | 원본 편집]

Execute a command in a running container

run[편집 | 원본 편집]

Run a one-off (one-time) command

$ docker-compose run web bash

--rm Remove container after run. Ignored in detached mode.

외부링크[편집 | 원본 편집]

https://docs.docker.com/compose/