【问题标题】:Env vars and Docker differences between dev, staging, and prod环境变量和 Docker dev、staging 和 prod 之间的差异
【发布时间】:2022-01-16 06:51:55
【问题描述】:

虽然我的具体示例涉及 Django、Docker 和 Heroku,但我相信这些都是非常笼统的测试/QA 问题。

我有一个使用 Selenium 在 dev 中测试的 dockerized Django 应用程序,确认我的静态文件从我的本地文件夹 (EXPECTED_ROOT = '/staticfiles/') 中正确提供。这个应用程序被部署到 Heroku,我可以看到(视觉上和在开发工具中)静态文件也被正确地从 CloudFront 拉入。我想用我在开发中使用的相同测试来正式化它。我的第一个问题与环境变量是否/如何用于测试有关:

  • 我是否将例如 EXPECTED_ROOT = 'https://<somehash>.cloudfront.net/' 作为环境变量添加到 Heroku 并在 Selenium 测试中使用它?

此外,要在 staging 中运行此测试,我需要像在 dev 中一样在我的 Docker 映像中安装 Firefox。也许这在舞台上是可以的,但在产品中,我相信我应该瞄准尽可能小的图像。所以问题是关于 staging 和 prod 之间的区别:

  • 我是否将 Firefox 保留在我的暂存映像中,运行测试,然后发送 生产该 Dockerfile 的副本,但现在没有 Firefox?

感谢任何帮助。

【问题讨论】:

    标签: django docker testing heroku devops


    【解决方案1】:

    Config Var 的想法是设置因环境而异的配置变量。话虽如此,您可以控制环境并且可以定义自己的需求。

    我个人会使用不同的方法:创建一个独立于环境的测试(例如,我会确认找到给定的DIV ID 或其他元素,而不是测试expected root)。
    这足以确认测试成功并且功能按预期工作。

    生产 Dockerfile 确实不需要 Selenium,并且可能与 staging 不同。

    【讨论】:

    • 该测试的全部目的是确认在 dev 中静态文件是从一个地方提供的,而在 prod 中它们是从另一个地方提供的。它本质上是特定于环境的。例如,测试某个 div 是否存在在这里并没有真正的帮助。
    • 我明白了,这又取决于测试的目标,在您的情况下,可以使用您需要的设置定义一个 Config Var(并确保每个环境都已正确配置)
    • 我明白了,好的,谢谢。我会将您的回答视为答案,因为它解决了我的第一个问题。我可能应该创建 2 个不同的帖子,每个问题一个,这样就可以了。
    猜你喜欢
    • 2019-04-15
    • 2021-06-18
    • 1970-01-01
    • 1970-01-01
    • 2020-11-30
    • 2015-08-10
    • 1970-01-01
    • 2020-01-04
    • 1970-01-01
    相关资源
    最近更新 更多