Docker-compose

seonghwanPark·2022년 1월 1일
  • 여러 컨테이너를 일괄적으로 정의하고 실행할 수 있는 툴 이다.
  • 컨테이너화 된 애플리케이션을 통합 관리 할 수 있음.
  • yml, yaml 확장자를 가짐. => docker-compose.yml / docker-compose.yaml

docker-compose.yml/yaml 설정 파일 명령어

version : compose 버전을 의미함. 버전에 따라서 지원되는 문법이 다름.

ex) version:"3"

services : 컨테이너 서비스 목록을 관리한다. (compose를 이용하여 실행할 컨테이너의 옵션을 정의한다.)

ex) 
services:
  web:
    image: nginx
  db:
    images: mysql
	
여기서, web과 db는 container name을 의미함.

build : 해당 서비스의 이미지를 빌드하는데 필요한 Dockerfile의 경로를 지정한다.

ex)
web:
  build: . -> docker-compose.yml 과 동일한 디렉토리에 위치한 Dockerfile을 사용하여 web 이름의 컨테이너를 빌드함.

image : docker-compose를 통해 실행할 이미지를 지정한다.

ex)
web:
  image: nginx

command : 컨테이너에서 실행될 명령어를 지정한다.(Dockerfile의 CMD 명령을 무시하고 실행함.)

ex)
app:
  image: node:14-alpine
  command: sh -c "npm install && npm run dev"

ports : 컨테이가 외부로 공개할 포트를 지정한다.

ex)
web:
  images: nginx
  port:
    - 80 (외부랜덤 123456:내부 80)
	- 8080:80 (외부 8080:내부 80)

environment : 컨테이너의 환경 변수를 설정한다.

ex)
environment:
- MYSQL_ROOT_PASSWORD: testok1234
- MYSQL_DATABASE: test
- MYSQL_USER: test_user
- MYSQL_PASSWORD: testtest1234
ex)
web:
  image: wordpress:latest
  links: 
    - "db:database" -> [컨테이너명]:[별칭]
db:
  image: mysql

expose : 지정한 포트를 연결된 컨테이너만 공개할 때 사용한다.(호스트 os에 공개하지 않음.)

ex)
web:
  build: .
  expose:
    - "8888"

volumes : 컨테이너 볼륨 마운트를 설정한다.

ex)
web:
  image: mysql
  volumes:
    - db-data:/var/lib/mysql/data

depends_on : 서비스 간 의존 관계를 지정하기 위해서 사용한다. (의존 관계가 먼저인 순서로 서비스가 실행된다.)

ex) 
services:
	web:
	  build: .
	  depends_on:
	    - db
	db:
	  image: mysql

restart : 컨테이너 종료 시 적용할 restart 정책이다.

- no : 재시작 X
- always: 컨테이너 수동 종료가 아니면 항상 재시작함.
- on-failure: 오류가 있을 시 재시작함.

ex)
db:
  image: mysql
  restart: always

docker-compose 명령어

docker-compose up : 컨테이너 생성 및 시작
docker-compose up -d : 컨테이너 생성 및 시작
docker-compose ps : 컨테이너 목록 표시
docker-compose scale mysql=2 : 해당 compose 파일의 정의된 mysql 컨테이너 갯수를 2개로 설정.
docker-compose stop : 컨테이너를 모두 종료
docker-compose down : 컨테이너 모두 종료 및 삭제
docker-compose logs : 컨테이너 로그 출력
docker-compose pause : 컨테이너 정지
docker-compose unpause : 컨테이너 재개
docker-compose port : 컨테이너 공개 포트 번호 표시
docker-compose config : compose 설정을 확인
docker-compose kill : 실행중인 컨테이너 강제 종료
docker-compose rm : 컨테이너 삭제
docker-compose exec : 실행중인 컨테이너에 어떠한 명령어를 날림
docker-compose run : 서비스 컨테이너의 특정 명령어를 일회적으로 실행할 때 사용

profile
뚜벅뚜벅 개발 일기🕺

0개의 댓글