我有一个基于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/sh
和echo $FOO
有什么问题吗?
首先,您的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'