전제조건
- 두 프로젝트로 구성되며, 각 프로젝트는 단일 모듈이다.
- 각 프로젝트는 판매자/구매자용 api 서버, 그리고 관리자용 서버이다.
1. 두 서버 외부에 docker-compose.yml을 두어야 한다. 기존 레포에 있던 docker-compose.yml은 삭제해준다.

2. 환경 변수 주입 위해 .env 파일도 같이 둔다.

3. docker-compose.yml 파일 수정
기존 내용은 그대로 두고, 함께 띄울 두 서버를 포트를 구분하여 작성해 준다.
두 서버 모두 동일한 환경변수를 주입받는다.
client-server:
build: ./copy-of-apiserver
ports: ["8080:8080"]
environment:
SPRING_DATASOURCE_URL: jdbc:postgresql://postgresql:5432/${DB_NAME}
SPRING_DATASOURCE_USERNAME: ${DB_USERNAME}
SPRING_DATASOURCE_PASSWORD: ${DB_PASSWORD}
env_file:
- .env
depends_on:
postgresql:
condition: service_healthy
admin-server:
build: ./copy-of-adminserver
ports: ["8081:8081"]
environment:
SPRING_DATASOURCE_URL: jdbc:postgresql://postgresql:5432/${DB_NAME}
SPRING_DATASOURCE_USERNAME: ${DB_USERNAME}
SPRING_DATASOURCE_PASSWORD: ${DB_PASSWORD}
env_file:
- .env
depends_on:
postgresql:
condition: service_healthy
주의! 8081 포트로 지정한 admin-server의 yml파일에 8080 포트로 지정되어 있다면 수정해주어야 한다.

실행 결과에 영향을 미치진 않지만 8081 포트에서 실행하기로 결정한 서버의 DockerFile도 EXPOSE 8081로 수정한다.

4. 실행
1) 프로젝트 루트에서 실행 (두 모듈을 포함한 상위 루트)
docker-compose up -d --build
2) 로그에서 postgresql 헬스체크 통과 확인, DB 연결 정상 확인
3) 정상 기동 후 간단히 API 호출로 검증 (헬스체크)
'Docker' 카테고리의 다른 글
| [Docker] docker-compose.yml에 왜 Spring Boot 컨테이너가 없나요? (0) | 2026.04.02 |
|---|