이글은 docker-compose.yml 작성에 관한 글입니다.
docker-compose 설치
# Docker Compose 설치
$ sudo curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
# Docker Compose 실행 권한 부여
$ sudo chmod +x /usr/local/bin/docker-compose
# 설치된 Docker Compose 실행 확인
$ docker-compose --version
Docker Compose version v2.20.2
docker-compose up 명령어를 사용하기 위해 설치가 필요합니다.
이글에서 아래 링크의 간단한 투표앱을 docker-compose.yml로 작성하여 실행하여 보겠습니다.
https://github.com/dockersamples/example-voting-app/tree/main
GitHub - dockersamples/example-voting-app: Example distributed app composed of multiple containers for Docker, Compose, Swarm, a
Example distributed app composed of multiple containers for Docker, Compose, Swarm, and Kubernetes - dockersamples/example-voting-app
github.com
사전 준비
python으로 작성된 (vote)투표 화면에서 투표를 하면, 해당 데이터가 redis로 저장되고, 저장된 redis 데이터를 worker를 통해 postgres db에 저장하고 결과 값을 node js로 구성된 화면으로 보여주는 Flow입니다.
redis와 postgres db는 public으로 공개되어 dockerhub에서 image를 받아올수 있지만 vote, worker, result는 새롭게 이미지를 만들어줘야합니다. 이미지를 만들기위한 Dockerfile은 위 프로젝트에 전부 작성되어 있고, 해당 경로에서
docker build . -t <app name>:<tag>
해당 명령어를 통해 이미지를 만들어주시면 됩니다.
저는 다음과 같이 result-app, worker-app, voting-app으로 이름을 지어 이미지화하였습니다.
docker-compose.yml 작성
version: "3"
services:
redis:
image: redis
db:
image: postgres:15-alpine
environment:
POSTGRES_USER: "postgres"
POSTGRES_PASSWORD: "postgres"
vote:
image: voting-app
ports:
- 5000:80
worker:
image: worker-app
result:
image: result-app
ports:
- 5001:80
version은 3으로 지정하였고, 2 버전 이상부터는 services 항목이 추가됩니다.
voting-app과 result-app에 5000/5001 포트로 접근하기위해서 다음과 같이 포트를 지정하였습니다.
docker-compose up
해당 명령어를 실행하면,
다음과 같이 실행됩니다.
결과
http://localhost:5000 해당 포트로 접근하면 투표할수 있는 화면이 나오게됩니다.
해당 결과에 따른 화면은 http://localhost:5001으로 접근하면 확인할 수 있습니다.
이상으로 docker-compose.yml을 작성하여 간단한 앱 구성을 실행하여 구성해보았습니다.
감사합니다~
'DevOps' 카테고리의 다른 글
[k8s] Labels & Selector (0) | 2024.05.31 |
---|---|
[k8s] Taints & Tolerations (0) | 2024.05.31 |
[docker] image 생성하기 (0) | 2024.05.08 |
[docker] jenkins docker (0) | 2024.05.07 |
[docker] 기본 명령어 (0) | 2024.05.07 |