Docker Compose
여러 컨테이너를 일괄적으로 정의하고 실행할 수 있는 툴을 말한다.
즉 하나의 서비스를 운영하기 위해서는 컨테이너화된 여러 개의 애플리케이션이 동작되어야하는데 이를 통합 관리할 수 있게 해준다.
yaml 형태 파일을 이용해 도커 컴포즈에게 요청을 하면, 도커 컴포즈가 이 파일을 읽어서 실행한다.
문법
만약 word press의 docker-compose 파일을 해석해보자면 ,
version: '3.1'
#컴포즈를 이용해서 실행할 컨테이너의 옵션을 정의
#이 services안에는 db와 wordpress가 존재
services:
wordpress:
image: wordpress
restart: always
ports:
- 8080:80
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: exampleuser
WORDPRESS_DB_PASSWORD: examplepass
WORDPRESS_DB_NAME: exampledb
volumes:
- wordpress:/var/www/html
db:
image: mysql:5.7
restart: always
environment:
MYSQL_DATABASE: exampledb
MYSQL_USER: exampleuser
MYSQL_PASSWORD: examplepass
MYSQL_RANDOM_ROOT_PASSWORD: '1'
volumes:
- db:/var/lib/mysql
#볼륨 정의
volumes:
wordpress:
db:
- services: 컴포즈를 이용해서 실행할 컨테이너의 옵션을 정의한다. 두개의 wordpress와 db 컨테이너가 존재한다.
- version: 버전에 따라 지원 문법이 다르다.
- build : 컨테이너 빌드
- image : compose를 통해 이미지를 지정
- command : 컨테이너에서 실행될 명령어 지정
- port : 컨테이너가 공개하는 포트를 나열 port: -80 이라는 로컬호스트에 포트가 랜덤포트가 되고, 컨테이너 포트가 80으로 지정된다.
- link : 다른 컨테이너와 연계할 때 연계할 컨테이너 지정를 지정
- environment : 컨테이너에 적용할 환경변수를 정의
- restart : 컨테이가 종료될 때 적용할 restart 정책
- no : 재시각 되지 않음
- always : 컨테이너를 수동으로 끄지 전까지 항상 재시작
- on-failure :오류가 있을 시에 재시작
- depends_on : 컨테이너 간의 종속성을 정의, 정의한 컨테이너가 먼저 동작 되어야함.
위의 도커 컴포즈에서 사용된 명령어들을 하나의 mysql 컨테이너를 실행시키기 위한 명령어로 정리하면 다음과 같다.
docker run --name db -v db:/var/lib/mysql --restart=always MYSQL_PASSWORD=examplepass mysql:5.7
'CS > 서버' 카테고리의 다른 글
도커 데이터 보존하기 - Bind Mount/Volume (0) | 2023.05.24 |
---|---|
도커 컨테이너 하드웨어 리소스 제한 관리 - Memory, CPU (0) | 2023.05.23 |
Docker로 mysql 설치 및 접속하기 (0) | 2023.05.23 |
Dockerfile 이용해서 이미지 만들고, 도커 허브에 배포하기 (0) | 2023.05.23 |
AWS - EC2, Elastic Beanstalk, Fargate, ECR, Lambda, ECS (1) | 2023.05.08 |