RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 612160
Accepted
while1pass
while1pass
Asked:2020-01-08 19:40:08 +0000 UTC2020-01-08 19:40:08 +0000 UTC 2020-01-08 19:40:08 +0000 UTC

Docker 镜像中包含什么

  • 772

Django 上有一个网站,在生产服务器上我使用 uWSGI / Nginx bundle 启动,本地开发是 Django virtualenv / dev-server

从一些关于 SO 的问题中:

  1. 分发 Docker 镜像

  2. 在生产服务器上运行 Docker 镜像

  3. 从 Docker 镜像启动站点 VS 使用传统方式启动站点(uWSGI、Nginx、Apache)

又来了几个。

Docker 镜像中包含什么?

我们有一个生产版本和一个开发版本。据我了解,生产分布在存储库中。

为开发者版本(对我来说,项目代码和 virtualenv)创建一个 docker 镜像有意义吗?还是开发人员只需要存储库中的代码即可开始开发?

生产 docker 镜像是在哪里创建的?

生产服务器上有一个项目在指定的包上运行 - uwsgi/nginx/packer 具有生产设置。我应该在生产服务器上收集图像吗?

администрирование
  • 1 1 个回答
  • 10 Views

1 个回答

  • Voted
  1. Best Answer
    Mikhail Vaysman
    2020-01-09T04:20:32Z2020-01-09T04:20:32Z

    应该没有镜像的生产版本和非生产版本的概念。开发人员、测试人员、维护人员和其他所有人都必须使用相同版本的映像。

    开发过程可以以完全不同的方式安排,但如果使用 docker 镜像(例如,由另一个组开发的服务器)作为外部依赖,那么它应该与其他需求相同的来源 - 测试,操作等。

    如何、在何处以及使用什么 docker 映像创建?

    成像过程必须完全自动化以避免错误并使过程可重复。

    大致来说,制作图像的过程是这样的(我省略了一些步骤):

    1. 开发人员完成代码并在本地进行测试,包括构建镜像。
    2. 开发人员将代码上传到版本控制系统。
    3. 机器人收集项目并创建用于部署的工件(缩小所有内容,将其组合成一个通用包等)。
      1. 可选步骤 - 工件被放置在存储中。
    4. 机器人构建一个 docker 镜像。
      1. 可选步骤 - 机器人在图像上签名。
    5. 机器人将图像上传到注册表。

    如果没有特定要求,那么可以使用任何持续集成服务器 - Jenkins、TeamCity、Bamboo等来管理创建过程。它们都有相应的插件,或者您可以编写简单的 shell 脚本并使用标准命令创建图像docker build。

    docker 镜像中应该包含什么?

    这个问题很难给出明确的答案,因为很大程度上取决于图像的类型和个人喜好。我将写下我将如何处理Django服务器。

    我对Django的工作不多,所以如果我说的不正确,请纠正我。

    如果项目刚刚开始并且服务的负载很小,那么我会将所有内容(数据库除外)放在一个图像中。那些。该图像将包含:

    • 作为系统安装的固定版本Python (没有virtualenv等)
    • 具有正确设置的nginx/Apache固定版本
    • 您的应用程序本身,作为部署工件并部署在图像中

    数据库要么在单独的镜像中,要么在不使用容器化的单独服务器上。如果数据库以单独的方式运行,那么注意将数据保存到外部(相对于容器)磁盘分区很重要。否则,容器重启时数据会丢失。

    如果负载很大并且有很多静态页面,那么我会制作几张图片:

    1. 带有静态页面的图像
      • nginx/阿帕奇
      • 应用程序的静态部分
    2. 带有动态部分的图像
      • Python
      • 您的应用程序的一部分(Django)
    3. 平衡器图像(可选)
      • nginx/HAProxy/清漆/等

    如果项目非常大,那么静态和动态部分可能由不同的团队制作,在这种情况下,他们将负责为Dockerfile他们的项目部分做准备。

    • 4

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    Python 3.6 - 安装 MySQL (Windows)

    • 1 个回答
  • Marko Smith

    C++ 编写程序“计算单个岛屿”。填充一个二维数组 12x12 0 和 1

    • 2 个回答
  • Marko Smith

    返回指针的函数

    • 1 个回答
  • Marko Smith

    我使用 django 管理面板添加图像,但它没有显示

    • 1 个回答
  • Marko Smith

    这些条目是什么意思,它们的完整等效项是什么样的

    • 2 个回答
  • Marko Smith

    浏览器仍然缓存文件数据

    • 1 个回答
  • Marko Smith

    在 Excel VBA 中激活工作表的问题

    • 3 个回答
  • Marko Smith

    为什么内置类型中包含复数而小数不包含?

    • 2 个回答
  • Marko Smith

    获得唯一途径

    • 3 个回答
  • Marko Smith

    告诉我一个像幻灯片一样创建滚动的库

    • 1 个回答
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Алексей Шиманский 如何以及通过什么方式来查找 Javascript 代码中的错误? 2020-08-03 00:21:37 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    user207618 Codegolf——组合选择算法的实现 2020-10-23 18:46:29 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5