为了账号安全,请及时绑定邮箱和手机立即绑定

使用 mysql 驱动程序时尝试在 docker 中构建我的 golang 应用程序时出错

使用 mysql 驱动程序时尝试在 docker 中构建我的 golang 应用程序时出错

Go
阿波罗的战车 2022-12-05 17:12:15
我有一个简单的应用程序,用于github.com/go-sql-driver/mysql连接到 MySQL 数据库并执行简单的查询。这一切在我的本地机器上运行良好,但是当我尝试使用 docker build 构建它时,我得到以下输出:[+] Building 4.1s (9/10) => [internal] load build definition from Dockerfile                                                               0.0s => => transferring dockerfile: 104B                                                                               0.0s => [internal] load .dockerignore                                                                                  0.0s => => transferring context: 2B                                                                                    0.0s => [internal] load metadata for docker.io/library/golang:onbuild                                                  1.3s => [auth] library/golang:pull token for registry-1.docker.io                                                      0.0s => [internal] load build context                                                                                  0.0s => => transferring context: 5.63kB                                                                                0.0s => CACHED [1/2] FROM docker.io/library/golang:onbuild@sha256:c0ec19d49014d604e4f62266afd490016b11ceec103f0b7ef44  0.0s => [2/2] COPY . /go/src/app                                                                                       0.1s => [3/2] RUN go-wrapper download                                                                                  2.0s => ERROR [4/2] RUN go-wrapper install                                                                             0.6s------我的 go 版本是最新的,我正在使用以下 dockerfile:FROM golang:onbuild据我所知,这应该go get是它需要的所有包。我也试过这样:FROM golang:onbuildRUN go get "github.com/go-sql-driver/mysql"这具有相同的输出。请注意,在我的代码中,我像这样导入包:import _ "github.com/go-sql-driver/mysql"我还使用了 github 上的其他包,这些似乎工作正常。
查看完整描述

1 回答

?
侃侃尔雅

TA贡献1801条经验 获得超16个赞

Docker 社区通常一直在避开 DockerfileONBUILD指令,因为它使派生图像中实际发生的事情变得非常混乱(请参阅围绕“这真的是整个 Dockerfile 吗?”的各种评论)。如果你在Docker Hub 上搜索golang:onbuild镜像,你会发现这是 Go 1.7 或 1.8;Go 模块是在 Go 1.11 中引入的。


您需要更新到更新的基础映像,这意味着手动编写 Dockerfile 步骤。对于典型的 Go 应用程序,这看起来像


FROM golang:1.18 AS build

WORKDIR /app

COPY go.mod go.sum ./

RUN go mod download

COPY ./ ./

RUN go build -o myapp .


FROM ubuntu:20.04

COPY --from=build /app/myapp /usr/local/bin

CMD ["myapp"]

(在最后阶段,您可能需要RUN apt-get update && apt-get install ...MySQL 客户端库或其他工具。)


查看完整回答
反对 回复 2022-12-05
  • 1 回答
  • 0 关注
  • 210 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号