Maison > développement back-end > Golang > le corps du texte

Créer un fichier docker pour l'application Web Golang

王林
Libérer: 2024-02-08 21:57:20
avant
978 Les gens l'ont consulté

为 golang Web 应用程序创建 dockerfile

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!

Contenu de la question

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
Copier après la connexion

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"]
Copier après la connexion

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"]
Copier après la connexion

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

================================================= =

Solution

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"]
Copier après la connexion

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!

source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!