亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 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指令,因為它使派生圖像中實際發生的事情變得非?;靵y(請參閱圍繞“這真的是整個 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 關注
  • 238 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號