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 后刪除這些行。

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
我的命令。

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
- 3 回答
- 0 關(guān)注
- 190 瀏覽
添加回答
舉報(bào)