无法从Docker容器内部获取环境

时间:2019-12-07 05:52:42

标签: docker environment-variables gitlab-ci alpine

我有一个基于阿尔卑斯的码头工人,其预设环境为$FOO

FROM alpine:3.9
ARG FOO
ENV FOO ${FOO}

我使用gitlab ci中的run命令传递变量:docker build --build-arg FOO=$BAR .
然后,我尝试docker run -it container_name echo $BO_USER并获得BAR。
但是我既无法从我的应用程序内部运行也无法通过交互式外壳程序docker run -it container_name /bin/shecho $FOO来获得此环境
有什么问题吗?

1 个答案:

答案 0 :(得分:1)

首先,您的Dockerfile中没有ARG FOO,应该是

构建

export BAR=my_user && docker build --no-cache --build-arg BO_USER=$BAR .

我假设$ BAR是在主机上设置的变量

Dockerfile

FROM alpine
ARG BO_USER
ENV BO_USER=${BO_USER}
RUN echo "ENV is $BO_USER"

但是当您运行以下命令时,应该寻找BO_USER而不是FOO

docker run -it container_name /bin/sh and echo $BO_USER

您应该使用单引号,否则bash会在主机上寻找变量

docker run -it --rm image_name sh -c 'echo $BO_USER'

enter image description here