///
Search

06.Docker Compose

도커 컴포즈

일반적으로 도커를 설치했으면 도커 컴포즈도 같이 설치가 된다.
명령어
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