Heim  >  Artikel  >  Backend-Entwicklung  >  So stellen Sie Anwendungen mit Golang und Docker bereit

So stellen Sie Anwendungen mit Golang und Docker bereit

PHPz
PHPzOriginal
2023-03-22 16:31:481346Durchsuche

In der heutigen Softwareentwicklungsbranche ist die Containerisierungstechnologie zu einer immer beliebter werdenden Lösung geworden. Als derzeit beliebtestes Containerisierungstool ist Docker weithin für seine verschiedenen Vorteile bekannt, wie z. B. hohe Portabilität, geringes Gewicht, Portabilität usw. Gleichzeitig wird Golang als moderne Hochleistungsprogrammiersprache von immer mehr Entwicklern geliebt. In diesem Artikel erklären wir, wie Sie Anwendungen mit Golang und Docker bereitstellen.

Schritt eins: Schreiben Sie eine Golang-Bewerbung

Zuerst müssen wir eine Golang-Bewerbung schreiben. Hier nehmen wir als Beispiel einen einfachen Webdienst, der von Golang implementiert wurde. Der Code lautet wie folgt:

package main 

import (
    "fmt"
    "net/http"
)

func main() {
    http.HandleFunc("/", helloHandler) // 注册路由
    http.ListenAndServe(":8080", nil)  // 启动 HTTP 服务
}

func helloHandler(w http.ResponseWriter, req *http.Request) {
    fmt.Fprintf(w, "Hello Docker and Golang!")
}

Die Anwendung hier überwacht nach dem Start Port 8080 und stellt auf diesem Port eine einfache Antwortnachricht bereit.

Schritt 2: Erstellen Sie ein Docker-Image

Wir müssen die Golang-Anwendung in ein Docker-Image packen, um die Bereitstellung auf jedem Docker-Host zu erleichtern. Bevor wir ein Docker-Image erstellen, müssen wir eine Dockerfile-Konfigurationsdatei für die Golang-Anwendung schreiben.

# Dockerfile
FROM golang:alpine

WORKDIR /go/src/app
COPY . .

RUN go build -o app

EXPOSE 8080
CMD ["/go/src/app/app"]

Die obige Docker-Datei ist in die folgenden Schritte unterteilt:

  • Erstellen Sie ein neues Image basierend auf dem in Golang geschriebenen Alpine-Image.

  • Kopieren Sie das Quellcodeverzeichnis, in dem die Anwendung abgelegt wird, in den Pfad /go/src/app des Containers. /go/src/app 路径下。

  • 在容器中编译应用程序。

  • 指定容器开放的端口。

  • 配置镜像启动的默认命令,这里为 CMD ["/go/src/app/app"]

接下来,在本地终端中构建我们的 Docker 镜像,执行以下命令:

$ docker build -t my-go-app:v1 .

这个命令会进入当前目录,按照 Dockerfile 中的配置文件创建一个名为 my-go-app 的镜像版本 v1

第三步:运行 Docker 容器

创建好 Docker 镜像后,接下来需要启动容器。我们使用以下命令来启动 my-go-app 镜像:

$ docker run -d -p 8080:8080 my-go-app:v1

上面的命令用于在 Docker 容器中启动 my-go-app 镜像,并将容器内部的 8080 端口映射到宿主机(即本机)的 8080 端口。 -d 表示容器以后台方式运行, -p 表示端口映射。 运行完这个命令后,我们可以在本地机器上访问该服务,例如在浏览器中访问 http://localhost:8080 就能够看到应用程序的响应消息。

第四步:上传 Docker 镜像

当我们在本地构建好 Docker 镜像后,我们还需要将它上传到 Docker Hub 或者自己的私有仓库中,以方便在其他的 Docker 主机上部署应用。 我们需要登录 Docker Hub,即运行以下命令:

$ docker login

接下来,我们可以通过标记并推送这个镜像来上传这个镜像,需要执行以下命令:

