如何解决在MacOS(Golang)中制作docker镜像时出现/bin/sh: 1: source: not found的问题?

Jiw*_*n94 5 environment-variables go docker dockerfile

几个小时前我刚刚开始学习 docker,并尝试制作自己的 docker 镜像。当我尝试制作 Dockerfile 和 docker 映像时,收到此错误消息“/bin/sh: 1: source: not find”。

首先,我在 .env 文件中管理环境变量。每当我更改 env 文件时,我都会运行此命令 $source .env 并 go build 。然后去运行main.go。因此,我尝试设置我的 Dockerfile,RUN source.env,但出现了上面提到的错误。

我试过

  • 跑步 。设置.env & . 设置了但是没用
  • 将文件名更改为setting.env,然后运行。./setting.env & . ./setting & ["/bin/bash", "-c", "source ~/.setting.env"] 也不起作用......

我真的很感谢你的帮助!

编辑1]

FROM golang:latest

WORKDIR /go/src/todo_list
# RUN go mod init github.com/jiwanjeon/go-todolist
# RUN go get github.com/jinzhu/gorm
# RUN go get github.com/lib/pq
# RUN go get github.com/gorilla/mux
# RUN go get github.com/stretchr/testify
# RUN go get github.com/jinzhu/gorm/dialects/postgres
# source .env --> . setting.env & . setting & . ./setting.env & . ./setting & ["/bin/bash", "-c", "source ~/.setting.env"]
RUN . .env
COPY go.mod ./
COPY go.sum ./
RUN go mod download
COPY . ./

WORKDIR /go/src/todo_list/cmd/main
EXPOSE 9010
RUN go mod verify
RUN go build main.go
CMD ["./main", "-migrate"]
# RUN ./main -migrate
Run Code Online (Sandbox Code Playgroud)

编辑2]

我试过

  • RUN /bin/bash -c ".setting.env" / "source setting.env" : 没有这样的文件或目录

goo*_*ahn 1

您的图像中似乎不包含 .env 文件。

将 .env 文件复制到映像中后尝试执行 source .env。