欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于Docker鏡像部署go項目的方法步驟

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

依賴知識

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

當然,一點也不會也可以按照這個步驟部署完成,不過可能中間如果出點小問題,會不知道怎么解決,當然你也可以留言。

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

一、依賴環(huán)境

  • Docker

二、編寫一個GoLang web程序

我這里就寫一個最簡單的hello world程序吧,監(jiān)聽端口是80端口。
新建一個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)//注冊URI路徑與相應(yīng)的處理函數(shù)
  log.Println("【默認項目】服務(wù)啟動成功 監(jiān)聽端口 80")
  er := http.ListenAndServe("0.0.0.0:80", nil)
  if er != nil {
    log.Fatal("ListenAndServe: ", er)
  }
}

三、編譯成linux下的程序包

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

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

這個編譯完成后,本地會多出一個 main 程序,暫時不用管它備用就行。

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

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

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

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

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

這里解釋下:

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

MAINTAINER 是維護這名字。

WORKDIR 工作目錄。

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

EXPOSE 這是對方開發(fā)的端口,我默認是開放80端口,這里可根據(jù)實際情況修改

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

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

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

就這兩行。

五、編譯我們自己的鏡像

這屬于Docker的知識了,我把命令粘貼出來。

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

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

六、編寫 docker-compose.yml 文件

到這里屬于我們的最后一步了,如果用我們剛編譯的go-web來運行我們的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àn)在只需要用docker-compose來啟動我們的編排文件就好,啟動命令如下:

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

如果輸出下面的提示,說明啟動成功了。

Creating world ... done

啟動成功后你可以再用

docker ps

來查看下是否啟動成功了。

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

到此這篇關(guān)于基于Docker鏡像部署go項目的方法步驟的文章就介紹到這了,更多相關(guān)Docker鏡像部署go項目內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Docker 鏡像和容器的區(qū)別詳解

    Docker 鏡像和容器的區(qū)別詳解

    這篇文章主要介紹了Docker 鏡像和容器的區(qū)別詳解的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • 詳解Docker 數(shù)據(jù)卷管理

    詳解Docker 數(shù)據(jù)卷管理

    本篇文章主要介紹了Docker 數(shù)據(jù)卷管理,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • CentOS7構(gòu)建docker-ce的過程詳解

    CentOS7構(gòu)建docker-ce的過程詳解

    使用CentOS 7.9系列的Linux操作系統(tǒng),從CentOS系統(tǒng)基礎(chǔ)配置開始,0到1快速構(gòu)建docker應(yīng)用,本文給大家分享CentOS7構(gòu)建docker-ce的過程,感興趣的朋友跟隨小編一起看看吧
    2024-05-05
  • Docker方式啟動tomcat訪問首頁出現(xiàn)404錯誤

    Docker方式啟動tomcat訪問首頁出現(xiàn)404錯誤

    這篇文章主要介紹了Docker方式啟動tomcat訪問首頁出現(xiàn)404錯誤。文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2020-12-12
  • docker 如何實現(xiàn)磁盤讀寫

    docker 如何實現(xiàn)磁盤讀寫

    本文主要介紹了docker實現(xiàn)磁盤讀寫,包括創(chuàng)建Docker鏡像、運行 Docker容器以及在容器中進行磁盤讀寫操作的步驟和代碼示例,具有一定的參考價值,感興趣的可以了解一下
    2024-01-01
  • docker部署mysql8并設(shè)置可遠程連接

    docker部署mysql8并設(shè)置可遠程連接

    本文主要介紹了docker部署mysql8并設(shè)置可遠程連接,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2022-07-07
  • 使用Docker完成前端部署詳細圖文教程

    使用Docker完成前端部署詳細圖文教程

    這篇文章主要給大家介紹了關(guān)于使用Docker完成前端部署的相關(guān)資料,Docker變得越來越流行,它可以輕便靈活地隔離環(huán)境,進行擴容,運維管理,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2023-09-09
  • 解決docker images 鏡像消失的問題

    解決docker images 鏡像消失的問題

    這篇文章主要介紹了解決docker images 鏡像消失的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • docker中的jenkins之流水線構(gòu)建項目步驟詳解

    docker中的jenkins之流水線構(gòu)建項目步驟詳解

    jenkins有2種流水線分為聲明式流水線與腳本化流水線,腳本化流水線是jenkins舊版本使用的流水線腳本,新版本Jenkins推薦使用聲明式流水線,本文給大家介紹docker中的jenkins之流水線構(gòu)建項目,感興趣的朋友一起看看吧
    2023-08-08
  • 詳解Docker守護進程的配置及日志

    詳解Docker守護進程的配置及日志

    這篇文章主要介紹了詳解Docker守護進程的配置及日志,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04

最新評論