도커 컴포즈
•
일반적으로 도커를 설치했으면 도커 컴포즈도 같이 설치가 된다.
•
명령어
docker-compose version
Go
복사
•
실행화면
(base) glory@Gloryui-MacBookPro ~ % docker-compose version
docker-compose version 1.27.4, build 40524192
docker-py version: 4.3.1
CPython version: 3.7.7
OpenSSL version: OpenSSL 1.1.1g 21 Apr 2020
(base) glory@Gloryui-MacBookPro ~ %
Go
복사
•
설치가 안되었다면 다음 명령어 2개를 입력합니다. (리눅스 기준)
sudo curl -L "https://github.com/docker/compose/releases/download/1.26.0/
docker-compose-$(uname -s)
sudo chmod +x /usr/local/bin/docker-compose
Go
복사
•
밑의 파일은 YAML이라는 파일이며 이름은 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
YAML
복사
•
한땀 한땀 입력했던걸 저렇게 보기 쉽게 한다.
•
그런다음 실행하려면 폴더 경로에 맞춰서 다음과 같은 명령어를 작성한다. (-d는 빼면 다른 역할이지만 실행은 됨 나중에 설명)
docker-compose up -d
Go
복사
•
실행이 다 끝나면
•
localhost:8080에 나올것이다.
Down 명령어
•
docker compose를 이용하여 mysql과 wordpress를 종료합니다.
•
명령어
docker-compose down
Go
복사
Version
•
docker-compose.yml 파일의 명세 버전
•
docker-compose.yml 버전에 따라 지원하는 도커 엔진 버전도 다름
version: '3'
Go
복사
services
•
실행할 컨테이너 정의 docker run --name django과 같다고 생각할 수 있음
services: postgres:
... django:
...
Go
복사
image
services:
django:
image: django-sample
Go
복사
•
컨테이너에 사용할 이미지 이름과 태그
•
태그를 생략하면 latest
•
이미지가 없으면 자동으로 pull
ports
services:
django:
# ...
ports:
# "8000:8000"
Go
복사
•
컨테이너와 연결할 포트(들)
•
{호스트 포트}:{컨테이너 포트}
environment
services:
mysql:
...
environment:
- MYSQL_ROOT_PASSWORD=somewordpress: '3'
Go
복사
•
컨테이너에서 사용할 환경변수(들)
•
{환경변수 이름}:{값}
volumes
services:
django:
...
volumes:
./app:/app
Go
복사
•
마운트하려는 디렉터리(들)
•
{호스트 디렉터리}:{컨테이너 디렉터리}
restart
services:
django:
restart: always
Go
복사
•
재시작 정책restart: "no"
•
restart: always
•
restart: on-failure
•
restart: unless-stopped
build
django:
build:
context: .
dockerfile: ./compose/django/Dockerfile-dev
Go
복사
•
이미지를 자체 빌드 후 사용
•
image 속성 대신 사용함
•
여기에 사용할 별도의 도커 파일이 필요함
up
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