如何在 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 exec -it container_name bash
登录到这个容器并使用我选择的用户登录时su - user1
,我看不到我分配的值。默认值已设置。
我的命令:docker exec -u 0 container_name /bin/bash -c "su - user1; source ~/.bash_profile; export env_val=34052"
这个解决方案决定了镜像创建阶段的相关环境。就我而言,我想在创建图像文件时更改此变量的值,而 运行 图像。
提前感谢您的帮助:)
尽管这不是适合我的解决方案,但我找到了一种方法。我写了一个新脚本。该脚本采用我将更改的环境变量的值作为参数。我正在将此命令发送到主机上的 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 文件。之后,我可以在我想要的配置中启动我将 运行 的应用程序。
这样,当我用这个用户登录的时候,我想要的配置就完成了。最后,当我停止或删除容器时,我的图像不受此更改的影响。
首先,如果我需要谈谈我想做的情况,我有 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 exec -it container_name bash
登录到这个容器并使用我选择的用户登录时su - user1
,我看不到我分配的值。默认值已设置。 我的命令:docker exec -u 0 container_name /bin/bash -c "su - user1; source ~/.bash_profile; export env_val=34052"
这个解决方案决定了镜像创建阶段的相关环境。就我而言,我想在创建图像文件时更改此变量的值,而 运行 图像。
提前感谢您的帮助:)
尽管这不是适合我的解决方案,但我找到了一种方法。我写了一个新脚本。该脚本采用我将更改的环境变量的值作为参数。我正在将此命令发送到主机上的 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 文件。之后,我可以在我想要的配置中启动我将 运行 的应用程序。
这样,当我用这个用户登录的时候,我想要的配置就完成了。最后,当我停止或删除容器时,我的图像不受此更改的影响。