最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2020年04月24日 09:50:26   作者:莫青羽  
這篇文章主要介紹了基于Docker鏡像部署go項(xiàng)目的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

依賴知識(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 main
import (
  "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文件,再在里面新建appscript兩個(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 golang
MAINTAINER 謙益
WORKDIR /go/src/
COPY . .
EXPOSE 80
CMD ["/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 bash
cd /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。

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

六、編寫(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)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Docker中搭建FastDFS文件系統(tǒng)(多圖教程)

    Docker中搭建FastDFS文件系統(tǒng)(多圖教程)

    這篇文章主要介紹了Docker中搭建FastDFS文件系統(tǒng)(多圖教程),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • Docker日志太多導(dǎo)致磁盤(pán)占滿的處理方法

    Docker日志太多導(dǎo)致磁盤(pán)占滿的處理方法

    這篇文章主要介紹了Docker日志太多導(dǎo)致磁盤(pán)占滿的處理方法,需要的朋友可以參考下
    2018-10-10
  • 使用GoogleContainerTools容器化jib構(gòu)建docker鏡像

    使用GoogleContainerTools容器化jib構(gòu)建docker鏡像

    這篇文章主要教大家如何使用GoogleContainerTools容器化jib構(gòu)建docker鏡像的實(shí)現(xiàn),有需要的的朋友可以借鑒參考下希望能夠有所幫助,祝大家多多進(jìn)步
    2022-03-03
  • docker部署MySQL時(shí)無(wú)法啟動(dòng)問(wèn)題的解決方法

    docker部署MySQL時(shí)無(wú)法啟動(dòng)問(wèn)題的解決方法

    最近做項(xiàng)目,遇到這樣問(wèn)題,docker中的mysql不能啟動(dòng),下面這篇文章主要給大家介紹了關(guān)于docker部署MySQL時(shí)無(wú)法啟動(dòng)問(wèn)題的解決方法,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-01-01
  • windows壞境下docker使用phpmyamin的權(quán)限問(wèn)題解決

    windows壞境下docker使用phpmyamin的權(quán)限問(wèn)題解決

    這篇文章主要為大家介紹了windows壞境下docker使用phpmyamin發(fā)生的權(quán)限問(wèn)題解決分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • Docker查看鏡像的Dockerfile(docker history和docker inspect命令)

    Docker查看鏡像的Dockerfile(docker history和docker inspec

    這篇文章主要給大家介紹了關(guān)于Docker查看鏡像的Dockerfile的相關(guān)資料,文中主要運(yùn)用的是docker history和docker inspect命令,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-05-05
  • docker創(chuàng)建并運(yùn)行一個(gè)MySql容器,并將宿主機(jī)直接掛載到容器

    docker創(chuàng)建并運(yùn)行一個(gè)MySql容器,并將宿主機(jī)直接掛載到容器

    這篇文章主要介紹了docker創(chuàng)建并運(yùn)行一個(gè)MySql容器,并將宿主機(jī)直接掛載到容器問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • 使用docker-compose如何做nginx服務(wù)

    使用docker-compose如何做nginx服務(wù)

    這篇文章主要介紹了使用docker-compose如何做nginx服務(wù)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • 使用Docker創(chuàng)建FTP服務(wù)器的過(guò)程解析

    使用Docker創(chuàng)建FTP服務(wù)器的過(guò)程解析

    這篇文章主要介紹了使用Docker創(chuàng)建FTP服務(wù)器的過(guò)程解析,使用?Docker?搭建?FTP?服務(wù),不僅十分簡(jiǎn)單,而且可以對(duì)宿主機(jī)有一定的隔離,對(duì)Docker創(chuàng)建FTP服務(wù)器的過(guò)程感興趣的朋友一起看看吧
    2022-04-04
  • 在Ubuntu上使用Grafana監(jiān)控Docker的方法

    在Ubuntu上使用Grafana監(jiān)控Docker的方法

    如今越來(lái)越多的公司開(kāi)始使用Docker,一談起Docker總是會(huì)跟著讓人聯(lián)想到輕量這個(gè)詞,甚至?xí)幸环N通過(guò)Docker啟動(dòng)一個(gè)服務(wù)會(huì)節(jié)省很多資源的錯(cuò)覺(jué)。然而Docker的「輕」也只是相對(duì)于傳統(tǒng)虛擬機(jī)而已。Docker如何監(jiān)控呢?本文就給大家介紹在Ubuntu上如何使用Grafana監(jiān)控Docker。
    2016-12-12

最新評(píng)論

股票| 兴海县| 阿拉善盟| 麻江县| 达尔| 南陵县| 达孜县| 安多县| 平远县| 峡江县| 宁安市| 西乡县| 永年县| 三穗县| 海伦市| 蒙阴县| 沾化县| 衢州市| 五峰| 冷水江市| 上虞市| 刚察县| 虹口区| 麻江县| 兴宁市| 灵山县| 湟中县| 河北省| 扶绥县| 黄山市| 呼图壁县| 都江堰市| 潼关县| 乐平市| 昔阳县| 漳平市| 翁牛特旗| 深州市| 深州市| 循化| 泸州市|