Docker 镜像和容器的 DevOps 和环境变量

Posted

技术标签:

【中文标题】Docker 镜像和容器的 DevOps 和环境变量【英文标题】:DevOps and environment variables with Docker images and containers 【发布时间】:2022-01-17 22:32:26 【问题描述】:

我是 docker 新手,想了解如何处理映像/容器中的环境变量以及如何配置 CI/CD 管道。 首先,在深入了解命令等之前,我需要了解全局。我在互联网上搜索了很多,但在大多数情况下,我找到了如何创建、构建、发布图像的详细命令。

我有一个 .net 核心网络应用程序。众所周知,每个环境都有 appsettings.json 文件,例如 appsettings.development.json 或 appsettings.production.json。

在构建过程中,您可以提供环境信息,以便 .net 可以使用指定的环境变量(如连接字符串)构建应用程序。

我可以在 de Dockerfile 中定义相同的步骤,并将环境作为参数或定义为变量。这部分工作正常。

我的问题是,我是否必须为我的所有环境创建单独的图像?如果不是,我如何创建 1 个图像并使用它来创建一个容器并将其用于我的所有环境?最佳做法是什么?

【问题讨论】:

"我的问题是,我是否必须为我的所有环境创建单独的图像?" - 不,绝对不是。整个想法是通过环境变量配置应用程序。这是3rd factor of a 12factor app (12factor.net)。 在构建期间您可以提供环境信息 - 您描述的是运行时行为,而不是构建行为。 您可以根据自己的需要动态修改appsettings,类似于本文中的做法:***.com/questions/41349007/… 【参考方案1】:

我希望我正确理解了这个问题。如果环境是相同的框架,那么没有。在每个项目中,为 Docker 导入必要的文件,然后更新项目的 docker-compose.yml - 然后它将为该项目创建一个映像。使用 Docker Desktop(如果您更喜欢 CLI),您可以启动和停止容器。

【讨论】:

您好,感谢您的回答,您能给我提供更多信息吗?我是否必须创建/使用 docker-compose.yml 文件?或者你有一个简单教程的链接吗? @user7383193 如果只运行一个容器,则不需要使用 Compose 进行部署

以上是关于Docker 镜像和容器的 DevOps 和环境变量的主要内容,如果未能解决你的问题,请参考以下文章

Docker容器构建过程的安全性分析

docker中使用docker

docker 执行 docker system prune 导致Azure Devops build镜像失败

node项目怎么在离线环境生成容器镜像

布道微服务_20微服务容器DevOps

布道微服务_20微服务容器DevOps