首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法使用Dockerfile CMD启动2个任务

无法使用Dockerfile CMD启动2个任务
EN

Stack Overflow用户
提问于 2018-03-24 21:17:53
回答 1查看 1.2K关注 0票数 0

我有一个关于带有CMD命令的Dockerfile的问题。我正在尝试设置一个服务器,它需要在启动时在docker容器中运行2个命令。我可以单独运行1或其他服务,但是如果我尝试将它脚本化为同时运行2个服务,它就会失败。我已经尝试过nohup的各种变体& linux任务回滚,但我没有能够解决它。

以下是我正在努力实现的项目:https://djangofan.github.io/mountebank-with-ui-node/

代码语言:javascript
运行
复制
#entryPoint.sh
#!/bin/bash
nohup /bin/bash -c "http-server -p 80 /ui" &
nohup /bin/bash -c "mb --port 2525 --configfile /mb/imposters.ejs --allowInjection" &
jobs -l

显示此输出,但端口未侦听:

代码语言:javascript
运行
复制
djangofan@MACPRO ~/workspace/mountebank-container (master)*$ ./run-container.sh 
f5c50afd848e46df93989fcc471b4c0c163d2f5ad845a889013d59d951170878
f5c50afd848e46df93989fcc471b4c0c163d2f5ad845a889013d59d951170878   djangofan/mountebank-example   "/bin/bash -c /scripts/entryPoint.sh"   Less than a second ago   Up Less than a second   0.0.0.0:2525->2525/tcp, 0.0.0.0:4546->4546/tcp, 0.0.0.0:5555->5555/tcp, 2424/tcp, 0.0.0.0:9000->9000/tcp, 0.0.0.0:2424->80/tcp   nervous_lalande
[1]-     5 Running                 nohup /bin/bash -c "http-server -p 80 /ui" &
[2]+     6 Running                 nohup /bin/bash -c "mb --port 2525 --configfile /mb/imposters.ejs --allowInjection" &

这是我的Dockerfile:

代码语言:javascript
运行
复制
FROM node:8-alpine

ENV MOUNTEBANK_VERSION=1.14.0
RUN apk add --no-cache bash gawk sed grep bc coreutils
RUN npm install -g http-server
RUN npm install -g mountebank@${MOUNTEBANK_VERSION} --production
EXPOSE 2525 2424 4546 5555 9000
ADD imposters /mb/
ADD ui /ui/
ADD *.sh /scripts/

# these work when ran 1 or the other
#CMD ["http-server", "-p", "80", "/ui"]
#CMD ["mb", "--port", "2525", "--configfile", "/mb/imposters.ejs", "--allowInjection"]

# this doesnt yet work
CMD ["/bin/bash", "-c", "/scripts/entryPoint.sh"]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-24 22:20:26

停靠容器中的一个进程必须在后台模式下运行,因为停靠容器正在运行,而其中的主进程正在运行。

/scripts/entryPoint.sh应该是:

代码语言:javascript
运行
复制
#!/bin/bash
nohup /bin/bash -c "http-server -p 80 /ui" &
nohup /bin/bash -c "mb --port 2525 --configfile /mb/imposters.ejs --allowInjection"

在您的Dockerfile中,其他一切都很好。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49470044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档