记录docker-compose容器里面设置环境变量问题(Docker Compose 容器环境变量 $PATH 设置)

如果需要再docker-compose设置环境变量,直接再

environment: 
   - PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/flutter/bin

背景

需求:某些不带 bash 或者不支持/不方便对容器内环境进行更新的情况下更新环境变量。

Docker Compose 对环境变量的直接设置是支持的,但每个容器本身都带有不同的环境变量,在不改变原有情况下编辑往往都是在 .bashrc 添加 或者在当前终端执行 echo $PATH,那么对于部分不适用于直接编辑的容器,就需要更好的解决办法。

解决办法

首先得知道原有容器中的 PATH 环境变量内容,这点可以在容器的构建命令中查看,比如 portainer 支持在容器详情中直接查看:

如果容器本身支持 bash 登入,就直接登入执行 echo $PATH 输出即可获得环境变量,如果都不行,就得自己翻构建的 DockFile 去研究了,如果各方条件不满足又恰好容器不是基于常用 Linux ,那就有点难受了。

那么拿到环境变量后,在写 compose.yml 的时候就可以加上 PATH 的环境变量,并且可以用 : 的形式继续追加,比如我下面追加的 flutter 路径(当然这个路径是我挂载在容器中的,容器中本身并不存在)

environment: 
   - PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/flutter/bin

然后重新创建容器即可使用刚刚自行添加的环境变量也不会影响容器本身的运行。

以上;

参考:

docker-compose update container PATH

https://docs.docker.com/compose/compose-file/compose-file-v3/#environment

posted @ 2023-09-01 10:59  BUGMANWL  阅读(1123)  评论(0编辑  收藏  举报