gpt4 book ai didi

python - 如何将 Docker 添加到 Django + Gunicorn + Nginx + Fabric

转载 作者:行者123 更新时间:2023-11-30 23:01:11 25 4
gpt4 key购买 nike

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

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

这已经存在问题,例如对于第一次部署,我需要手动从 GitHub 克隆。

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

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

最佳答案

我的建议是创建一个 Dockerfile,并在每次提交到发布分支时使用某种持续集成服务器(Jenkins、CircleCI 等)拉取您的代码,运行一组测试,然后构建并发布一个新的 Docker 镜像。如果您需要付款,您可能希望它是私有(private)的 - 这很容易做到,您可以设置一个私有(private)的 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 方式是将其作为第二个镜像和容器- 这很容易做到(在我看来,这是一种比目前看来将所有内容都放在一台机器中更好的架构),但需要一些注意。

关于python - 如何将 Docker 添加到 Django + Gunicorn + Nginx + Fabric,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34980685/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com