250x250
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 | 29 | 30 |
31 |
Tags
- 김영한
- 코딩테스트
- fielderror
- objecterror
- 프로그래머스
- 오블완
- java
- 추상클래스
- equals()
- 인터페이스
- 테스트코드
- http 메시지 컨버터
- html form
- 코드트리
- 백준
- 티스토리챌린지
- 의존관계
- 스프링컨테이너
- 다익스트라
- 참조변수
- 싱글톤
- 오버라이딩
- 스프링
- 프록시
- HttpServletResponse
- 코드트리조별과제
- @configuration
- 서블릿
- 예외와 트랜잭션 커밋
- DI
Archives
- Today
- Total
minOS
Docker-compose 개발 환경 세팅하기 본문
728x90
도입 배경: 왜 Docker Compose를 사용해야 하는가?
각 팀원의 로컬 개발 환경이 다르거나, 설정이 제대로 맞지 않아서 발생하는 문제를 겪을 수 있다.
특히 Microservices Architecture(MSA)같은 분산 시스템을 개발할 때,각 서비스의 실행 환경을 통일하는 것이 중요하다.
Docker Compose를 도입하면
- 모든 팀원이 동일한 개발 환경에서 작업 가능
- 개발 환경을 컨테이너로 격리하여 로컬 설정이 달라도 문제 없이 실행
- 서비스 간의 네트워크 및 의존성을 쉽게 관리 가능
Docker Compose 환경 세팅
1)디렉토리 구조
msa-practice/ ├── discoveryservice/ # Eureka Server │ ├── src/ │ ├── pom.xml │ ├── Dockerfile ├── apigateway-service/ # API Gateway │ ├── src/ │ ├── pom.xml │ ├── Dockerfile ├── first-service/ # First 서비스 │ ├── src/ │ ├── pom.xml │ ├── Dockerfile ├── second-service/ # Second 서비스 │ ├── src/ │ ├── pom.xml │ ├── Dockerfile ├── docker-compose.yml # 🏗️ 팀원들이 실행해야 하는 파일 ├── .env # 환경 변수 파일 (필요한 경우) └── README.md # 📝 실행 방법 정리
2) dockerfile 작성
유레카 서버 (eureka-server/Dockerfile)FROM openjdk:17 WORKDIR /app COPY target/discoveryservice.jar discoveryservice.jar EXPOSE 8761 ENTRYPOINT ["java", "-jar", "discoveryservice.jar"]
API Gateway 서버(gateway/Dockerfile)FROM openjdk:17 WORKDIR /app COPY target/apigateway-service.jar apigateway-service.jar EXPOSE 8080 ENTRYPOINT ["java", "-jar", "apigateway-service.jar"]
유레카 클라이언트 서비스 (first-service/Dockerfile)FROM openjdk:17 WORKDIR /app COPY target/first-service.jar first-service.jar EXPOSE 8081 ENTRYPOINT ["java", "-jar", "first-service.jar"]
유레카 클라이언트 서비스 (second-service/Dockerfile)FROM openjdk:17 WORKDIR /app COPY target/second-service.jar second-service.jar EXPOSE 8081 ENTRYPOINT ["java", "-jar", "second-service.jar"]
3) docker-compose.yaml 작성
services: discoveryservice: build: context: ./discoveryservice dockerfile: Dockerfile container_name: discoveryservice ports: - "8761:8761" networks: - msa_network environment: - JAVA_OPTS=-XX:+UseContainerSupport apigateway-service: build: context: ./apigateway-service dockerfile: Dockerfile container_name: apigateway-service depends_on: - discoveryservice ports: - "8080:8080" environment: - EUREKA_SERVER=http://discoveryservice:8761/eureka/ networks: - msa_network first-service: build: context: ./first-service dockerfile: Dockerfile container_name: first-service depends_on: - discoveryservice ports: - "8081:8081" environment: - EUREKA_SERVER=http://discoveryservice:8761/eureka/ networks: - msa_network second-service: build: context: ./second-service dockerfile: Dockerfile container_name: second-service depends_on: - discoveryservice ports: - "8082:8082" environment: - EUREKA_SERVER=http://discoveryservice:8761/eureka/ networks: - msa_network networks: msa_network: driver: bridge
4) 빌드docker-compose up -d --build
5) 컨테이너 작동 확인docker ps
728x90