반응형
Docker를 실제 사용하다보면, Database, Web, Memory Cache 등 다중 컨테이너로 사용해야 하는 상황이 종종 발생한다.
이때 만약 기본적인 Docker 명령을 활용한다면, 아래와 같이 여러 단계를 거쳐야 한다.
1. 먼저 함께 사용할 내부 네트워크를 생성하고,
2. 이후 Docker를 Run을 통해 실행할때 마다 네트워크 및 볼륨정보등 각각의 필요한 옵션을 지정해야 줘야 한다.
아래 명령은 myapp이라는 네트워크를 생성하고, Database의 저장을 위해 mariadb-data라는 볼륨용도의 컨테이너를 생성하여 Mysql 5.7버전의 컨테이너를 생성하는 명령이다.
sudo docker network create myapp
docker run -d --network my-app --network-alias mysql -v myapp-mysql-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=<your-password> -e MYSQL_DATABASE=myapp mysql:5.7
위와 같이 네트워크 생성해서 docker run을 이용해 개별 docker 이미지를 생성할 수 있지만 매번 여러 CLI를 입력하여 관리하는 건 큰 어려움이라고 할 수 있다.
이를 위해 Docker Compose를 이용하면 별도의 네트워크를 생성하지 않아도 되며, 동시에 여러 이미지를 활용하면 쉽게 관리할 수 있다.
아래는 MariaDB와 FastAPI를 동시에 실행할 때 사용할 수 있는 Docker-Compose 파일이다.
docker-compose.yml
version: "3.3"
services:
mariadb:
image: mariadb:latest
ports:
- 3306:3306
volumes:
- mariadb-data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: password
PYTHONUNBUFFERED: 0
api:
image: my:api
ports:
- 443:8080
environment:
DB_PASSWORD: password
PYTHONUNBUFFERED: 0
volumes:
- /etc/letsencrypt:/etc/letsencrypt
- /var/lib/letsencrypt:/var/lib/letsencrypt
depends_on:
- mariadb
command:
sh -c "/opt/api/start.sh"
volumes:
mariadb-data:
반응형
'Linux' 카테고리의 다른 글
Docker - Dockerfile 작성하기 기본 with Python (0) | 2024.02.28 |
---|---|
Linux - Cron 로그 확인 (0) | 2024.02.27 |
Docker - Image Alpine, Slim, Stretch, Buster, Jessie, Bullseye (1) | 2024.02.27 |
Linux - 메모리 PageCache/BufferCache/Shared 이해 (0) | 2024.02.24 |
Docker - Mariadb 실행 요점 정리, 볼륨 구성등 (0) | 2024.02.23 |