【问题标题】:How to Add Docker to Django + Gunicorn + Nginx + Fabric如何将 Docker 添加到 Django + Gunicorn + Nginx + Fabric
【发布时间】:2016-01-24 19:54:11
【问题描述】:

我将 Django 与 Gunicorn 守护程序和 Nginx 一起用于代理和静态文件。我有一个非常简单的 Fabric 脚本来“自动化”一些操作:

  1. 我们在本地计算机上处​​理 virtualenv
  2. 我们只将应用程序推送到我们的 GitHub 存储库
  3. 我们通过 ssh 连接到服务器,并运行 GitHub 存储库中的结构脚本
  4. 它从 GitHub 拉取,如果需要合并,重新启动 Nginx 和 Gunicorn

这个已经有问题了,比如第一次部署,我需要手动从GitHub克隆。

现在,我们正处于将应用程序发送给客户的阶段,以便他们可以托管自己的服务器(我们可能需要在不久的将来进行扩展)。他们需要 Docker 容器部署在自己的服务器上。我将通过 ssh 连接到他们的服务器以更新我们应用程序的部署。

但是,我很难弄清楚实现自动化的最佳方法是什么,即每次我们使用 Fabric 发布新版本时我需要采取的操作顺序。

【问题讨论】:

  • 至少有一些使用烧瓶制作 docker 容器的教程。您应该创建一个 requirements.txt 文件列出所有依赖项并将其包含在版本控制中。您不需要使用 Fabric 进行太多自动化操作,只需从 git 下载 tarball,解压缩,然后运行docker build,它将在 docker 容器中安装 nginx 和您的依赖项。 github.com/atupal/dockerfile.flask-uwsgi-nginx
  • 您是否在步骤 3 中手动 sshing?还是自动化的?
  • @jumbopap 感谢您的评论,我的要求已经在requirements.txt 文件中。我的问题更多是关于如何自动化这个,因为我不想手动构建一个 docker 容器。我猜Fabric 变得多余了,因为我可以从我的 git 存储库中提取并在Dockerfile 中安装需求。
  • @dm03514 我手动sshing。但关于我之前的评论,我想知道如何实现自动化。

标签: python django docker fabric


【解决方案1】:

我的建议是创建一个 Dockerfile,并在每次提交到发布分支时使用某种持续集成服务器(Jenkins、CircleCI 等)拉取您的代码、运行一组测试,然后构建并发布一个新的 Docker 映像.如果您需要付款,您可能希望它是私有的 - 这很容易做到,您可以设置一个私有 docker 注册表。您甚至可能会发现这比您当前的内部工作流程更好,因为它完全是自动化的。

以下是您的 Dockerfile 的示例:

FROM debian:stable
ADD . /code
WORKDIR /code
RUN apt-get update && apt-get install -y python-dev
RUN pip install -r requirements.txt
CMD python run.py

这只是一个示例,我不知道您的代码是如何构造的,但它假定 Dockerfile 与脚本 run.py 对等,该脚本知道如何运行。它还假设您想使用 debian:stable - 那里有很多选项,您需要选择最适合您的选项。它还假设您将依赖项组织在 requirements.txt 文件中。最后,我只是将 apt-get 放在那里,以展示如何运行任意命令并可能安装 python 的开发工具。

根据结构脚本的复杂程度,Dockerfile 可以完全替代它,或者您也可以将结构脚本作为 Dockerfile 中的一个步骤运行。

您可以在此处找到有关 Dockerfile 格式的更多信息:https://docs.docker.com/engine/reference/builder/

编辑:我应该补充一下 - 显然,您需要做出一些决定,以了解如何支持将 nginx 混合使用,因为典型的 docker 方式是将其作为第二个图像和容器- 这很容易做到(在我看来,这是一个比目前看起来更好的架构,而不是在一台机器上),但这需要一些注意。

【讨论】:

    猜你喜欢
    • 2019-01-04
    • 2017-06-09
    • 1970-01-01
    • 2015-03-02
    • 2021-01-02
    • 2019-03-22
    • 2021-09-23
    • 1970-01-01
    • 2013-03-25
    相关资源
    最近更新 更多