真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

go語言國內鏡像 go語言jwt

golang編寫的項目,使用alpine制作鏡像遇到的一個問題解決

GraphicsMagick,一款高性能的圖片處理工具,由于項目需要,用到它,自然而然用到了關于gm的第三方庫 這個庫按照作者的提示,要安裝GraphicsMagick-devel依賴。

單縣ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!

項目寫完了,接下來用alpine做為基礎鏡像,準備制作項目的鏡像。

golang項目,是在ubuntu下編孝亂寫的,編譯成二進制文件了,只要把二進制文件放進鏡像里即可,遇到的問題有2個

1 容器跑起來,一直報二進制文件no found

我認認真真的確認了文件,以及它的路徑,確實是存在的,怎么會報文件找不到呢?!

原來是musl和glibc是兼容的問題,在Dockerfile里要加以下兩步

2 Error loading shared library libGraphicsMagickWand-Q16.so.2: No such file or directory

明明按要求安裝GraphicsMagick-devel依賴,為啥還報這種錯

于是想到了,是不是也要ln做一下軟鏈接呢?于是學著上面的樣子在Dockerfile里補上

再跑,問題依舊,莫非是軟連接的地址寫錯了!回到開發(fā)的電腦上用ldd命令查看一下

果然,編譯后消慎肆的二進制文件依賴路徑是/lib,而不是/lib64

于是,修改Dockerfile里的寫法

問題拿轎解決,開心:)

參考資料:

使用新版Golang1.18多段構建制作docker鏡像的踩坑經(jīng)歷

使用多段構建制作docker鏡像時,我原先嫌皮的dockerfile如下:

結果構建時報錯了,報錯如下,看信息是拉取源碼中的第三方依賴包glog報錯:

go: go.mod file not found in current directory or any parent directory.

'go get' is no longer supported outside a module.

To build and install a command, use 'go install' with a version,

like 'go install example點抗 /cmd@latest '

For more information, see

or run 'go help get' or 'go help install'.

查了相關的錯誤信息,說是go get已經(jīng)在golang的1.17版本停用了,必須使用go install。其實這里有個坑,看官方文檔如下:

Starting in Go 1.17, installing executables with go get is deprecated. go install may be used instead.

In Go 1.18, go get will no longer build packages; it will only be used to add, update, or remove dependencies in go.mod. Specifically, go get will always act as if the -d flag were enabled.

httpServer.go:12:2: no required module provides package github點抗 /golang/glog : go.mod file not found in current directory or any parent directory; see 'go help modules'

其肆者手實說的是go get只是不用來build了,他只能在go.mod中做依賴包相關的操作。go install是直接安裝package,這里使用go install明顯不對。

掌握了了以上信息,就可以針對性的解決了。我之前的dockerfile中可以添加一下裂嫌go.mod的初始化操作,新的file如下:

問題解決,構建鏡像成功了。

Go語言安裝與鏡像配置

安裝網(wǎng)嫌激罩址

國內鏡像芹鬧

Go 1.13 及鉛橡以上(推薦

打開你的終端并執(zhí)行

macOS 或 Linux

如果是zsh

請這樣設置

Windows

打開PowerShell 并執(zhí)行

或者

然后你就可以

Golang項目部署3,容器部署

容器部署即使用 docker 化部署 golang 應用程序,這是在云服務時代最流行的部署方式,也是最推薦的部署方式。

跨平臺交叉編譯是 golang 的特點之一,可以非常方便地編譯出我們需要的目標服務器平臺的版本,而且是靜態(tài)編譯,非常容易地解決了運行依賴問題。

使用以下指令可以靜態(tài)編譯 Linux 平臺 amd64 架構的可執(zhí)行文件:

生成的 main 便是我們靜態(tài)編譯的,可部署于 Linux amd64 上的可執(zhí)行文件。

我們需要將該可執(zhí)行文件 main 編譯生成 docker 鏡像,以便于分發(fā)及部署。 Golang 的運行環(huán)境推薦使用 alpine 基礎系統(tǒng)鏡像,編譯出的容器鏡像約為 20MB 左右。

一個參考的 Dockerfile 文件如下:

其中,我們的基礎鏡像使用了 loads/alpine:3.8 ,中國國內的消正用戶推薦使用該基礎鏡像,基礎鏡像的 Dockerfile 地址: ,倉庫地址:

隨后使用 " docker build -t main . " 指令編譯生成名為 main 的 docker 鏡像。

需要注意的是,在某些項目的架構設計中, 靜態(tài)文轎輪件 和 配置文件 可能不會隨著鏡像進行編譯發(fā)布,而是分開進行管理和發(fā)布。

例如,使用 MVVM 模式的項目中(例如使用 vue 框架),往往是前后端非常獨立的,因此在鏡像中往往并不會包含 public 目錄。而使用了 配置管理中心 (例如使用 consul / etcd / zookeeper )的項目中,也往往并不需要 config 目拿帆悔錄。

因此對于以上示例的 Dockerfile 的使用,僅作參考,根據(jù)實際情況請進行必要的調整。

使用以下指令可直接運行剛才編譯成的鏡像:

容器的分發(fā)可以使用 docker 官方的平臺: ,國內也可以考慮使用阿里云: 。

在企業(yè)級生產環(huán)境中, docker 容器往往需要結合 kubernetes 或者 docker swarm 容器編排工具一起使用。

容器編排涉及到的內容比較多,感興趣的同學可以參考以下資料:


當前標題:go語言國內鏡像 go語言jwt
URL鏈接:http://weahome.cn/article/ddpjspd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部