我有一个基于阿尔卑斯的码头工人,其预设环境为$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
来获得此环境
有什么问题吗?
答案 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'