문제 인식
🚫 문제점
- 기존 데디케이트 도커 컨테이너를 생성했던 서버를 도커 컨테이너로 변경
- 컨테이너로 변경된 서버가 도커 내부에서 컨테이너 생성 불가능
원인 파악
🔍 분석
- 오류 분석
spawn docker
: Node.js가 docker
명령어를 실행하려 했지만 실패
- ENOENT: 시스템이
docker
명령어를 찾지 못하는 현상
- 원인
docker
가 시스템에 설치되어 있지 않을 수 있음
child_process.spawn
함수를 사용하여 docker
명령어를 실행하는 부분에서 오류가 발생
- 컨테이너 내부에서 도커 CLI 인식 불가
해결 과정
master(game)서비스 dockerfile
# 빌드 스테이지
FROM node:20-alpine AS builder
WORKDIR /app
...
# docker cli 설치
RUN apk add --no-cache docker-cli // <-추가
...
# 실행 스테이지
...
# docker 파일 복사
COPY --from=builder /usr/bin/docker /usr/bin/docker // <-추가
...
...
# 실행
CMD ["node", "dist/game.server.js"]
docker-compose
version: '3.8'
services:
...
...
game:
build:
context: .
dockerfile: apps/game/master/dockerfile
container_name: game
...
...
volumes:
- /var/run/docker.sock:/var/run/docker.sock // <- volumes 옵션 추가
과정 설명