我有一个用于导出Env变量的shell脚本。这个脚本调用一个python脚本来从web服务中获取某些值,这些值需要在运行主python脚本之前存储。在
我尝试过使用RUN . /bot/env/setenv.sh
,但这似乎不能使env变量在最终容器中可用。我尝试过将内容放入以调用python jbot.py
结尾的entrypoint.sh
文件中,但容器从未完成其设置(我假设是因为入口点内的脚本是一个连续的循环?)在
我的entrypoint.sh
如下所示:
#!/bin/bash
. /jirabot/env/setenv.sh
python jbot.py
而setenv.sh
只是:
我的完整Dockerfile是:
FROM python:2
COPY jirabot/ /jirabot/
RUN pip install slackclient schedule jira
WORKDIR /jirabot
#CMD [ "python", "jbot.py" ]
ENTRYPOINT [ "/jirabot/entrypoint.sh" ]
当我执行docker run bot
操作时,我可以验证应用程序是否正在运行(bot会适当地响应我的请求)。但是,jbot.py
中的所有print()
语句都不在输出中——因此我有两个主要问题:
为什么我的entrypoint.sh
只是挂起容器不返回?我做了docker run bot
,而且我从未返回终端的控制权。然而,这个机器人似乎启动良好。
当我打开第二个终端并执行docker logs <container>
时,为什么我没有从jbot.py
获取任何打印语句?
fwiw,my jbot.py
是一个while True:
循环,监视输入。在
对于第一个问题,您应该查看
docker run
的文档。很快,你将与集装箱相连,这样你就永远不会回到你的码头。为了分离,您需要添加选项-d
。在启动容器的常用命令是
docker run -idt <container>
。在对于您的第二个问题,信息不足以确定问题所在,对不起。也许你可以在正确启动容器后再试一次。在
- 您没有运行docker容器as a daemon。在
^{bq}$相关问题 更多 >
编程相关推荐