我通过运行命令docker-compose build来调用docker文件,通过我的docker撰写文件。我在.env文件中定义了我的环境变量。当我这样做的身材,在我的搬运工文件,一切正常,除了这行将环境变量传递到通过撰写yaml构建的docker文件
RUN git config --global user.email ${USER_NAME}
它失败的消息
←[31mERROR←[0m: Service 'git' failed to build: The command '/bin/sh -c git confi
g --global user.email ${USER_NAME}' returned a non-zero code: 1
但是,如果我赞同集装箱时$ {USER_NAME}(泊坞窗,撰写它可以正确打印出这个变量。
ENTRYPOINT echo ${USER_NAME}//this works
什么是在一个环境变量传递在泊坞窗文件运行命令的正确方法?
更新:这是文件的精简版
YAML文件
version: '2'
services:
git:
build:
context: ./git
args:
- USER_NAME
env_file:
- ./common.env
信封文件
USER_NAME="My test user"
泊坞文件:
FROM xxx
ARG USER_NAME
RUN git config --global user.name ${USER_NAME}
ENTRYPOINT git config --list
命令 体形:
docker-compose build git
运行:
docker-compose up git
构建失败,错误
RUN git config --global user.name ${USER_NAME}
---> Running in 7b67ddeae989
←[31mERROR←[0m: Service 'git' failed to build: The command '/bin/sh -c git config --global user.name ${USER_NAME}' returned a non-zero code: 1
包含一个更完整的docker-compose.yml和Dockerfile示例可以更容易地提供帮助。 – BMitch
您的'git'命令失败了,从提供的有限错误信息中,无法说明原因(是否安装了git)?尝试直接在容器中运行它,并确保它不会提示输入或提供不良的退出代码。您的'.env'文件内容也可能有助于调试。 – BMitch
添加了.env内容。如果我硬编码它的用户名。在运行时直接读取环境也可以。 – developer747