IT Log
Docker Compose 본문
728x90
반응형
Docker Compose 작성
- Dockerfile 작성
- docker-compose.yml 작성
- docker-compose 실행
Dockerfile
- Environment variables
- ADD
- COPY
- ENV
- EXPOSE
- FROM
- LABEL
- STOPSIGNAL
- USER
- VOLUME
- WORKDIR
- 파일 이름은 Default가 Dockerfile이고, 다른 이름으로 파일을 작성할 경우 나중에 경로를 입력할 때 파일명을 작성
Examples
FROM <image>[:<tag>] [AS <name>]
ARG <name>[=<default value>]
ENV <key> <value>
COPY <local path> <container path>
RUN <command>
###
FROM postgres:9.6
ARG ARGUMENT=true
ENV PLUGIN=v1.0.0
COPY ./file /usr/loca/copy/file
RUN apt-get update \
&& git
자세한 설명은 https://docs.docker.com/engine/reference/builder/
docker-compose.yml
- 파일 이름은 docker-compose.yml이나 docker-compose.yaml이 Default이나 docker-compose-test.yml 이렇게 변경해서 작성해도 상관X (추후에 docker-compose를 실행할 때 파일을 지정해주면 됨)
- docker-compose.yml 파일에 작성되는 구성요소가 많고 다양하므로 예시작성만 보여주고 그 외는 사이트를 참고
- 작성 예시보면 들여쓰기가 다르게 작성되어 있는데 들여쓰기 정도가 달라지면 Error가 발생 (Python과 유사)
Examples
version: "3.7"
services:
redis:
image: redis:alpine
ports:
- "6379"
networks:
- frontend
deploy:
replicas: 2
update_config:
parallelism: 2
delay: 10s
restart_policy:
condition: on-failure
db:
image: postgres:9.4
volumes:
- db-data:/var/lib/postgresql/data
networks:
- backend
deploy:
placement:
constraints: [node.role == manager]
vote:
image: dockersamples/examplevotingapp_vote:before
ports:
- "5000:80"
networks:
- frontend
depends_on:
- redis
deploy:
replicas: 2
update_config:
parallelism: 2
restart_policy:
condition: on-failure
result:
image: dockersamples/examplevotingapp_result:before
ports:
- "5001:80"
networks:
- backend
depends_on:
- db
deploy:
replicas: 1
update_config:
parallelism: 2
delay: 10s
restart_policy:
condition: on-failure
worker:
image: dockersamples/examplevotingapp_worker
networks:
- frontend
- backend
deploy:
mode: replicated
replicas: 1
labels: [APP=VOTING]
restart_policy:
condition: on-failure
delay: 10s
max_attempts: 3
window: 120s
placement:
constraints: [node.role == manager]
visualizer:
image: dockersamples/visualizer:stable
ports:
- "8080:8080"
stop_grace_period: 1m30s
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
deploy:
placement:
constraints: [node.role == manager]
networks:
frontend:
backend:
volumes:
db-data:
자세한 설명은 https://docs.docker.com/compose/compose-file/
docker-compose
- docker-compose --help를 치면 다양한 명령어가 존재, 또한 docker compose up --help를 치면 up 명령에 대한 옵션들도 존재
docker-compose [-f <arg>...] [options] [COMMAND] [ARGS...]
Examples
docker-compose -f docker-compose-test.yml up -d
// docker-compose-test.yml파일을 backgroud에서 실행하라는 명령
자세한 설명은 https://docs.docker.com/compose/reference/overview/
docker-compose 명령 → docker-compose.yml 파일 → docker-compose.yml 파일 내부 build 구성이 존재하면 → 해당 service에 build 구성에 대한 Dockerfile 실행
Examples
# 파일 구성은 아래와 같이 폴더를 하나 만들어서 그 안에서 파일을 관리하는게 좋음
Project
docker-compose.yml
Dockerfile
# docker-compose.yml
...
service:
test_db:
image:postgres:9.6
build: .
...
# Dockerfile
FROM postgres:9.6
...
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
# 아래와 같은 폴더 구성일 경우
Project
docker-compose.yml
dockerfolder
Dockerfile
# docker-compose.yml
...
service:
test_db:
image:postgres:9.6
build:
context: ./dockerfolder
dockerfile: Dockerfile
...
# Dockerfile
위의 작성방법과 동일
728x90
반응형
'Open Source > Docker' 카테고리의 다른 글
Docker Compose Install (0) | 2020.07.16 |
---|---|
Docker Install (0) | 2020.07.16 |
docker (0) | 2019.12.11 |
Comments