Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 단기개발자코스
- 파이썬
- 프로그래머스 이중우선순위큐
- 개발자 취업
- 빈 충돌
- @FeignClient
- DesignPattern
- 취업리부트코스
- 전략패턴 #StrategyPattern #디자인패턴
- 1주일회고
- 구글 OAuth login
- jwt
- 프로그래머스
- KPT회고
- 디자인 패턴
- jwttoken
- 코딩테스트 준비
- 디자인패턴
- TiL
- Python
- infcon 2024
- Spring multimodule
- 인프콘 2024
- 99클럽
- JavaScript
- 항해99
- 빈 조회 2개 이상
- spring batch 5.0
- 개발자부트캠프추천
- 커스텀 헤더
Archives
- Today
- Total
m1ndy5's coding blog
Ditto 프로젝트 docker-compose 2편 - docker-compose란? 본문
Toy Projects/Ditto - Discuss Today's Topic
Ditto 프로젝트 docker-compose 2편 - docker-compose란?
정민됴 2024. 4. 24. 11:11docker-compose?
docker-compose는 단일 서버에서 여러개의 컨테이너를 하나의 서비스로 정의해 컨테이너의 묶음으로 관리할 수 있는 작업 환경을 제공하는 관리 도구
왜 docker-compose를 사용할까?
여러 개의 컨테이너가 하나의 애플리케이션으로 동작할 때 docker-compose를 사용하지 않는다면 각 컨테이너를 하나씩 생성해 실행해야 한다. 만약 100개의 컨테이너가 하나의 애플리케이션으로 동작한다면 일일이 컨테이너를 실행하기는 번거롭다.
docker-compose는 여러 개의 컨테이너의 옵션과 환경을 정의한 파일을 읽어 컨테이너를 순차적으로 생성하는 방식으로 동작하기 때문에 하나의 명령어로도 애플리케이션을 이루고 있는 컨테이너들을 실행시킬 수 있다.
docker-compose 설치
https://docs.docker.com/compose/install/
각 os에 맞게 다운받으면 된다.
docker-compose.yml
docker-compose.yml에 컨테이너로 생성할 서비스들을 설정하여 사용하면 된다.
# 도커 컴포즈의 버전을 설정
version: "3"
# 컨테이너들의 설정 내용
services:
# 이름:컨테이너1
컨테이너1:
# 베이스이미지 설정
image: mysql:5.7
# 네트워크 설정
networks:
- 네트워크이름
# mysql-data 볼륨을 /var/lib/mysql에 연결함 -> docker volume create로 생성한 볼륨을
# docker run 명령에서 -v 옵션으로 사용하는 것과 같음
volumes:
- mysql-data:/var/lib/mysql
# 환경변수 설정
environment:
MYSQL_ROOT_PASSWORD: root_pwd
MYSQL_DATABASE: db
MYSQL_USER: user
MYSQL_PASSWORD: pwd
# 포트 설정
ports:
- 포트설정
# 이름:컨테이너2
컨테이너2:
image: wordpress
networks:
- 네트워크
volumes:
- 볼륨
ports:
- 8000:80
# 네트워크 설정
networks:
네트워크이름1:
# 볼륨 설정 -> docker volume create와 같음
volumes:
볼륨1:
볼륨2:
services:
jenkins:
image: jenkins/jenkins:lts
container_name: jenkins
volumes:
- ./jenkins:/var/jenkins_home
ports:
- "8088:8080"
activity:
container_name: activity
build:
context: ./ditto-module-activity
dockerfile: Dockerfile
ports:
- "8081:8081"
gateway:
container_name: gateway
build:
context: ./ditto-module-gateway
dockerfile: Dockerfile
ports:
- "8083:8083"
newsfeed:
container_name: newsfeed
build:
context: ./ditto-module-newsfeed
dockerfile: Dockerfile
ports:
- "8082:8082"
stock:
container_name: stock
build:
context: ./ditto-module-stock
dockerfile: Dockerfile
ports:
- "8091:8091"
user:
container_name: user
build:
context: ./ditto-module-user
dockerfile: Dockerfile
ports:
- "8087:8087"
나는 이렇게 각 서비스에 도커파일로 정의해서 사용했다.
포트 같은 경우에는 호스트OS 포트 : 컨테이너 내부 포트
docker-compose 실행 및 종료
# foreground로 도커 컴포즈 프로젝트 실행
$ docker-compose up
# background로 도커 컴포즈 프로젝트 실행
$ docker-compose up -d
# 프로젝트 내 컨테이너 및 네트워크 종료 및 제거
$ docker-compose dowm
# 프로젝트 내 컨테이너, 네트워크 및 볼륨 종료 및 제거
$ docker-compose down -v
docker-compose 목록 확인
$ docker-compose ps
'Toy Projects > Ditto - Discuss Today's Topic' 카테고리의 다른 글
Ditto 프로젝트 동시성 문제 해결하기 4편 - Java에서 동시성을 제어하는 방법 (Synchronized, ConcurrentHashMap) (1) | 2024.03.25 |
---|---|
Ditto 프로젝트 동시성 문제 해결하기 3편 - 낙관적 락 Version, Select for Update (0) | 2024.03.13 |
Ditto 프로젝트 docker-compose 1편 - Docker란, Docker Cache, Docker Network (0) | 2024.03.07 |
Ditto 프로젝트 종목 불러오기 with batchUpdate (1) | 2024.02.29 |
Ditto 프로젝트 N+1 문제 2편 - N+1 문제 해결과 외래키 (2) | 2024.02.27 |