首頁 >後端開發 >Golang >為 golang Web 應用程式建立 dockerfile

為 golang Web 應用程式建立 dockerfile

王林
王林轉載
2024-02-08 21:57:20999瀏覽

为 golang Web 应用程序创建 dockerfile

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中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除