$ docker-compose
대신 $ docker compose
로 실행한다.$ docker compose
로 빌드한 경우 image 이름 앞에 docker-compose.yml이 속한 폴더의 이름이 자동으로 prefix로 붙는다.$ docker compose build # build 키로 지정된 것들만 빌드한다.
$ docker compose up # build/pull -> create -> start 까지 한번에 해준다.
$ docker compose pull # image 키로 지정된 것들만 docker hub에서 불러온다.
$ docker compose ps # docker compose로 실행된 컨테이너들을 개별적으로 보여준다.
$ docker compose ls # docker compose로 실행된 컨테이너들을 그룹화하여 보여준다.
$ docker compose down # 컨테이너를 중지하고 삭제한다. 이미지는 살아있다.
$ docker compose start
$ docker compose stop
$ docker compose rm
$ docker compose images # docker compose로 실행된 컨테이너에 의해 실행되는 이미지만 보여준다.
$ docker images # 모든 image를 보여준다.
version
services
volumes
networks
version: '3'
services:
redis:
image: redis:latest
ports:
- 외부포트:내부포트
environment:
DB_URL: /~~~~~/~~
volumes:
- ./result: /app # host
- vol1: /app # named
networks:
- net1
- net2
vote:
build: ./vote
...
volumes:
vol1:
networks:
net1:
net2:
depends_on:
- db
- redis
condition
을 사용한다.services:
postgre:
depends_on:
db:
condition: service_healthy
redis:
condition: service_started
init:
condition : service_completed_successfully
service_healthy
: 해당 서비스가 healthcheck의 테스트를 통과했을 때만 실행한다.service_started
: 해당 서비스가 실패하든 성공하든 실행시작하면 무조건 실행한다.service_completed_successfully
: 해당 서비스가 실행이 모두 끝나고 종료되었을 때 실행한다.services:
db:
healthcheck:
test: test.sh # 체크하는 명령문
interval: 15s # 테스트 간의 간격
timeout: 5s # 5초 안에 결과가 0이어야 성공
retries: 3 # 재시도 기회
start_period: 10s # 해당 컨터이너가 실행되고 10초 후에 테스트를 시작한다.
context
를 사용한다.services:
vote:
context: dockerfile의 경로
dockerfile: dockerfile의 이름이 다를 때 기입
args: # 빌드할 때 사용하는 환경 변수
ENVIRONMENT: ...
# anchor 정의
x-new-anchor:
&anchor-name # 이 이름을 가지고 뒤에서 부른다.
# anchor 사용
services:
db:
<<:*anchor-name
세팅하는 부분은 항상 봐도 새로운 것 같다. 다양한 docker-compose.yml 파일을 보고 따라하면서 내 것으로 익히는 과정이 필요하다. 에러도 내보고 새로운 기능도 추가해서 테스트도 해봐야겠다.
우선은 빠르게 진도를 따라잡아야지!