我正在创建一个简单的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_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
和
RUN export GOPATH=/root
但是它之后的回声给出了空的结果。
答案 0 :(得分:3)
将此添加到您的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中提供系统变量的正确方法,源和导出只能在dockerfile中一步完成
答案 1 :(得分:-1)
请检查是否可行 运行/ bin / bash -c“源/root/.bash_profile”