创建 Docker UAT/Production 图像
Creating a Docker UAT/Production image
只是一个关于为关键环境创建 Docker 图像的最佳实践的快速问题。正如我们在现实世界中所知,部署到内部测试的 team/company 通常与部署到客户端测试环境和生产环境的人不同。这会成为一个问题,因为在创建 Docker UAT/production 图像时,所有应用程序配置信息可能不可用,例如与詹金斯。然后是关于存储在应用程序配置中的密码的问题。
所以我的问题是,"fully configured" 图像应该如何 Docker?在我看来,实际上不可能完全配置 Docker 图像,但必须省略一些应用程序密码等。但是话又说回来,这有点违背 Docker 图片的目的?
how "fully configured" should the Docker image be? The way I see it, it is in practice not possible to fully configure the Docker image, but some app passwords etc. must be left out. But then again this slightly defies the purpose of a Docker image?
便利性、安全性和灵活性之间总是需要权衡取舍。
使用零 运行 时间配置的图像对 运行 非常方便,但不是很灵活和敏感的配置,如密码将被暴露。
在 运行 时间进行所有配置的图像非常灵活,不会暴露敏感信息,但如果不提供默认值,使用起来会很不方便。如果用户不知道某些值,他们可能根本无法使用图像。
密码等敏感信息通常在 运行 决定将什么配置烘焙到图像中以及在 运行 时需要什么时。然而,情况并非总是如此。例如,您可能希望使用仅指向测试环境的零 运行 时间配置构建测试图像。无论如何,每个人都可以访问测试环境凭据,零配置对测试人员来说更方便,而且没有人会不小心 运行 针对错误的数据库进行构建。
对于凭据以外的配置(例如应用程序属性、日志级别、日志文件位置),组织结构和团队动态可能会决定您融入多少配置。在 devops 环境中,进行更改和构建新映像可能是无痛的。在这种情况下,根据需要烘焙尽可能多的配置是有意义的。如果运维和开发是分开的,则可能需要几天时间才能对图像进行微小的更改。在这种情况下,允许更多 运行 时间配置是有意义的。
回到最初的问题,我个人赞成为除凭据之外的所有内容选择合理的默认值,并仅在需要时允许 运行时间覆盖(不情愿配置的约定)。运行时配置对运维人员来说很方便,但它会让开发团队很难跟踪问题。
只是一个关于为关键环境创建 Docker 图像的最佳实践的快速问题。正如我们在现实世界中所知,部署到内部测试的 team/company 通常与部署到客户端测试环境和生产环境的人不同。这会成为一个问题,因为在创建 Docker UAT/production 图像时,所有应用程序配置信息可能不可用,例如与詹金斯。然后是关于存储在应用程序配置中的密码的问题。
所以我的问题是,"fully configured" 图像应该如何 Docker?在我看来,实际上不可能完全配置 Docker 图像,但必须省略一些应用程序密码等。但是话又说回来,这有点违背 Docker 图片的目的?
how "fully configured" should the Docker image be? The way I see it, it is in practice not possible to fully configure the Docker image, but some app passwords etc. must be left out. But then again this slightly defies the purpose of a Docker image?
便利性、安全性和灵活性之间总是需要权衡取舍。 使用零 运行 时间配置的图像对 运行 非常方便,但不是很灵活和敏感的配置,如密码将被暴露。 在 运行 时间进行所有配置的图像非常灵活,不会暴露敏感信息,但如果不提供默认值,使用起来会很不方便。如果用户不知道某些值,他们可能根本无法使用图像。
密码等敏感信息通常在 运行 决定将什么配置烘焙到图像中以及在 运行 时需要什么时。然而,情况并非总是如此。例如,您可能希望使用仅指向测试环境的零 运行 时间配置构建测试图像。无论如何,每个人都可以访问测试环境凭据,零配置对测试人员来说更方便,而且没有人会不小心 运行 针对错误的数据库进行构建。
对于凭据以外的配置(例如应用程序属性、日志级别、日志文件位置),组织结构和团队动态可能会决定您融入多少配置。在 devops 环境中,进行更改和构建新映像可能是无痛的。在这种情况下,根据需要烘焙尽可能多的配置是有意义的。如果运维和开发是分开的,则可能需要几天时间才能对图像进行微小的更改。在这种情况下,允许更多 运行 时间配置是有意义的。
回到最初的问题,我个人赞成为除凭据之外的所有内容选择合理的默认值,并仅在需要时允许 运行时间覆盖(不情愿配置的约定)。运行时配置对运维人员来说很方便,但它会让开发团队很难跟踪问题。