![](/img/trans.png)
[英]How to mount a docker container so that I can run python scripts, which are stored in the inside of the container
[英]Docker executes python scripts only when I stopping the container
我正在尝试为我的 python 应用程序构建一个 Docker 映像(aiohttp 上的一个小 api,带有几个端点)
FROM python:3
WORKDIR /home/emil/Projects/elastic_simple_engine
COPY . .
RUN pip3 install -r requirements.txt
EXPOSE 5000/tcp
CMD ["python3", "entry.py"]
Dockerfile 的最后一行运行一个 python 脚本,它启动aiohttp.web.Application()
:
# entry.py
# ...a few dozens of code lines above...
if __name__ == '__main__':
print('Initializing...')
aiohttp.web.run_app(app, host='127.0.0.1', port=5000)
构建映像后,我尝试运行容器: $ docker run -p 5000:5000 myapp
Docker 静默运行容器,shell 中没有任何输出,但我无法访问我的应用程序的主机: 127.0.0.1:5000
: 127.0.0.1:5000
(当我在没有 docker 的情况下启动它时,一切正常。
只有当我停止容器时,它才会在控制台中打印应在应用程序启动和关闭期间显示的行:
Initializing...
======== Running on http://127.0.0.1:5000 ========
(Press CTRL+C to quit)
请帮我弄清楚我做错了什么。
TLDR
将主机设置为0.0.0.0
127.0.0.1
是本地接口的 IP 地址。 它只能在同一主机内通信。
0.0.0.0
意味着服务器(在此上下文中)将侦听每个可用的网络接口(包括127.0.0.1
)。
在这里,由于您没有共享 docker 网络,因此127.0.0.1
仅在容器内部可用,而不能从容器外部使用。 您应该使用0.0.0.0
从容器外访问,或通过--network="host"
中docker run
,但是这可能与端口共享等并发症。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.