我正在使用docker版本18.09.0。该映像构建无误。从映像创建容器后,即使我使用-it选项,该容器也会立即运行并以退出状态0退出。这是Dockerfile。
FROM node:8.15-alpine
WORKDIR /usr/src/app
COPY package*.json ./
COPY middleware middleware
COPY hfc-key-store hfc-key-store
COPY app.js ./
RUN apk --no-cache --virtual build-dependencies add \
python \
make \
g++ \
&& npm install \
&& npm install -g forever
ENTRYPOINT ["forever", "start", "-l", "/logsBackEnd.txt", "--spinSleepTime", "10000", "app.js"]
建立图片的命令:
docker image build -t nid-api:1.0 .
运行容器的命令:
docker run -it nid-api:1.0
答案 0 :(得分:0)
您需要使用-d在分离模式下运行
我可以想到有两个原因可以退出容器。
第一种情况似乎与您的错误有关。但是请始终以分离模式运行容器。默认情况下,新版本的docker始终以分离模式运行
也可以尝试以下方法。
Docker container will automatically stop after "docker run -d"
答案 1 :(得分:0)
forever
在docker容器中作为守护程序运行,这可能是导致容器立即退出的原因。
您可以尝试使用dumb-init启动在Docker容器中运行的任何进程,以便正确处理退出信号。
dumb-init使您可以简单地在命令前加上dumb-init。它充当PID 1,并立即将您的命令作为子进程生成,请小心处理接收到的信号并进行转发。
dumb-init作为PID 1运行,就像一个简单的初始化系统一样。它启动一个进程,然后将所有接收到的信号代理到以该子进程为根的会话。
由于您的实际进程不再是PID 1,因此当它接收到来自dumb-init的信号时,将应用默认的信号处理程序,并且您的进程将按预期运行。如果您的进程死了,那么dumb-init也将死掉,请小心清理可能仍然存在的任何其他进程。