第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Go Webapp 的 Dockerfile 目錄結(jié)構(gòu)

Go Webapp 的 Dockerfile 目錄結(jié)構(gòu)

Go
紅糖糍粑 2023-03-21 15:08:24
我正在用 Go 開發(fā)一個(gè)測試 hello 應(yīng)用程序,它可以訪問 Postgres 數(shù)據(jù)庫。這將使用 statefulset 在 kubernetes 中發(fā)布,并且有一個(gè) pod 和兩個(gè)容器鏡像(一個(gè)用于 pgsql,一個(gè)用于 goapp)。├── hello-app|   ├── templates|       ├── file1.gohtml|       ├── file2.gohtml|       └── file3.gohtml|   ├── Dockerfile|   └── hello-app.go├── psql|   ├── Dockerfile|   ├── createUser.sh|   └── createDB.sql├── yaml|   └── statefulset.yaml我很難讓 Dockerfile 和 Go 應(yīng)用程序結(jié)合起來。在我的第一段 Go 代碼中,我使用“template.Must”函數(shù)來引用“templates”目錄。顯然,當(dāng)我將其作為容器運(yùn)行時(shí),目錄結(jié)構(gòu)是不同的。我還沒有完全弄清楚如何在 Dockerfile 中執(zhí)行此操作,并且正在尋找一些指導(dǎo)。/app/hello-app.gopackage mainimport (        "database/sql"        "fmt"        "os"        _ "github.com/lib/pq"        "html/template"        "net/http"        "strconv")var db *sql.DBvar tpl *template.Templatefunc init() {        host := os.Getenv("VARIABLE")        var err error        db, err = sql.Open("postgres", "postgres://user:password@"+host+"/dbname?sslmode=disable")        if err != nil {                panic(err)        }        if err = db.Ping(); err != nil {                panic(err)        }        fmt.Println("You connected to your database.")        tpl = template.Must(template.ParseGlob("templates/*.gohtml"))/應(yīng)用程序/DockerfileFROM golang:1.8-alpineRUN apk add --update go gitRUN go get github.com/lib/pq/...ADD . /go/src/hello-appRUN go install hello-appAdd templates templates/ENV USER=username \    PASSWORD=password \    DB=dbname \    HOST=hostname \    PORT=5432FROM alpine:latestCOPY --from=0 /go/bin/hello-app/ .ENV PORT 4040CMD ["./hello-app"]當(dāng)我在 kubernetes (GCP) 中運(yùn)行它時(shí),我在 hello-app 容器上得到以下日志條目??只牛篽tml/模板:模式不匹配任何文件:templates/*.gohtml goroutine 1 [running]:html/template.Must
查看完整描述

3 回答

?
三國紛爭

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超7個(gè)贊

在 Dockerfile 的第二階段,您只是從前一階段復(fù)制 Go 二進(jìn)制文件。您還必須將您的templates目錄也復(fù)制到第二階段,以便 Go 二進(jìn)制文件可以引用您的 HTML 模板:


FROM golang:1.8-alpine

RUN apk add --update go git

RUN go get github.com/lib/pq/...

ADD . /go/src/hello-app

RUN go install hello-app

ENV USER=username \

    PASSWORD=password \

    DB=dbname \

    HOST=hostname \

    PORT=5432


FROM alpine:latest

COPY --from=0 /go/bin/hello-app/ .

COPY --from=0 /go/src/hello-app/templates ./templates

ENV PORT 4040

CMD ["./hello-app"]

我不確定這是否是常見做法,但是當(dāng)我對構(gòu)建過程中的哪個(gè)文件夾中的內(nèi)容感到困惑時(shí),我只是簡單地列出有問題的目錄,ls以便更好地了解構(gòu)建過程中可能發(fā)生的情況:


RUN ls

顯然,您可以在完成 Dockerfile 后刪除這些行。


查看完整回答
反對 回復(fù) 2023-03-21
?
蕭十郎

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超13個(gè)贊

該錯(cuò)誤是因?yàn)?code>template.ParseGlob在您的模板目錄中找不到任何匹配的文件。而不是COPY --from=0 /go/bin/hello-app/ .嘗試使用復(fù)制整個(gè)目錄COPY <YOUR LOCAL GOPATH/src/hello-app> <DOCKER DIR PATH>。此外,當(dāng)您構(gòu)建應(yīng)用程序時(shí),您的模板文件夾仍將位于源文件夾中,因此這也可能導(dǎo)致問題。go build解決方案是在應(yīng)用程序目錄中運(yùn)行并使用COPY我的命令。



查看完整回答
反對 回復(fù) 2023-03-21
?
汪汪一只貓

TA貢獻(xiàn)1898條經(jīng)驗(yàn) 獲得超8個(gè)贊

我的模板文件夾遇到了同樣的錯(cuò)誤,但通過在我的 Dockerfile 中使用此命令從我的根文件夾復(fù)制所有文件來解決它:


COPY . .

此外,當(dāng)您使用外部庫時(shí),您可能希望啟用 GO111MODULE。


在您的終端 (MacOS) 中:


export GO111MODULE=on

go mod init

在你的 Dockerfile 中:


COPY go.mod .

RUN go mod download


查看完整回答
反對 回復(fù) 2023-03-21
  • 3 回答
  • 0 關(guān)注
  • 190 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號