我开始使用Docker,并且有一个简单的图像,我想在其中运行Go脚本。
这是图片:
FROM golang:alpine
ENV GO111MODULE=on \
CGO_ENABLED=0 \
GOOS=linux \
GOARCH=amd64
WORKDIR /build
COPY go.* ./
RUN go mod download
COPY . ./
RUN go build -o main .
WORKDIR /dist
RUN cp /build/main .
CMD ["/dist/main"]
我的Go代码部分在这里给我带来了问题:
opt := option.WithCredentialsFile("my-app-firebase-adminsdk.json")
app, err := firebase.NewApp(context.Background(), nil, opt)
client, err := app.Firestore(context.Background())
if err != nil {
log.Fatalln("error initializing app:", err)
}
当我运行
go install && my-app
时,它运行良好当我尝试在Docker容器中运行它时,出现以下错误消息。
初始化应用程序时出错:访问Firestore需要项目ID
这必须意味着
my-app-firebase-adminsdk.json
文件未包含在Docker容器中。我该如何解决?
我尝试在
COPY my-app-firebase-adminsdk.json .
行下添加COPY go.* ./
,但这没有帮助,最终出现了同样的问题。
最佳答案
事实证明,我不必很复杂。当我使用一个简单的Dockerfile
时,它起作用了,如下所示:
FROM golang:alpine
RUN mkdir /app
ADD . /app
WORKDIR /app
RUN go build -o main .
CMD ["/app/main"]
关于firebase - 需要Docker Firestore项目ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61915561/