l'éditeur php Yuzi vous propose une introduction à la création de fichiers docker pour les applications Web Golang. À mesure que la technologie de conteneurisation se développe, l'utilisation de Docker pour créer et déployer des applications est devenue de plus en plus populaire. Dans cet article, nous apprendrons comment créer un fichier docker valide pour une application Web Golang afin de pouvoir déployer et exécuter facilement votre application dans différents environnements. Que vous soyez débutant ou développeur expérimenté, cet article vous fournira des étapes claires et des conseils pratiques pour vous aider à réaliser en douceur les travaux de développement dockerisé. Commençons!
J'ai essayé de suivre les didacticiels mais pour une raison quelconque, en raison de la façon dont mon répertoire est configuré, je n'arrive pas à créer le fichier docker pour créer un conteneur docker pour mon application Web afin que je peut l'exécuter. Utilisez Docker pour l'exécuter sur plusieurs appareils.
Voici la structure de mon projet :
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
Voici le fichier docker que j'utilise :
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"]
J'obtiens l'erreur indiquant qu'il n'y a pas de fichiers go dans /build. C'est correct et l'erreur est logique puisque les fichiers go se trouvent dans cmd/web/
Cependant, je n'arrive pas à le réparer. J'ai essayé de faire ceci :
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"]
La principale différence ici est que j'ai ajouté run go build -o app .
替换为 run go build cmd/web/ -o app .
mais j'obtiens l'erreur indiquant que mes sum.go et mod.go ne sont pas présents dans le répertoire et c'est également vrai
Comment puis-je créer un conteneur Docker pour mon application Web et créer le conteneur à l'intérieur avec mes fichiers Go dans un répertoire différent ? De plus, lorsque j'exécute normalement mon application Web, j'utilise go run cmd/web/*.go
où tous les fichiers Golang du répertoire cmd/web doivent s'exécuter en même temps. Par conséquent, j'ai également besoin de mon dockerfile pour construire et compiler tous les fichiers Golang ensemble
================================================= = p>
Hey @radin khosraviani,
copy 。 .
只会复制源代码。您还需要复制 go 模块文件
.
Ci-dessous, j'ai modifié votre fichier docker et ajouté 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"]
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!