【发布时间】:2020-02-14 09:36:56
【问题描述】:
我正在尝试在 docker 容器退出时使用 nodejs 执行一个 javascript 文件。这就是我目前所得到的,我的 Dockerfile 内容如下所示。我无法在退出期间捕捉到 SIGINT 信号,因此无法运行 int_handler() 函数。我在下面提供的脚本有什么问题吗?
我运行命令docker-compose up 启动服务器,然后运行CTRL + C 退出。
FROM node:10.16.0-slim
ENV NPM_CONFIG_PREFIX=/home/node/.npm-global
ENV PATH=$PATH:/home/node/.npm-global/bin
RUN mkdir -p /home/node/app/node_modules && chown -R node:node /home/node/app
RUN mkdir -p /home/node/app/logs && chown -R node:node /home/node/app
WORKDIR /home/node/app
COPY package*.json ./
USER node
RUN npm install
COPY --chown=node:node . .
EXPOSE 8080
EXPOSE 8523
COPY ./docker-script.sh ./docker-script.sh
ENTRYPOINT ["./docker-script.sh"]
docker-script.sh 文件的内容如下所示:
#!/bin/bash
set -x
pid=0
int_handler() {
echo "handler"
node deactivator & pid="$!"
}
# setup handlers
trap 'kill ${!}; int_handler' SIGINT
# run application
node server & pid="$!"
# wait forever
while true
do
tail -f /dev/null & wait ${!}
done
我的 docker-compose.yml 文件
version: '3'
services:
mongo:
image: mongo:3.6
web:
image: myimage/imagexyz:0.9.1
restart: always
ports:
- "80:8081"
- "443:8524"
links:
- mongo
depends_on:
- mongo
【问题讨论】:
标签: javascript node.js shell docker docker-compose