Linux 为什么Dockerfile中的命令失败了,而在容器中手动运行它却可以完美地工作?
我正在创建一个简单的Linux 为什么Dockerfile中的命令失败了,而在容器中手动运行它却可以完美地工作?,linux,bash,docker,debian,Linux,Bash,Docker,Debian,我正在创建一个简单的Dockerfile: FROM debian:buster RUN apt update && apt upgrade -y RUN apt install git golang -y RUN echo "export GOPATH=$HOME" >> ~/.bash_profile RUN source /root/.bash_profile RUN echo $GOPATH 但它在source/root/.bash\u profile处
Dockerfile
:
FROM debian:buster
RUN apt update && apt upgrade -y
RUN apt install git golang -y
RUN echo "export GOPATH=$HOME" >> ~/.bash_profile
RUN source /root/.bash_profile
RUN echo $GOPATH
但它在source/root/.bash\u profile
处失败,错误如下:
/bin/sh: 1: source: not found
The command '/bin/sh -c source /root/.bash_profile' returned a non-zero code: 127
我注释了这行代码,构建了图像,然后在容器中运行了相同的命令,然后运行良好
我尝试了许多变体,包括手动调用/bin/bash
,但在Dockerfile
中似乎不起作用
有人知道我做错了什么吗
[编辑]
我还试着用
RUN export GOPATH=$HOME
及
但返回后会给出一个空结果。将此添加到dockerfile:
FROM debian:buster
RUN apt update && apt upgrade -y
RUN apt install git golang -y
ARG GOPATH=/PATH/TO/
ENV GOPATH ${GOPATH}
RUN echo $GOPATH
这是在Docker中提供系统变量的正确方法,source和export只在Docker文件中的一个步骤中起作用
运行/bin/bash-c“source/root/.bash\u profile”
FROM debian:buster
RUN apt update && apt upgrade -y
RUN apt install git golang -y
ARG GOPATH=/PATH/TO/
ENV GOPATH ${GOPATH}
RUN echo $GOPATH