Docker

[Docker] 두 개의 레포지토리로 분리된 서버를 하나의 실행 환경에서 테스트하기

montmer27 2026. 4. 13. 23:34

전제조건

- 두 프로젝트로 구성되며, 각 프로젝트는 단일 모듈이다.

- 각 프로젝트는 판매자/구매자용 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 호출로 검증 (헬스체크)