我在docker上创建了一个Python + Flask网站。如果我执行“docker-compose up”,则可以在0.0.0.0:5000
上找到该网站。
我已标记并将容器推送到docker,我尝试从另一台计算机执行docker run mydomain/mycontainer
。它开始下载所有内容,但最后显示Status: Downloaded newer image for mydomain/mycontainer:latest
并且没有任何反应。
我尝试docker run mydomain/mycontainer python app.py
并显示“正在http://0.0.0.0:5000上运行”但如果我打开该网址,则会显示“此网站无法使用”。我看不到任何进程在端口5000上运行。
有什么想法吗?
答案 0 :(得分:3)
ip 0.0.0.0
是Docker镜像中的本地地址 。如果要访问外部图像(即计算机本地),则必须公开给定端口。这是EXPOSE parameter documentation。
如果您运行命令:
docker run -p 5000:5000 mydomain/mycontainer python app.py
您的服务器可通过以下方式访问:
答案 1 :(得分:0)
BTW,我制作了一个公共(和开源)Docker镜像,其中包含可用于构建Python Flask Web应用程序的所有铃声和口哨声。
它有uWSGI用于运行应用程序,Nginx用于提供HTTP和Supervisord来控制它们,因此您不必学习如何安装和配置所有这些来构建Python Flask Web应用程序。
使用Nginx的uWSGI似乎是部署Python Web应用程序的更强大(并且性能更好)的方法之一。以下是基准:http://nichol.as/benchmark-of-python-web-servers。
甚至还有一些模板项目可用于引导您自己的项目。而且,您不必克隆整个项目或其他东西,您只需将其用作基本图像。
Docker Hub:https://hub.docker.com/r/tiangolo/uwsgi-nginx-flask/