rueki
docker compose 실행해보기 본문
도커 컴포즈
: 여러 컨테이너를 일괄적으로 정의 및 실행할 수 있는 툴
컨테이너화 된 애플리케이션들을 통합 관리가 가능함.
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: {}
위의 코드는 docker docs의 sample yaml 파일 일부이다. 이것을 이전까지 써온 명령어로 풀어쓰면 아래와 같다.
docker run --name db -v db_data:/var/lib/mysql --restart=always -e MYSQL_ROOT_PASSWORD:somewordpress
yaml 기본 문법 설명
version : compose 버전
services : 컴포즈를 이용해서 실행할 컨테이너 옵션 정의
build : 컨테이너 빌드
image : compose 통해 실행할 이미지 지정
command : 컨테이너에서 실행될 명령어 지정
port : 컨테이너가 공개하는 포트를 나열
link : 다른 컨테이너와 연결할 때 컨테이너 지정
expose : 포트를 링크로 연계된 컨테이너에게만 공개할 포트
volumes : 컨테이너에 볼륨 마운트
environment : 환경변수 설정
restart : 컨테이너가 종료될 때 적용할 정책
- always : 컨테이너를 수동으로 끄기 전까지 항상 재시작
- on-failure : 오류가 있을 시 재시작
* Docker compose로 빌드 및 배포 절차
- 서비스 디렉토리 생성
- 빌드를 위한 dockerfile 생성하기
- docker compose.yaml 생성
- docker-compose 명령어
Docker compose 설치 (튜토리얼 내용 정리)
https://docs.docker.com/compose/install/
Install Docker Compose
docs.docker.com
1. 작업 디렉토리 생성
mkdir composetest
cd composetest
2. Dockerfile 생성, python 예제파일
# syntax=docker/dockerfile:1
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"]
import time
import redis
from flask import Flask
app = Flask(__name__)
cache = redis.Redis(host='redis', port=6379)
def get_hit_count():
retries = 5
while True:
try:
return cache.incr('hits')
except redis.exceptions.ConnectionError as exc:
if retries == 0:
raise exc
retries -= 1
time.sleep(0.5)
@app.route('/')
def hello():
count = get_hit_count()
return 'Hello World! I have been seen {} times.\n'.format(count)
requirements.txt 에 파이썬 라이브러리 설치할 것들 명시하기.
- 도커 컴포즈로 실행한 파일 종료 및 삭제
중지만 시키려면 stop 사용
docker-compose down
- 위에서 만든 도커 컴포즈 수정 (volume 마운트 경로 설정)
version: "3.9"
services:
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/code
environment:
FLASK_ENV: development
redis:
image: "redis:alpine"
MYsql DB를 사용하는 wordpress 운영하기
1. 프로젝트 폴더 생성
2. 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
'쿠버네티스, 도커' 카테고리의 다른 글
docker 컨테이너 자동 삭제 (0) | 2021.12.27 |
---|---|
Dockerfile Example (0) | 2021.12.20 |
도커 컨테이너 통신 (0) | 2021.11.21 |
도커 컨테이너 Storage (0) | 2021.11.19 |
Kubernetes namespace (0) | 2021.11.19 |