在docker容器中使用本地文件

在docker容器中使用本地文件,docker,Docker,我正在为我的go应用程序编写dockerfile。在这里,我需要一个位于本地计算机上的/home/saivamsi/.kube/config中的文件。如果我在代码中直接使用它,它会显示一个错误,即找不到任何文件或目录。所以,我开始使用卷,但我不知道哪里出了问题,我无法在我的代码中使用该文件 FROM golang:1.14.0 ENV HOMEABC=/home/saivamsi WORKDIR /go/src/bifrost VOLUME src="${HOMEABC}/.kube/

我正在为我的
go
应用程序编写
dockerfile
。在这里,我需要一个位于本地计算机上的
/home/saivamsi/.kube/config
中的文件。如果我在代码中直接使用它,它会显示一个错误,即找不到任何文件或目录。所以,我开始使用卷,但我不知道哪里出了问题,我无法在我的代码中使用该文件

FROM golang:1.14.0

ENV HOMEABC=/home/saivamsi

WORKDIR  /go/src/bifrost

VOLUME  src="${HOMEABC}/.kube/config",target="/go/src/bifrost/config"

COPY --chown=bbadmin:bbadmin . /go/src/bifrost

COPY go.mod go.sum ./

RUN go mod download

RUN go build -o main .

#EXPOSE 8001

CMD ["./main"]
# CMD ["tail", "-f", "/dev/null"]

在Dockerfile中使用
指令是不正确的。各国:

主机目录在容器运行时声明:主机目录(挂载点)本质上依赖于主机。这是为了保持映像的可移植性,因为不能保证给定的主机目录在所有主机上都可用。因此,无法从Dockerfile中装载主机目录。卷指令不支持指定主机目录参数创建或运行容器时必须指定装入点。

要在运行时将主机上的
$HOME/.kube
目录装载到容器中,您需要在
docker run
命令中指定
--volume
-v

例如,首先从Dockerfile中删除
指令。然后,您将运行如下所示的操作:

docker run --volume $HOME/.kube:/go/src/bifrost <image name>
docker run——卷$HOME/.kube:/go/src/bifrost
这将把主机上的
$HOME/.kube
目录装载到运行容器中的
/go/src/bifrost
目录。然后,配置文件将在运行时出现在
/go/src/bifrost/config

注意:此解决方案仅在运行容器的主机上存在kube配置文件时有效。要在映像本身中包含配置文件,它必须存在于Docker构建上下文中