Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 为什么Dockerfile中的命令失败了,而在容器中手动运行它却可以完美地工作?_Linux_Bash_Docker_Debian - Fatal编程技术网

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