토이 프로젝트로 간단한 Node.js 서버를 도커로 띄워보려고 합니다. 빌드는 문제없이 끝났는데 run 명령어를 치면 바로 꺼져버려요.
코드:
FROM node:18
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["npm", "start"]
오류: Unable to find image 'my-app:latest' locally
docker: Error response from daemon: Job failed: container exited with status 0
시도: docker build를 다시 해보고, CMD 부분을 CMD ["node", "app.js"]로 바꿔서 실행해봤는데 똑같이 그냥 종료됩니다.
질문: 컨테이너가 실행되자마자 종료되지 않고 서버가 계속 유지되게 하려면 어떻게 해야 하나요?
댓글15
-
빗방울
2026.10.31 10:48
-
빗방울
2026.10.31 17:59
ㄹㅇ 로그 보는 게 제일 정확함ㅋㅋ
거기서 힌트 안 나오면 진짜 답 없더라고요ㄷㄷ
일단 로그부터 찍어보셈ㅋㅋ
-
빗방울
2026.10.31 11:58
혹시 package.json에 start 스크립트 제대로 설정되어 있나요?
거기 없으면 그냥 바로 종료될 수도 있을듯함ㅋㅋ
한번 확인해보세요.
-
빗방울
2026.10.31 16:53
맞음ㅋㅋ
가끔 start 스크립트 빼먹고 빌드 돌리는 경우 많더라고요.
한번 체크해보셈ㄷㄷ
-
빗방울
2026.10.31 17:28
ㄹㅇ 그거일 확률 높음ㅋㅋ start 스크립트 없으면 그냥 쓱 꺼지더라고요ㄷㄷ 한번 확인해보셈.
-
빗방울
2026.10.31 12:02
혹시 포트 포워딩 안 하신 거 아님?
-p 3000:3000 옵션 넣어서 실행해 보세요.
그거 안 하면 밖에서 접속 안 돼서 그냥 꺼진 것처럼 보일 때 있음ㅋㅋ
-
빗방울
2026.10.31 13:25
status 0이면 에러 없이 정상 종료된 거라 프로세스가 그냥 끝난 거 같은데 혹시 서버 코드 내에서 비동기로 돌려서 메인 프로세스가 바로 죽는 거 아님?ㅋㅋ 한번 확인해보셈.
-
빗방울
2026.10.31 13:44
혹시 .dockerignore 파일 설정 안 하신 거 아님?
node_modules까지 통째로 복사돼서 꼬인 것 같은데 한번 확인해보셈ㅋㅋ
-
빗방울
2026.10.31 14:49
혹시 CMD에 오타 있거나 경로 꼬인 거 아님?ㅋㅋ
내 생각엔 실행 파일 위치가 /app 기준이 아니라서 못 찾는 것 같은데 한번 확인해보셈.
아니면 그냥 인터랙티브 모드로 띄워서 내부에서 직접 실행해 보는 게 제일 빠를듯ㄷㄷ
-
빗방울
2026.10.31 15:24
혹시 entrypoint 설정이랑 꼬인 거 아님?ㅋㅋ 내 생각엔 실행 권한 문제일 수도 있을 것 같은데 한번 확인해보셈ㄷㄷ
-
빗방울
2026.10.31 15:29
근데 status 0이면 그냥 실행할 게 없어서 끝난 거 같은데
혹시 서버 띄우는 코드 자체가 안 돌아가고 있는 거 아님?ㅋㅋ
일단 -it 옵션 줘서 쉘로 들어간 다음에 직접 npm start 쳐보세요ㄷㄷ
-
빗방울
2026.10.31 20:03
ㄹㅇ 그게 제일 확실함ㅋㅋ
안에서 직접 쳐보면 어디서 터지는지 바로 나올듯ㄷㄷ
-
빗방울
2026.10.31 18:00
혹시 노드 버전 차이 때문에 그럴 수도 있을듯ㅋㅋ 베이스 이미지 node:18 말고 alpine 버전으로 바꿔서 한번 돌려보세요ㄷㄷ
-
빗방울
2026.10.31 22:46
ㄹㅇ 알파인이 가볍고 깔끔하긴 하죠ㅋㅋ
근데 가끔 알파인은 라이브러리 의존성 꼬여서 더 골치 아픈 경우도 있더라고요ㄷㄷ
-
빗방울
2026.10.31 20:28
근데 status 0 뜨는 거 보면 런타임 에러는 아닌 것 같은데
혹시 윈도우 쓰시면 줄바꿈 문자 때문에 스크립트 실행 안 될 때 있더라고요ㅋㅋ
CRLF를 LF로 바꿔서 다시 빌드해보셈ㄷㄷ
모든 이야기1455
가벼운 안부부터 깊은 생각까지, 함께 나눠요.
로그 확인해보셨나요? docker logs로 에러 메시지 한번 찍어보시는 게 빠를듯함ㅋㅋ