我有一个服务器项目。处理程序提供一些来自 postgres 数据库的数据。对于连接,我有一个 CA.pem。当我在本地运行 main.go 时 - 它正在工作。CA.pem 位于 proj 文件夹中。它是这样调用的:
pem, err := ioutil.ReadFile("CA.pem")
if err != nil {
fmt.Fprintf(os.Stderr, "Failed to read the CA file:%s - %s", el, err)
return err
}
if ok := rootCertPool.AppendCertsFromPEM(pem); !ok {
fmt.Fprint(os.Stderr, "Failed to append PEM")
}
项目结构:
├──project/
├──main.go
├──Dockerfile
├──CA.pem
├──go.mod
├──...
├──folder1/
| ├─...
└──folder2/
└──...
Dockerfile 看起来像:
# syntax=docker/dockerfile:1
##
## Build
##
FROM golang:1.17 AS build
WORKDIR /app/proj
COPY go.mod .
COPY go.sum .
RUN go mod download
COPY . .
RUN go build -o ./out/proj .
##
## Deploy
##
FROM gcr.io/distroless/base-debian10
WORKDIR /
COPY --from=build /app/proj/out/proj /app/proj
EXPOSE 8080
ENTRYPOINT ["/app/proj"]
因此,当我尝试运行容器时,我收到此错误:
无法读取 CA 文件:太空船 - 打开 CA.pem:没有这样的文件或目录 连接到数据库交互期间出错:打开 CA.pem:没有这样的文件或目录
*spaceship - 数据库名称 *databaseinteractions - 我有“connect_to_db.go”文件的文件夹。
服务器正在运行。我专门创建了一个“状态”处理程序,它为我提供 201 响应。没关系。但是无法建立数据库连接。它看不到 CA.pem 文件。但为什么?可能我应该以不同的方式创建 docker 图像吗?或者以不同的方式读取文件?
感谢您的任何帮助!
波斯汪
相关分类