环境变量和 Docker dev、staging 和 prod 之间的区别
Env vars and Docker differences between dev, staging, and prod
虽然我的具体示例涉及 Django、Docker 和 Heroku,但我认为这些都是非常笼统的 testing/QA 问题。
我在开发中使用 Selenium 测试了一个 dockerized Django 应用程序,确认我的静态文件正在从我的本地文件夹正确提供 (EXPECTED_ROOT = '/staticfiles/'
)。此应用程序已部署到 Heroku,我可以看到(在视觉上和在开发工具中)静态文件也从 CloudFront 正确提取。我想用我在开发中使用的相同测试将其形式化。我的第一个问题与 if/how 环境变量用于测试有关:
- 我是否将
EXPECTED_ROOT = 'https://<somehash>.cloudfront.net/'
作为环境变量添加到 Heroku 并在 Selenium 测试中使用它?
此外,为了 运行 这个暂存测试,我需要像在开发中一样在我的 Docker 图像中安装 Firefox。也许这在舞台上没问题,但在生产中我相信我应该以尽可能小的图像为目标。所以问题是关于staging和prod之间的区别:
- 我是否将 Firefox 保留在暂存映像中,运行 测试,然后发送
生产该 Docker 文件的副本,但现在没有 firefox?
感谢任何帮助。
Config Var
的想法是设置因环境而异的配置变量。话虽如此,您可以控制环境并可以定义所需的内容。
我个人会使用不同的方法:创建一个独立于环境的测试(例如,而不是测试 expected root
我会确认找到给定的 DIV ID
,或者其他一些元素)。
这足以确认测试成功并且功能按预期工作。
生产 Dockerfile 确实不需要 Selenium,并且可以与暂存文件不同。
虽然我的具体示例涉及 Django、Docker 和 Heroku,但我认为这些都是非常笼统的 testing/QA 问题。
我在开发中使用 Selenium 测试了一个 dockerized Django 应用程序,确认我的静态文件正在从我的本地文件夹正确提供 (EXPECTED_ROOT = '/staticfiles/'
)。此应用程序已部署到 Heroku,我可以看到(在视觉上和在开发工具中)静态文件也从 CloudFront 正确提取。我想用我在开发中使用的相同测试将其形式化。我的第一个问题与 if/how 环境变量用于测试有关:
- 我是否将
EXPECTED_ROOT = 'https://<somehash>.cloudfront.net/'
作为环境变量添加到 Heroku 并在 Selenium 测试中使用它?
此外,为了 运行 这个暂存测试,我需要像在开发中一样在我的 Docker 图像中安装 Firefox。也许这在舞台上没问题,但在生产中我相信我应该以尽可能小的图像为目标。所以问题是关于staging和prod之间的区别:
- 我是否将 Firefox 保留在暂存映像中,运行 测试,然后发送 生产该 Docker 文件的副本,但现在没有 firefox?
感谢任何帮助。
Config Var
的想法是设置因环境而异的配置变量。话虽如此,您可以控制环境并可以定义所需的内容。
我个人会使用不同的方法:创建一个独立于环境的测试(例如,而不是测试 expected root
我会确认找到给定的 DIV ID
,或者其他一些元素)。
这足以确认测试成功并且功能按预期工作。
生产 Dockerfile 确实不需要 Selenium,并且可以与暂存文件不同。