$ docker tag my-go-app:v1 username/my-go-app:v1
$ docker push username/my-go-app:v1

其中的 my-go-app:v1 是我们本地构建的镜像版本,username

Stellen Sie die Anwendung im Container zusammen.

Geben Sie den vom Container geöffneten Port an.

Konfigurieren Sie den Standardbefehl für den Spiegelstart, hier ist CMD ["/go/src/app/app"].

Als nächstes erstellen Sie unser Docker-Image im lokalen Terminal und führen den folgenden Befehl aus:

$ docker pull username/my-go-app:v1
🎜Dieser Befehl öffnet das aktuelle Verzeichnis und erstellt eine Datei mit dem Namen my-go entsprechend der Konfigurationsdatei in die Dockerfile-Image-Version <code>v1 der App. 🎜🎜🎜Schritt 3: Führen Sie den Docker-Container aus🎜🎜🎜Nachdem Sie das Docker-Image erstellt haben, müssen Sie den Container starten. Wir verwenden den folgenden Befehl, um das my-go-app-Image zu starten: 🎜rrreee🎜Der obige Befehl wird verwendet, um das my-go-app-Image im Docker-Container zu starten und platzieren Sie den Container. Der interne 8080-Port wird dem 8080-Port des Hosts (dh des lokalen Computers) zugeordnet. -d bedeutet, dass der Container im Hintergrund ausgeführt wird, und -p bedeutet Portzuordnung. Nachdem wir diesen Befehl ausgeführt haben, können wir auf den Dienst auf dem lokalen Computer zugreifen. Besuchen Sie beispielsweise http://localhost:8080, um die Antwort anzuzeigen Nachricht an die Anwendung. 🎜🎜🎜Schritt 4: Laden Sie das Docker-Image hoch🎜🎜🎜Nachdem wir das Docker-Image lokal erstellt haben, müssen wir es auch auf Docker Hub oder unser eigenes privates Warehouse hochladen, um die Bereitstellung von Anwendungen auf anderen Docker-Hosts zu erleichtern. Wir müssen uns beim Docker Hub anmelden, das heißt, den folgenden Befehl ausführen: 🎜rrreee🎜 Als nächstes können wir dieses Bild hochladen, indem wir es markieren und pushen. Wir müssen den folgenden Befehl ausführen: 🎜rrreee🎜my-go -app:v1 ist die Image-Version, die wir lokal erstellt haben, und username ist der Name des Docker Hub-Kontos. 🎜🎜🎜Schritt 5: Stellen Sie das Docker-Image auf dem Remote-Host bereit🎜🎜🎜Nachdem wir das Image auf Docker Hub hochgeladen haben, können wir unsere Anwendung auf anderen Maschinen bereitstellen. Zunächst müssen Sie eine Docker-Umgebung auf dem Remote-Host installieren. Nach der Installation von Docker können wir das Image, das auf Docker Hub oder andere private Warehouses hochgeladen wurde, auf dem Remote-Computer abrufen, indem wir den folgenden Befehl ausführen: 🎜rrreee🎜 Anschließend können Sie den Container gemäß der Methode in Schritt 3 starten. Nach dem Start können Sie Auf unsere Anwendung kann auf dem Remote-Host zugegriffen werden. 🎜🎜🎜Zusammenfassung🎜🎜🎜Durch die oben genannten fünf Schritte haben wir erfolgreich eingeführt, wie Anwendungen mithilfe von Golang und Docker bereitgestellt werden. Heute ist Docker zu einer der Hauptlösungen für die moderne Anwendungsentwicklung und -bereitstellung geworden. Durch die Nutzung von Docker für die Bereitstellung unserer Golang-Anwendungen können wir Konfigurations- und Umgebungsprobleme erheblich reduzieren und so die Leistung und Skalierbarkeit unserer Anwendungen verbessern. 🎜

Das obige ist der detaillierte Inhalt vonSo stellen Sie Anwendungen mit Golang und Docker bereit. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn