php小編柚子為您帶來了關於建立golang Web應用程式的dockerfile的介紹。隨著容器化技術的發展,使用Docker來建置和部署應用程式變得越來越流行。在這篇文章中,我們將學習如何為golang Web應用程式建立一個有效的dockerfile,以便能夠輕鬆地在不同的環境中部署和執行您的應用程式。無論您是初學者還是有經驗的開發人員,本文都將為您提供清晰的步驟和實用的技巧,幫助您順利進行docker化的開發工作。讓我們一起開始吧!
我已經嘗試按照那裡的教程進行操作,但由於某種原因,由於我的目錄設定方式,我似乎無法創建dockerfile 來為我的web 應用程式創建docker 容器,以便我可以運行它使用docker 在多個裝置上運行。
這是我的專案結構:
myapp /cmd /web - main.go - middleware.go - routes.go /pkg /somepackage - somegolangfile.go /anotherpackageiuse - somegolangfile.go /templates -html files go.mod go.sum .gitignore dockerfile
這是我正在使用的 dockerfile:
from golang:latest as build workdir /build copy . . run go build -o app . from alpine:latest as run workdir /app copy --from=build /build/app . entrypoint ["/app/app"]
我收到錯誤訊息,/build 中沒有 go 檔。這是正確的,而且錯誤是有道理的,因為 go 檔案位於 cmd/web/
但是,我似乎無法修復它。我嘗試過這樣做:
FROM golang:latest as build WORKDIR /build COPY . . RUN go build cmd/web/ -o app . FROM alpine:latest as run WORKDIR /app COPY --from=build /build/app . ENTRYPOINT ["/app/app"]
這裡的主要區別是我已經將run go build -o app .
替換為run go build cmd/web/ -o app .
,但我收到了錯誤,我的sum.go 和mod.go 是不存在於目錄中,這也是如此
如何為我的 web 應用程式建立一個 docker 容器,並在其中建置我的 go 檔案位於不同目錄中的容器?另外,當我正常運行我的web應用程式時,我使用了 go run cmd/web/*.go
其中cmd/web目錄中的所有golang檔案需要同時運行。因此,我還需要我的 dockerfile 來一起建置和編譯所有 golang 檔案
================================================= = p>
嘿@radin khosraviani,
copy 。 .
只會複製原始碼。您還需要複製 go 模組檔案
。
下面我修改了您的docker檔案並添加了 copy go.mod .
copy go.sum .
run go mod download
FROM golang:latest as build WORKDIR /app # Copy the Go module files COPY go.mod . COPY go.sum . # Download the Go module dependencies RUN go mod download COPY . . RUN go build -o /myapp ./cmd/web FROM alpine:latest as run # Copy the application executable from the build image COPY --from=build /myapp /myapp WORKDIR /app EXPOSE 8080 CMD ["/myapp"]
以上是為 golang Web 應用程式建立 dockerfile的詳細內容。更多資訊請關注PHP中文網其他相關文章!