Docker-compose: Difference between revisions
(Created page with "== Overview == docker-compose 내용 정리. == Basic == Define and run multi-container application with Docker. Docker-compose 는 컨테이너를 여러 개 동작시키는...") |
No edit summary |
||
| Line 30: | Line 30: | ||
(default: the path of the Compose file) | (default: the path of the Compose file) | ||
--compatibility If set, Compose will attempt to convert keys | --compatibility If set, Compose will attempt to convert keys | ||
in v3 files to their non-Swarm equivalent</pre> | in v3 files to their non-Swarm equivalent | ||
</pre> | |||
== docker-compose.yml == | == docker-compose.yml == | ||
Latest revision as of 14:48, 16 December 2019
Overview
docker-compose 내용 정리.
Basic
Define and run multi-container application with Docker. Docker-compose 는 컨테이너를 여러 개 동작시키는 도커 어플리케이션을 정의하고 실행하는 도구이다.
Usage:
docker-compose [-f <arg>...] [options] [COMMAND] [ARGS...]
docker-compose -h|--help
Options:
-f, --file FILE Specify an alternate compose file
(default: docker-compose.yml)
-p, --project-name NAME Specify an alternate project name
(default: directory name)
--verbose Show more output
--log-level LEVEL Set log level (DEBUG, INFO, WARNING, ERROR, CRITICAL)
--no-ansi Do not print ANSI control characters
-v, --version Print version and exit
-H, --host HOST Daemon socket to connect to
--tls Use TLS; implied by --tlsverify
--tlscacert CA_PATH Trust certs signed only by this CA
--tlscert CLIENT_CERT_PATH Path to TLS certificate file
--tlskey TLS_KEY_PATH Path to TLS key file
--tlsverify Use TLS and verify the remote
--skip-hostname-check Don't check the daemon's hostname against the
name specified in the client certificate
--project-directory PATH Specify an alternate working directory
(default: the path of the Compose file)
--compatibility If set, Compose will attempt to convert keys
in v3 files to their non-Swarm equivalent
docker-compose.yml
docker-compose 에서는 컨테이너 실행에 사용되는 옵션과 컨테이너 간 의존성을 모두 docker-compose.yml 파일에 적어두고, docker-compose 명령어를 사용하여 컨테이너를 실행 및 관리한다.
docker-compose.yml 파일은 옵션을 미리 정의한 문서라고 볼 수 있다. 다음과 같은 내용으로 이루어져 있다.
version: '3'
services:
db:
image: postgres
volumes:
- ./docker/data:/var/lib/postgresql/data
environment:
- POSTGRES_DB=sampledb
- POSTGRES_USER=sampleuser
- POSTGRES_PASSWORD=samplesecret
- POSTGRES_INITDB_ARGS=--encoding=UTF-8
django:
build:
context: .
dockerfile: ./compose/django/Dockerfile-dev
environment:
- DJANGO_DEBUG=True
- DJANGO_DB_HOST=db
- DJANGO_DB_PORT=5432
- DJANGO_DB_NAME=sampledb
- DJANGO_DB_USERNAME=sampleuser
- DJANGO_DB_PASSWORD=samplesecret
- DJANGO_SECRET_KEY=dev_secret_key
ports:
- "8000:8000"
command:
- python manage.py runserver 0:8000
volumes:
- ./:/app/
version
docker-compose.yml 파일의 첫 줄에는 파일 규격 버전을 적는다. 파일의 규격에 따라 지원하는 옵션이 달라지는데, "3"이라고 적으면 3으로 시작하는 최신버전을 사용한다는 의미이다. 상세한 내용은 이곳<ref>https://docs.docker.com/compose/compose-file/compose-versioning/</ref>을 참조하자.
services
services:
이 항목 믙에 실행하려는 컨테이너들을 정의한다. docker-compose 에서는 컨테이너 대신 서비스라는 개념을 사용한다.
db
services: db:
위의 예제에서는 postgres 서비스의 이름을 db로 정의하였다.
image
services:
db:
image: postgres
db 서비스에서 사용할 도커 이미지를 정의한다. 여기서는 dockerhub 의 공식 postgres 이미지를 사용한다.
volumes
services:
db:
volumes:
- ./docker/data:/var/lib/postgresql/data
docker run 으로 db 컨테이너를 실행할 때 --volume 옵션을 사용하여 데이터베이스의 데이터를 로컬 컴퓨터에 저장하는 부분과 같다.
environment
services:
db:
environment:
- POSTGRES_DB=sampledb
- POSTGRES_USER=sampleuser
- POSTGRES_PASSWORD=samplesecret
- POSTGRES_INITDB_ARGS=--encoding=UTF-8
docker run 명령어 사용시 -e 옵션으로 지정되는 내용을 나타낸다.
See also
- https://www.44bits.io/ko/post/almost-perfect-development-environment-with-docker-and-docker-compose#%EB%8F%84%EC%BB%A4-%EC%BB%B4%ED%8F%AC%EC%A6%88%EB%A1%9C-%EA%B0%9C%EB%B0%9C-%ED%99%98%EA%B2%BD-%EA%B5%AC%EC%84%B1%ED%95%98%EA%B8%B0
- http://raccoonyy.github.io/docker-usages-for-dev-environment-setup/
References
<references />