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

golang使用DockerFile正確用法指南

 更新時(shí)間:2024年03月16日 10:35:44   作者:寸?鐵  
docker在開發(fā)和運(yùn)維中使用的場(chǎng)景越來越多,作為開發(fā)人員非常有必要了解一些docker的基本知識(shí),而離我們工作中最近的也就是對(duì)應(yīng)用的docker部署編排了,這篇文章主要給大家介紹了關(guān)于golang使用DockerFile的正確用法指南,需要的朋友可以參考下

問題背景

今天寸鐵想讓編寫好的go程序在docker上面跑,要想實(shí)現(xiàn)這樣的效果,就需要用到今天的主角:Docker File,那怎么使用DockerFile呢?

那具體怎么做呢?其實(shí)很簡單,不過網(wǎng)上的博客的一些命令筆者實(shí)操過,發(fā)現(xiàn)不夠完善!

小伙伴們要想實(shí)現(xiàn),看筆者的正確食用指南即可,減少大量踩坑的時(shí)間。

編寫Dockerfile

在你要運(yùn)行到容器的程序所在的文件夾創(chuàng)建Dockerfile之后復(fù)制如下內(nèi)容到創(chuàng)建的文件中。

FROM golang:latest

# 設(shè)置工作目錄
WORKDIR /app

# 復(fù)制 Go 程序源代碼到工作目錄
COPY dockerUper.go .

# 編譯 Go 程序
RUN go build -o dockerUper dockerUper.go

# 運(yùn)行 Go 程序
CMD ["sh", "-c", "./dockerUper"]

dockerUper 替換為具體你編寫的文件名

文件夾的結(jié)構(gòu)如下:

創(chuàng)建鏡像

使用如下命令創(chuàng)建docker鏡像

docker build -t my-golang-app .

這里創(chuàng)建的鏡像名為my-golang-app 具體替換為你的命名

運(yùn)行容器

使用如下命令運(yùn)行Docker鏡像的容器

docker run --name mycontainer-12  my-golang-app

容器名為mycontainer-12 ,鏡像名為my-golang-app。
具體可以根據(jù)你的實(shí)際情況進(jìn)行修改。
注意:run之后 下次的容器名不能重復(fù)?。。?/p>

運(yùn)行結(jié)果如下:

這樣就運(yùn)行容器成功啦!

附:Go 使用Dockerfile構(gòu)建項(xiàng)目 mod 報(bào)錯(cuò)處理

1.情景

正在使用Dockerfile構(gòu)建Go項(xiàng)目鏡像的時(shí)候,遭遇到了executor failed running [/bin/sh -c go mod tidy]: exit code: 2以及ERROR [internal] load metadata for docker.io/library/golang:1.19報(bào)錯(cuò),經(jīng)過一番折騰,終于解決,記錄一下!

2.一開始的Dockerfile

FROM golang:alpine as builder

WORKDIR /go/web-api

# 為我們的鏡像設(shè)置必要的環(huán)境變量
ENV GO111MODULE=on
ENV CGO_ENABLED=0
ENV GOPROXY=https://goproxy.cn,direct
ENV GOOS=linux
ENV GOARCH=amd64

COPY . .

RUN go mod tidy
RUN go build -o server .

3.解決方案

3.1第一個(gè)報(bào)錯(cuò)executor failed running [/bin/sh -c go mod tidy]: exit code: 2

報(bào)錯(cuò)內(nèi)容

------
 > [builder 4/5] RUN go mod tidy:
#8 0.275 go: unknown subcommand "mod"
#8 0.275 Run 'go help' for usage.
------

按照提示信息顯示,找不到命令.懷疑是golang:alpine低于當(dāng)前項(xiàng)目的Go版本(當(dāng)前項(xiàng)目1.19).于是嘗試更換成golang:1.19-alpine3.15,這次沒有mod的報(bào)錯(cuò)了,但是有新的報(bào)錯(cuò).

3.2第二個(gè)報(bào)錯(cuò)ERROR [internal] load metadata for docker.io/library/golang:1.19

------
 > [internal] load metadata for docker.io/library/golang:1.19-alpine3.15:
------
failed to solve with frontend dockerfile.v0: failed to create LLB definition: unexpected status code [manifests 1.19-alpine3.15]: 400 Bad Request

好像是鏡像問題,隨即查閱一番資料,得到結(jié)論,原來是Docker Desktop的設(shè)置問題,需要將setting->Docker Enginejson配置文件中的

"features": {
    "buildkit": true
  },

修改為false即可.

4.修改后結(jié)果

修改后重新運(yùn)行docker build -t xxx/xxx .命令成功生成鏡像.希望能幫助到有相同問題的小伙伴^_^

總結(jié)

到此這篇關(guān)于golang使用DockerFile的文章就介紹到這了,更多相關(guān)golang使用DockerFile內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • go語言LeetCode題解1030距離順序排列矩陣單元格

    go語言LeetCode題解1030距離順序排列矩陣單元格

    這篇文章主要為大家介紹了go語言LeetCode題解1030距離順序排列矩陣單元格,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • 淺談Go語言中的次方用法

    淺談Go語言中的次方用法

    這篇文章主要介紹了淺談Go語言中的次方用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • 詳解golang中接口使用的最佳時(shí)機(jī)

    詳解golang中接口使用的最佳時(shí)機(jī)

    接口在系統(tǒng)設(shè)計(jì)中,以及代碼重構(gòu)優(yōu)化中,是一個(gè)不可或缺的工具,能夠幫助我們寫出可擴(kuò)展,可維護(hù)性更強(qiáng)的程序,本文主要為大家介紹一下golang中接口使用的最佳時(shí)機(jī),有興趣的可以了解下
    2023-09-09
  • golang 實(shí)現(xiàn)菜單樹的生成方式

    golang 實(shí)現(xiàn)菜單樹的生成方式

    這篇文章主要介紹了golang 實(shí)現(xiàn)菜單樹的生成方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • Go函數(shù)的使用示例教程

    Go函數(shù)的使用示例教程

    這篇文章主要介紹了Go函數(shù)的使用示例,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-07-07
  • go slice 數(shù)組和切片使用區(qū)別示例解析

    go slice 數(shù)組和切片使用區(qū)別示例解析

    這篇文章主要為大家介紹了go slice 數(shù)組和切片使用區(qū)別示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • 解決golang.org不能訪問的問題(推薦)

    解決golang.org不能訪問的問題(推薦)

    這篇文章主要介紹了解決golang.org不能訪問的問題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-11-11
  • 詳解Golang的GC和內(nèi)存逃逸

    詳解Golang的GC和內(nèi)存逃逸

    這篇文章主要給大家詳細(xì)介紹了Golang的GC和內(nèi)存逃逸,文章中有詳細(xì)的代碼示例,對(duì)我們的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2023-07-07
  • Go語言學(xué)習(xí)之goroutine詳解

    Go語言學(xué)習(xí)之goroutine詳解

    Goroutine是建立在線程之上的輕量級(jí)的抽象。它允許我們以非常低的代價(jià)在同一個(gè)地址空間中并行地執(zhí)行多個(gè)函數(shù)或者方法,這篇文章主要介紹了Go語言學(xué)習(xí)之goroutine的相關(guān)知識(shí),需要的朋友可以參考下
    2020-02-02
  • go語言操作之nacos配置中心

    go語言操作之nacos配置中心

    這篇文章主要介紹了go語言操作之nacos配置中心,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06

最新評(píng)論