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

问题描述 投票:0回答:1

我有一个基于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有什么问题吗?

docker environment-variables gitlab-ci alpine
1个回答
0
投票

首先,您的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

© www.soinside.com 2019 - 2024. All rights reserved.