March
28th,
2018
Kubernetes 를 이용하여 node 서버를 운영하는 중, pod 들이 terminating 단계에 진입하는것에 대해 Observing 할 필요가 생겼다.
인터넷 검색을 하면 SIGTERM
신호를 받아 처리를 하면 된다고 하는데 해당 신호가 운영중인 node 서버에선 Observing 이 되지 않았다.
이유는 Dockerfile 에서 서버를 실행할 때 CMD node dist/server.js
형태로 서버를 실행하기 때문이었다.
이를 CMD ["node", "dist/server.js"]
형태로 수정하니 SIGTERM
신호를 정상적으로 Observing 할 수 있게 되었다.
Before Dockerfile
FROM node:6.7.0
MAINTAINER kanziw <[email protected]>
ENV NODE_ENV production
COPY package.json .
RUN npm i
COPY path/key.json key.json
ADD dist dist
ENV PORT 8080
EXPOSE 8080
CMD node dist/index.js
After Dockerfile
FROM node:6.7.0
MAINTAINER kanziw <[email protected]>
ENV NODE_ENV production
COPY package.json .
RUN npm i
COPY path/key.json key.json
ADD dist dist
ENV PORT 8080
EXPOSE 8080
CMD ["node", "dist/index.js"]
SIGTERM Observing sample code
process.on('SIGTERM', () => {
console.log('SIGTERM message observed!')
})