在Alpine linux中设置系统默认环境变量的位置在哪里?

35

我知道,在Ubuntu中,您可以在/etc/environment中设置环境变量的默认值。但是在Alpine Linux中,我没有看到该文件。是否有不同的位置来设置系统范围的默认值?


这里的/etc/lbu/lbu.conf怎么样? - last10seconds
@Rick 没有看到效果。你知道在Alpine中有没有关于此的好文档吗?或者你有更多设置Alpine环境变量的细节、技巧和窍门吗? - 1ijk
我也在寻找答案... 你有找到什么吗? - Vlad Frolov
很遗憾,我没有找到太多信息。我所发现的唯一其他信息来自https://www.washington.edu/alpine/tech-notes/config-notes.html,在标题“配置继承”下。 - last10seconds
1
@Rick,那不是正确的Alpine;你的URL指的是Alpine邮件用户代理,而不是适用于容器的最小Linux操作系统。 - Law29
这里也有相同的问题。 - Hizzy
2个回答

46

看起来/etc/profile是我能找到的最好地方。至少,一些环境变量是在那里设置的:

export CHARSET=UTF-8
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
export PAGER=less
export PS1='\h:\w\$ '

umask 022

for script in /etc/profile.d/*.sh ; do
        if [ -r $script ] ; then
                . $script
        fi
done

根据 /etc/profile 的内容,您可以在 /etc/profile.d/ 中创建一个以 .sh 扩展名的文件,并且每次加载环境变量时都必须传递 --login,例如:docker exec -it container sh --login

10
如何让/etc/profile在启动alpine docker容器时自动运行? 我已经添加了一些别名到aliases.sh文件中,并将其放置在/etc/profile.d中,但是当我使用docker run -it [my_container] sh启动容器时,我的别名无效。每次都必须从命令行手动输入. /etc/profile。是否需要其他配置才能在登录时运行/etc/profile? 如有任何见解,敬请赐教! - Jeff Kilbride
3
请使用sh --login而不是仅仅使用sh - Vlad Frolov
2
@VladFrolov 谢谢!我在另一个帖子中问了这个问题,那里也得到了答案。这个也可以用:sh -l - Jeff Kilbride
1
@Tonsic,你可能会对这个解决方案感兴趣,它可以在使用sudo时保留环境变量。 - Vlad Frolov
1
对于任何想知道的人,这也适用于非root用户的cron作业。例如,在作为root运行crond的Docker容器中,并且有一个针对用户foo的crontab运行需要来自/etc/profile环境变量的cron作业。 - Orlando
显示剩余2条评论

17
如果您正在谈论Alpine Docker镜像,则可以在Dockerfile中定义这些环境变量,如下所示。在这里,您无需每次传递--login。这些变量将自动在整个系统范围内全局可用。

如果您在讨论Alpine Docker镜像,则可以像下面这样在Dockerfile中定义这些env变量。 在这里,您无需每次传递--login。这些变量将自动在整个系统范围内全局可用。

FROM alpine
ENV GITHUB_TOKEN=XXXXXXXXXXXXXXXXXXXXXXX \
    COMPOSER_HOME=/home/deploy/.composer

你也可以在 /etc/profile 中定义你的别名(alias)、环境变量等,并在 Dockerfile 中定义一个 ENV 来自动引用该配置文件,例如:

FROM alpine
ENV GITHUB_TOKEN=XXXXXXXXXXXXXXXXXXXXXXX \
    COMPOSER_HOME=/home/deploy/.composer
ENV ENV="/etc/profile" 

2
这实际上是一个非常好的选择,没有--login的开销。谢谢! - Eti
3
快速提示:由ENV设置的值将被所有使用您的镜像作为FROM的其他Docker镜像继承。当您的/etc/profile在其他子镜像中可用时,可能会产生意想不到的后果。 - Slav

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接