色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

基于Docker鏡像部署go項(xiàng)目的方法步驟

瀏覽:198日期:2024-11-21 14:30:24

依賴知識(shí)

Go交叉編譯基礎(chǔ) Docker基礎(chǔ) Dockerfile自定義鏡像基礎(chǔ) docker-compose編排文件編寫(xiě)基礎(chǔ)

當(dāng)然,一點(diǎn)也不會(huì)也可以按照這個(gè)步驟部署完成,不過(guò)可能中間如果出點(diǎn)小問(wèn)題,會(huì)不知道怎么解決,當(dāng)然你也可以留言。

我是在mac環(huán)境上開(kāi)發(fā)測(cè)試的,如果你是在windows上可能有一點(diǎn)出入,但應(yīng)該不會(huì)有啥大問(wèn)題。

一、依賴環(huán)境

Docker

二、編寫(xiě)一個(gè)GoLang web程序

我這里就寫(xiě)一個(gè)最簡(jiǎn)單的hello world程序吧,監(jiān)聽(tīng)端口是80端口。新建一個(gè)main.go文件,內(nèi)容如下:

package mainimport ( 'fmt' 'log' 'net/http')func sayHello(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, 'hello world')}func main() { http.HandleFunc('/', sayHello)//注冊(cè)URI路徑與相應(yīng)的處理函數(shù) log.Println('【默認(rèn)項(xiàng)目】服務(wù)啟動(dòng)成功 監(jiān)聽(tīng)端口 80') er := http.ListenAndServe('0.0.0.0:80', nil) if er != nil { log.Fatal('ListenAndServe: ', er) }}

三、編譯成linux下的程序包

我是在mac上開(kāi)發(fā)的,需要用到go的交叉編譯,如果對(duì)交叉編譯不熟悉的,可以查下文檔,或者直接復(fù)制我下面的命令進(jìn)行編譯。我們是要跑在Docker里面,基礎(chǔ) golang這個(gè)鏡像跑的,所以需要把他編譯成兼容 i386 處理器的程序。

sudo env GOOS=linux GOARCH=386 go build main.go

這個(gè)編譯完成后,本地會(huì)多出一個(gè) main 程序,暫時(shí)不用管它備用就行。

四、使用 Dockerfile 定制我們go程序的鏡像

新建一個(gè)文件夾,里面新建一個(gè)Dockerfile文件,再在里面新建app,script兩個(gè)文件。把上一步的main程序放到app文件夾里面,在script里面新建一個(gè)build.sh腳本文件,文件內(nèi)容先不管,等下會(huì)說(shuō)。具體的文件結(jié)構(gòu)是這樣。

.├── Dockerfile├── app│ └── main└── script └── build.sh

下面就是編寫(xiě)Dockerfile文件內(nèi)容了,內(nèi)容我先上代碼:

FROM golangMAINTAINER 謙益WORKDIR /go/src/COPY . .EXPOSE 80CMD ['/bin/bash', '/go/src/script/build.sh']

這里解釋下:

FROM 是集成自哪個(gè)鏡像,我們是go程序官方提供了一個(gè)golang這樣的鏡像,我們可以直接使用。

MAINTAINER 是維護(hù)這名字。

WORKDIR 工作目錄。

COPY 這是一個(gè)復(fù)制命令,把本地的所有文件復(fù)制到工作目錄下。

EXPOSE 這是對(duì)方開(kāi)發(fā)的端口,我默認(rèn)是開(kāi)放80端口,這里可根據(jù)實(shí)際情況修改

CMD 執(zhí)行一個(gè)帶參數(shù)的命令,我這樣寫(xiě),是為了讓鏡像啟動(dòng)時(shí)去執(zhí)行script/build.sh的腳本,這個(gè)腳本里面是寫(xiě)的啟動(dòng)go程序的命令。

這里我把內(nèi)容粘貼出來(lái):

#!/usr/bin/env bashcd /go/src/app/ && ./main

就這兩行。

五、編譯我們自己的鏡像

這屬于Docker的知識(shí)了,我把命令粘貼出來(lái)。

docker build -t go-web . 這個(gè)命令執(zhí)行,如果本地沒(méi)有 golang 這個(gè)鏡像的話,他會(huì)自己先去官方鏡像庫(kù)拉取這個(gè)鏡像再編譯,我們靜靜的等他就行 go-web這個(gè)參數(shù)是你最后編譯后的鏡像名字,可以隨意修改,也可以加上版本號(hào)比如: go-web:v1。

基于Docker鏡像部署go項(xiàng)目的方法步驟

看到上面這個(gè)輸出,就說(shuō)明編譯成功了,在你的本地鏡像里面就有了一個(gè)名為go-web的鏡像。可以使用 docker images 進(jìn)行查詢:

基于Docker鏡像部署go項(xiàng)目的方法步驟

六、編寫(xiě) docker-compose.yml 文件

到這里屬于我們的最后一步了,如果用我們剛編譯的go-web來(lái)運(yùn)行我們的go程序:

version: ’2’networks: basic:services: world: container_name: world image: go-web ports: - '8099:80' volumes: - ./app/go/world:/go/src/app:rw networks: - basic

到這里我們的編排文件已經(jīng)寫(xiě)好了,現(xiàn)在只需要用docker-compose來(lái)啟動(dòng)我們的編排文件就好,啟動(dòng)命令如下:

docker-compose -f docker-compose.yml up -d world

如果輸出下面的提示,說(shuō)明啟動(dòng)成功了。

Creating world ... done

啟動(dòng)成功后你可以再用

docker ps

來(lái)查看下是否啟動(dòng)成功了。

現(xiàn)在訪問(wèn)http://127.0.0.1:8099 就能訪問(wèn)我們的go程序了。

到此這篇關(guān)于基于Docker鏡像部署go項(xiàng)目的方法步驟的文章就介紹到這了,更多相關(guān)Docker鏡像部署go項(xiàng)目?jī)?nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Docker
相關(guān)文章:
主站蜘蛛池模板: 99久久精品自在自看国产 | 亚洲国产系列 | 国产永久在线视频 | a级片免费在线播放 | 亚洲欧美日韩天堂 | 亚洲精品欧美精品中文字幕 | 亚洲专区在线视频 | 久久免费资源 | 亚洲国产精品久久综合 | 99在线观看精品视频 | 亚洲美女高清aⅴ视频免费 亚洲美女黄色片 | 国产精品毛片在线更新 | 国产精品亚洲片在线观看不卡 | 欧美性色黄大片www 欧美性色黄大片一级毛片视频 | 日本在线看小视频网址 | 成年女人色毛片免费 | 亚洲欧美高清在线 | 在线免费观看精品 | 中文字幕有码视频 | 国产精品自在自线亚洲 | 欧美另类丝袜 | 亚洲三级在线播放 | 欧美亚洲国产激情一区二区 | 久草观看视频 | 国产精品无打码在线播放9久 | 免费91最新地址永久入口 | www.久草视频 | 欧美另类自拍 | 国产玖玖在线观看 | 天堂一区二区三区在线观看 | 好爽~好硬~好紧~蜜芽 | 欧美日韩在线观看区一二 | 日本黄大片影院一区二区 | 国内精品小视频在线 | 视频一区 欧美 | 69视频成人| 99爱视频在线 | 香港黄页亚洲一级 | 怡红院在线观看 | 亚洲 欧美 成人 | 中国一级毛片录像 |