store/manage 容器在 Docker 堆栈中的何处配置?

Where to store/manage configuration for a container in a Docker stack?

我正在开发一个基于 React 的网络应用程序。此应用程序应能够 运行 作为生产中的 Docker 容器。我在我的存储库中创建了一个 .env.development 文件,我可以在其中配置应用程序将连接到的 API 端点。

REACT_APP_API_BASE_URL=http://localhost:8180/api

运行 我本地机器上的容器用这种方式工作正常。

现在我想 运行 这个容器在 Docker 堆栈中,所以我配置了 docker-compose.yml

  1. 我应该在哪里以及如何 store/manage 上面的配置,以便 Docker 堆栈能够获取它?有没有类似 "recommended way" 的东西?
  2. docker-compose.ymlenvironment 部分定义此参数是否足够?或者我是否需要使用 Docker 配置甚至 Docker 秘密之类的东西?

如果我们订阅一次构建运行-随处构建的方法,那么你是对的,我们的目标应该是一次构建容器,运行 它可以在任何环境中使用通过修改它的环境变量。

修改环境变量并不一定意味着将值(如 API 键)直接传递给您的应用程序,但您可以使用环境变量指向 vault or etcd 服务并使用这些工具 bootstrap 您的应用程序并构建您的配置文件。

我建议向您的容器添加一个初始化层(使用 ENTRYPOINT),在触发 CMD 之前配置您的应用程序。这可以是设置数据库连接、预热缓存或安装依赖项的任何内容。

如果入口点不好,您肯定会搬起石头砸自己的脚。请务必查看一些流行的图像,了解它们如何处理这些情况 - postgres 是一个很好的图像。