php-Editor Yuzi bietet Ihnen eine Einführung in die Erstellung von Docker-Dateien für Golang-Webanwendungen. Mit der Entwicklung der Containerisierungstechnologie wird die Verwendung von Docker zum Erstellen und Bereitstellen von Anwendungen immer beliebter. In diesem Artikel erfahren Sie, wie Sie eine gültige Docker-Datei für die Golang-Webanwendung erstellen, um Ihre Anwendung problemlos in verschiedenen Umgebungen bereitstellen und ausführen zu können. Unabhängig davon, ob Sie Anfänger oder erfahrener Entwickler sind, bietet Ihnen dieser Artikel klare Schritte und praktische Tipps, die Ihnen dabei helfen, die Docker-Entwicklungsarbeit reibungslos durchzuführen. Lass uns anfangen!
Ich habe versucht, den dortigen Tutorials zu folgen, aber aus irgendeinem Grund kann ich aufgrund der Art und Weise, wie mein Verzeichnis eingerichtet ist, anscheinend keine Docker-Datei erstellen, um einen Docker-Container für meine Web-App zu erstellen, damit ich kann es ausführen. Verwenden Sie Docker, um es auf mehreren Geräten auszuführen.
Das ist meine Projektstruktur:
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
Dies ist die Docker-Datei, die ich verwende:
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"]
Ich erhalte die Fehlermeldung, dass in /build keine Go-Dateien vorhanden sind. Das ist richtig und der Fehler macht Sinn, da sich die go-Dateien in cmd/web/
befindenAllerdings kann ich es scheinbar nicht reparieren. Ich habe Folgendes versucht:
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"]
Der Hauptunterschied besteht darin, dass ich run go build -o app .
替换为 run go build cmd/web/ -o app .
hinzugefügt habe, aber ich erhalte die Fehlermeldung, dass meine sum.go und mod.go nicht im Verzeichnis vorhanden sind, und das stimmt auch
Wie erstelle ich einen Docker-Container für meine Webanwendung und erstelle den darin enthaltenen Container mit meinen Go-Dateien in einem anderen Verzeichnis? Wenn ich meine Webanwendung normal ausführe, verwende ich außerdem go run cmd/web/*.go
, wobei alle Golang-Dateien im Verzeichnis cmd/web gleichzeitig ausgeführt werden müssen. Daher benötige ich auch meine Docker-Datei, um alle Golang-Dateien zusammen zu erstellen und zu kompilieren
============================================== = p>
Hey @radin khosraviani,
copy 。 .
只会复制源代码。您还需要复制 go 模块文件
.
Unten habe ich Ihre Docker-Datei geändert und 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"]
Das obige ist der detaillierte Inhalt vonErstellen Sie eine Docker-Datei für die Golang-Webanwendung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!