Docker-Compose
- 여러 컨테이너를 일괄적으로 정의하고 실행할 수 있는 툴
- 하나의 서비스를 운영하기 위해서는 여러 개의 애플리케이션이 동작해야 함
- 컨테이너화 된 애플리케이션들을 통합 관리할 수 있음
Docker-Compose로 컨테이너 실행
예를 들어, docker hub에 올라가 있는 wordpress의 경우 아래와 같이 yaml 파일이 구성되어 있다.
version: '3.1'
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:
버전마다 추가되거나 삭제된 문법의 차이가 있기 때문에, 사용하고자 하는 서비스가 있고 yaml 파일을 편집할 떄 version에 따른 문법을 확인하고 진행해야 한다.
Docker-Compose 로 Container 실행
1. 직접 Dockerfile 로 빌드하지 않고 진행
(1) 서비스 디렉토리 생성
mkdir webserver
cd webserver
(2) docker-compose.yml 생성
cat > docker-compose.yml
#docker-compose.yml
version: '3.1'
services:
web:
image: httpd:latest
ports:
- "80:80"
links:
- mysql:db
command: apachectl -DFOREGROUND
mysql:
image: mysql:latest
command: mysqld
environment:
MYSQL_ROOT_PASSWORD: pass
(3) docker-compose 명령어
docker-compose up -d
docker-compose ps
docker-compose scale mysql=2
docker-compose ps
docker-compose down
2. 직접 Dockerfile 를 생성하고 빌드하여 진행
(1) 서비스 디렉토리 생성
mkdir webserver2
cd webserver2
(2) 빌드를 위한 dockerfile 생성
$ cat > dockerfile
# dockerfile
FROM python:3.7-alpine
WORKDIR /code
ENV FLASK_APP=app.py
ENV FLASK_RUN_HOST=0.0.0.0
RUN apk add --no-cache gcc musl-dev linux-headers
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
EXPOSE 5000
COPY ..
CMD ["flask","run"]
(3) docker-compose.yml 생성
cat > docker-compose.yml
#docker-compose.yml
version: "3"
services:
web:
build:
ports:
- "5000:5000"
redis:
image: "redis:alpine"
(3) docker-compose 명령어
docker-compose up -d
docker-compose ps
docker-compose scale mysql=2
docker-compose ps
docker-compose down
'Docker > 이론' 카테고리의 다른 글
Docker-Compose 설치 (0) | 2021.11.18 |
---|---|
[Docker] 8.Container Storage (0) | 2021.09.23 |
[Docker] 7.Container 리소스 관리 (0) | 2021.09.07 |
[Docker] 5.Container 운영 (0) | 2021.08.24 |
[Docker] 4.Container Registry (0) | 2021.08.12 |