从Docker容器中公开WSGI应用程序

时间:2014-12-24 09:29:13

标签: flask docker wsgi

我在Google Compute Engine上运行了一个VM,托管由Apache / WSGI提供服务的Flask应用程序。此应用程序必须可通过Internet 通过 www.my_application.com访问。

在Docker容器内部通过WSGI公开应用程序的最佳方法是什么?

  • 是否有要使用的特定docker run命令?
  • 是否需要修改my_application.conf
  • 还有什么要知道/要做的事吗?

以下是my_application.conf

<VirtualHost *:80>
    ServerName www.my_application.com

    WSGIDaemonProcess my_application user=www-data group=www-data threads=5
    WSGIScriptAlias / /var/www/my_application/application.wsgi
    ErrorLog /var/log/my_application.log

    <Directory /var/www/my_application>
        WSGIProcessGroup my_application
        WSGIApplicationGroup %{GLOBAL}
        Order deny,allow
        Allow from all
    </Directory>
</VirtualHost>

1 个答案:

答案 0 :(得分:3)

这可能与您相关,也可能不相关,但我制作了一个公共(和开源)Docker镜像,其中包含可用于构建Python Flask Web应用程序的所有花哨功能。

它有uWSGI用于运行应用程序,Nginx用于提供HTTP和Supervisord来控制它们,因此您不必学习如何安装和配置所有这些来构建Python Flask Web应用程序。

Google Compute Engine可以运行Docker:https://cloud.google.com/compute/docs/containers

使用Nginx的uWSGI似乎是部署Python Web应用程序的更强大(并且性能更好)的方法之一。以下是基准:http://nichol.as/benchmark-of-python-web-servers

甚至还有一些模板项目可用于引导您自己的项目。而且,您不必克隆整个项目或其他东西,您只需将其用作基本图像。

Docker Hub:https://hub.docker.com/r/tiangolo/uwsgi-nginx-flask/

GitHub:https://github.com/tiangolo/uwsgi-nginx-flask-docker