editor php Yuzi membawakan anda pengenalan untuk mencipta fail docker untuk aplikasi web golang. Apabila teknologi kontena berkembang, menggunakan Docker untuk membina dan menggunakan aplikasi telah menjadi semakin popular. Dalam artikel ini, kami akan mempelajari cara membuat fail docker yang sah untuk aplikasi web golang agar dapat menggunakan dan menjalankan aplikasi anda dengan mudah dalam persekitaran yang berbeza. Sama ada anda seorang pemula atau pembangun yang berpengalaman, artikel ini akan memberikan anda langkah yang jelas dan petua praktikal untuk membantu anda menjalankan kerja pembangunan berlabuh dengan lancar. Mari mulakan!
Saya telah cuba mengikuti tutorial di sana tetapi atas sebab tertentu, disebabkan oleh cara direktori saya disediakan, saya tidak dapat mencipta fail docker untuk mencipta bekas docker untuk aplikasi web saya supaya saya boleh menjalankannya Gunakan docker untuk dijalankan pada berbilang peranti.
Ini adalah struktur projek saya:
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
Ini ialah fail docker yang saya gunakan:
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"]
Saya mendapat ralat bahawa tiada fail go dalam /build. Ini betul dan ralat itu masuk akal kerana fail go terletak dalam cmd/web/
Namun, saya nampaknya tidak dapat membetulkannya. Saya telah mencuba melakukan ini:
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"]
Perbezaan utama di sini ialah saya telah menambah run go build -o app .
替换为 run go build cmd/web/ -o app .
tetapi saya mendapat ralat bahawa sum.go dan mod.go saya tidak terdapat dalam direktori dan ini juga benar
Bagaimanakah saya boleh membuat bekas docker untuk aplikasi web saya dan membina bekas di dalamnya dengan fail go saya dalam direktori lain? Selain itu, apabila saya menjalankan aplikasi web saya seperti biasa, saya menggunakan go run cmd/web/*.go
di mana semua fail golang dalam direktori cmd/web perlu dijalankan pada masa yang sama. Oleh itu, saya juga memerlukan fail docker saya untuk membina dan menyusun semua fail golang bersama-sama
================================================ = p>
Hey @radin khosraviani,
copy 。 .
只会复制源代码。您还需要复制 go 模块文件
.
Di bawah saya mengubah suai fail docker anda dan menambah 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"]
Atas ialah kandungan terperinci Buat fail docker untuk aplikasi web golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!