Maison  >  Article  >  développement back-end  >  Comment déployer des applications avec Golang et Docker

Comment déployer des applications avec Golang et Docker

PHPz
PHPzoriginal
2023-03-22 16:31:481345parcourir

Dans le secteur actuel du développement de logiciels, la technologie de conteneurisation est devenue une solution de plus en plus populaire. En tant qu'outil de conteneurisation le plus populaire actuellement, Docker est largement reconnu pour ses divers avantages, tels que la portabilité élevée, la légèreté, la portabilité, etc. Dans le même temps, Golang, en tant que langage de programmation moderne et performant, est apprécié par de plus en plus de développeurs. Dans cet article, nous expliquerons comment déployer des applications à l'aide de Golang et Docker.

Première étape : rédiger une application Golang

Tout d'abord, nous devons écrire une application Golang. Nous prenons ici comme exemple un service Web simple implémenté par Golang. Le code est le suivant :

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!")
}

L'application ici écoutera le port 8080 après le démarrage et fournira un message de réponse simple sur ce port.

Étape 2 : Créer une image Docker

Nous devons empaqueter l'application Golang dans une image Docker pour faciliter le déploiement sur n'importe quel hôte Docker. Avant de créer une image Docker, nous devons écrire un fichier de configuration Dockerfile pour l'application Golang.

# Dockerfile
FROM golang:alpine

WORKDIR /go/src/app
COPY . .

RUN go build -o app

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

Le Dockerfile ci-dessus est divisé en les étapes suivantes :

  • Créer une nouvelle image basée sur l'image Alpine écrite en Golang.

  • Copiez le répertoire du code source où l'application est placée dans le chemin /go/src/app du conteneur. /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

Compilez l'application dans le conteneur.

Précisez le port ouvert par le conteneur.

Configurez la commande par défaut pour le démarrage du miroir, voici CMD ["/go/src/app/app"].

Ensuite, construisez notre image Docker dans le terminal local et exécutez la commande suivante :

$ docker pull username/my-go-app:v1
🎜Cette commande entrera dans le répertoire courant et créera un fichier nommé my-go selon le fichier de configuration dans la version Dockerfile -image <code>v1 de l'application. 🎜🎜🎜Étape 3 : Exécutez le conteneur Docker🎜🎜🎜Après avoir créé l'image Docker, vous devez démarrer le conteneur. Nous utilisons la commande suivante pour démarrer l'image my-go-app : 🎜rrreee🎜La commande ci-dessus est utilisée pour démarrer l'image my-go-app dans le conteneur Docker et placez le conteneur. Le port 8080 interne est mappé au port 8080 de l'hôte (c'est-à-dire la machine locale). -d signifie que le conteneur s'exécute en arrière-plan et -p signifie le mappage de port. Après avoir exécuté cette commande, nous pouvons accéder au service sur la machine locale. Par exemple, visitez http://localhost:8080 dans le navigateur pour voir la réponse. message à l'application. 🎜🎜🎜Étape 4 : Téléchargez l'image Docker🎜🎜🎜Après avoir construit l'image Docker localement, nous devons également la télécharger sur Docker Hub ou notre propre entrepôt privé pour faciliter le déploiement d'applications sur d'autres hôtes Docker. Nous devons nous connecter à Docker Hub, c'est-à-dire exécuter la commande suivante : 🎜rrreee🎜 Ensuite, nous pouvons télécharger cette image en la marquant et en la poussant. Nous devons exécuter la commande suivante : 🎜rrreee🎜my-go. -app:v1 est la version de l'image que nous avons créée localement et username est le nom du compte Docker Hub. 🎜🎜🎜Étape 5 : Déployer l'image Docker sur l'hôte distant🎜🎜🎜Après avoir téléchargé l'image sur Docker Hub, nous pouvons déployer notre application sur d'autres machines. Tout d'abord, vous devez installer un environnement Docker sur l'hôte distant. Après avoir installé Docker, nous pouvons extraire l'image qui a été téléchargée sur Docker Hub ou d'autres entrepôts privés sur la machine distante en exécutant la commande suivante : 🎜rrreee🎜 Ensuite, vous pouvez démarrer le conteneur selon la méthode de l'étape 3. Après le démarrage, Notre application est désormais accessible sur l'hôte distant. 🎜🎜🎜Résumé🎜🎜🎜À travers les cinq étapes ci-dessus, nous avons réussi à présenter comment déployer des applications à l'aide de Golang et Docker. Aujourd'hui, Docker est devenu l'une des principales solutions de développement et de livraison d'applications modernes. Ainsi, en tirant parti de Docker pour déployer nos applications Golang, nous pouvons réduire considérablement les problèmes de configuration et les problèmes environnementaux, rendant ainsi nos applications plus portables, plus performantes et plus évolutives. 🎜

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!

Déclaration:
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