如何在 docker 容器中为每个不同的用户更新不同值的环境变量 for container is runnig

How to update environment variable for different value for each different users in docker container for container is runnig

首先,如果我需要谈谈我想做的情况,我有 docker 个容器,我用 docker-compose.yml 文件设置。在这个 docker 图像中,还有 2 个用户(“user1”和“user2”),其中一个是“root”用户。 (我在 Dockerfile 中创建了它们,到目前为止一切正常)。为这些用户定义了一个环境变量。 (回声 $env_val)。我希望这个变量对每个用户都有一个单独的值,并且我想动态管理这个值。换句话说,我想以用户为基础管理“docker-compose.yml”中使用的“环境”变量。

version: '3'
services:
   app1:
      image: image1
      enviromnet:
         - env_val=34052    # this value default 34034 but for user1 value is assing 34052
      entrypoint: /bin/sh/ start_container.sh

   app2:
      image: image1
      enviromnet:
         - env_val=34028    # this value default 34028 but for user2 value is assing 34028
      entrypoint: /bin/sh/ start_container.sh

我的docker-compose.yml文件是这样的。这里的 env_val 变量被赋予了我仅为 root 用户指定的值。但我希望我给的值只分配给我在图像中选择的用户。我没有看到任何解决方案。您对我满足这个需求有什么建议吗?

注意:我尝试了这些解决方案

提前感谢您的帮助:)

尽管这不是适合我的解决方案,但我找到了一种方法。我写了一个新脚本。该脚本采用我将更改的环境变量的值作为参数。我正在将此命令发送到主机上的 docker 容器。

#!/bin/bash

docker exec -u 0 container_name /bin/bash -c "echo export env_val= >> /home/user1/.bash_profile; su - user1; source ~/.bash_profile; <run_another_command>"

此命令将我需要的命令附加到 运行ning 容器内我想要的用户的 .bash_profile 的末尾。它还使用我想要的用户登录并获取 .bash_profile 文件。之后,我可以在我想要的配置中启动我将 运行 的应用程序。

这样,当我用这个用户登录的时候,我想要的配置就完成了。最后,当我停止或删除容器时,我的图像不受此更改的影响。