코드실행용 도커서버의 개수를 늘려 테스트케이스 실행을 병렬처리하기 전에, docker compose 설정을 하였다.

docker compose에서 replica를 늘려 쉽게 테스트할 수 있기 때문에 이 작업을 먼저 진행했다.

services:
  algo-with-me-api:
    image: algo-with-me-api
    ports:
      - 3000:3000
    volumes:
      - /home/be/algo-with-me/problems/:/algo-with-me/problems/
      - /home/be/algo-with-me/submissions/:/algo-with-me/submissions/
      - /home/be/algo-with-me/testcases/:/algo-with-me/testcases/
    network_mode: host
    env_file:
      ./algo-with-me-api/.env
    restart: always
  algo-with-me-score:
    image: algo-with-me-score
    ports:
      - 4000:4000
    volumes:
      - /home/be/algo-with-me/problems/:/algo-with-me/problems/
      - /home/be/algo-with-me/submissions/:/algo-with-me/submissions/
      - /home/be/algo-with-me/testcases/:/algo-with-me/testcases/
    network_mode: host
    env_file:
      - ./algo-with-me-score/.env
    restart: always
  algo-with-me-docker:
    image: algo-with-me-docker
    ports:
      - 5000:5000
    volumes:
      - /home/be/algo-with-me/problems/:/algo-with-me/problems/
      - /home/be/algo-with-me/submissions/:/algo-with-me/submissions/
      - /home/be/algo-with-me/testcases/:/algo-with-me/testcases/
    network_mode: host
    user: 1001:1001

이미 만들어져 있었던 docker run 명령어들을 참고해, 이렇게 docker-compose.yaml 파일을 만들었다.

network_mode: host

호스트 머신에서 돌아가는 것처럼 host 네트워크 내에서 도커가 돌게 해준다 (default = bridge)

아직 확인은 안해봤지만 이대로 .env의 hostname을 localhost로 바꿔도 되지 않을까 싶다

volumes:

필요한 경우 :ro를 붙여 읽기가능만 하게 해야 한다 (TODO)

env_file:

환경변수 파일 등록.

docker 이미지 내에는 환경변수 파일이 없고, 외부에서 docker 내에 환경변수를 등록하는 방법을 사용한다 (docker image를 원격 pulic repository에 push하므로, 이미지 내에 환경변수 파일을 두면 누구나 .env 파일을 읽을 수 있다)

즉, 도커 컨테이너가 켜질 때 dotenv 라이브러리나 @nestjs/config를 사용할 필요 없이 이미 환경변수가 등록된 상태로 서버가 시작하게 될 것이다