도커 컴포즈로 컨테이너 실행하기
1. 서비스 디렉토리 생성
$ mkdir webserver
$ cd webserver
2. docker-compose.yml 생성
// yaml
version: "3.9"
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
volumes:
- wordpress_data:/var/www/html
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
volumes:
db_data: {}
wordpress_data: {}
3. docker-compose 명령어
$ docker-compose up -d (백그라운드로 실행. 이렇게만 실행하면 webserver 디렉토리에서 컨테이너가 실행된다.)
$ docker-compose ps (webserver 디렉토리에서 도커 컴포즈로 실행중인 컨테이너 목록 조회. 다른 디렉토리에서 실행중인 컨테이너는 조회되지 않음)
$ docker-compose scale mysql=2 (mysql 컨테이너 개수를 2개로 늘려줘!)
$ docker-compose ps
$ docker-compose down
추가적인 docker-compose 명령어
$ docker-compose config (yml 파일 문법을 체크한다)
$ docker-compose -f /other-dir/docker-compose.yml (현재 디렉토리가 아닌 다른 디렉토리의 도커 컴포즈를 실행시킨다)
$ docker-compose run <서비스 이름> <실행 명령어> (특정 컨테이너에 어떤 명령어를 실행할 수 있다)
$ docker-compose logs <서비스 이름>
$ docker-compose start
도커 컴포즈로 빌드와 운영하기
ex) 방문횟수를 카운트하는 python 컨테이너 빌드와 운영
1. 서비스 디렉토리 생성
$ mkdir composetest
$ cd composetest
2. 빌드를 위한 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 생성
version: "3"
services:
web:
build: .
ports:
- "5000:5000"
redis:
images: "redis:alpine"
4. docker-compose 실행
$ docker-compose up -d