在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构建上下文中