

도커 컨테이너에 npm 의존성 파일을 올리면 너무 무거워진다 하여,
이를 뺐다.
그러면 실행했을 때
main.ts 에서 import 하는 reflect-metadata를 찾지 못함.
그래서 강제로
# 백그라운드로 컨테이너 실행 (종료되지 않게)
docker run -d --name temp-container --user root 7dfc31ff6e3e tail -f /dev/null
백그라운드에서 컨테이너를 만드는데 tail -f /dev/null로 생성
tail -f /dev/null
이는 백그라운드에서 실행할 수 있도록 하는 명령어인데, 배포 서버에서는
1. 로그 데이터 손실
2. 프로세스 관리의 비효율성 등으로 인해
사용하지 않는다고 한다.
socket/Dockerfile.prodDockerfile에 직접
RUN npm install reflect-metadata
패키지 설치 명령어 넣고,
# node_modules 복사 (런타임 deps만)
COPY --from=deps /app/node_modules ./node_modules
--from=deps :
npm installoryarn install
/app/node_modules : deps 이미지 내에 있는node_modules폴더의 경로, 일반적으로/app아래에 생성된다.
./node_modules : 복사된 파일이 저장될목적지(최종 런타임에 사용될node_modules폴더를 생성하고 파일을 붙여넣음)

드디어 서버가 실행된다.
근데 Redis Client Error?
이미 Redis server 돌아가는데...?
Redis server와 Socket_default server를 확인해봄
docker inspect socket-socket-1 | grep -A 5 "Networks"
"Networks": {
"socket_default": {
"IPAMConfig": null,
"Links": null,
"Aliases": [
"socket-socket-1",
docker inspect redis-server | grep -A 5 "Networks"
"Networks": {
"bridge": {
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"MacAddress": "02:42:",
서로 다른 네트워크를 보고 있음.
도대체 왜?
docker network connect socket_default redis-server
/rooms, GET} route +1ms
socket-1 | [Nest] 1 - 09/07/2025, 9:30:13 AM LOG [RoutesResolver] HealthController {/health}: +0ms
socket-1 | [Nest] 1 - 09/07/2025, 9:30:13 AM LOG [RouterExplorer] Mapped {/health, GET} route +0ms
socket-1 | 🔴 Redis connected
socket-1 | [Nest] 1 - 09/07/2025, 9:30:14 AM LOG [NestApplication] Nest application successfully started +276ms
socket-1 | ✅ Socket server is running on port 3001
마지막으로 이렇게 연결이 잘되었고,
health check succeeded 됨.

되게 간단하게 해결한 것처럼 보이지만?
일요일 오전 11시쯤에 나와....6시 30반까지
꽤나 오랜 시간 붙잡고 있었다.
사실 해결 못할줄 알았는데,
우여곡절 끝에 원인을 찾고 해결할 수 있어서 다행이다 :)
😀