이전
docker 컴포즈
도커 컴포즈 설치 확인
docker-compose version
docker-compose.yml
version: '2'
services:
db:
image: mysql:5.7
volumes:
- ./mysql:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: wordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
image: wordpress:latest
volumes:
- ./wp:/var/www/html
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_PASSWORD: wordpress
도커 컴포즈 문법
version
version: '3'
docker-compose.yml 파일의 명세 버전, 버전에 따라 지원하는 도커 엔진 버전도 다름
services
services:
postgres:
...
django:
...
실행할 컨테이너 정의 docker run –name django과 같다고 생각할 수 있음
image
services:
django:
image: django-sample
컨테이너에 사용할 이미지 이름과 태그 태그를 생략하면 latest 이미지가 없으면 자동으로 pull
ports
services:
django:
...
ports:
- "8000:8000"
컨테이너와 연결할 포트(들) {호스트 포트}:{컨테이너 포트}
environment
services:
mysql:
...
environment:
- MYSQL_ROOT_PASSWORD=somewordpress: '3'
- 컨테이너에서 사용할 환경변수(들)
- {환경변수 이름}:{값}
volumes
services:
django:
...
volumes:
- ./app:/app
- 마운트하려는 디렉터리(들)
- {호스트 디렉터리}:{컨테이너 디렉터리}
restart
services:
django:
restart: always
재시작 정책
- restart: “no”
- restart: always
- restart: on-failure
- restart: unless-stopped
build
django:
build:
context: .
dockerfile: ./compose/django/Dockerfile-dev
이미지를 자체 빌드 후 사용 image 속성 대신 사용함 여기에 사용할 별도의 도커 파일이 필요함
도커 컴포즈 명령어
up
docker-compose.yml에 정의된 컨테이너를 실행
- docker-compose up
- docker-compose up -d
- docker run의 -d 옵션과 동일
- docker-compose up –force-recreate
- 컨테이너를 새로 만들기
- docker-compose up –build
- 도커 이미지를 다시 빌드(build로 선언했을 때만)
start
멈춘 컨테이너를 재개
- docker-compose start
- docker-compose start wordpress
- wordpress 컨테이너만 재개
restart
컨테이너를 재시작
- docker-compose restart
- docker-compose restart wordpress
- wordpress 컨테이너만 재시작
stop
컨테이너 멈춤
- docker-compose stop
- docker-compose stop wordpress
- wordpress 컨테이너만 멈춤
down
컨테이너를 종료하고 삭제
- docker-compose down
logs
컨테이너의 로그
- docker-compose logs
- docker-compose logs -f
- 로그 follow
ps
컨테이너 목록
- docker-compose ps
exec
실행 중인 컨테이너에서 명령어 실행
- docker-compose exec {컨테이너 이름} {명령어}
- docker-compose exec wordpress bash
build
컨테이너 build 부분에 정의된 내용대로 빌드
- build로 선언된 컨테이너만 빌드됨
- docker-compose build
- docker-compose build wordpress
- wordpress 컨테이너만 build