Comment exécuter un programme Go dans un conteneur Docker

DockerBeginner
Pratiquer maintenant

Introduction

Docker a révolutionné la manière dont les développeurs construisent, package et déploient les applications. Dans ce tutoriel, vous apprendrez à exécuter un programme Go à l'intérieur d'un conteneur Docker, garantissant ainsi un environnement d'exécution cohérent et fiable.

Introduction à Docker

Docker est une plateforme de conteneurisation populaire qui permet aux développeurs de regrouper leurs applications et toutes leurs dépendances dans un seul conteneur portable. Ce conteneur peut ensuite être facilement déployé et exécuté sur n'importe quel système disposant de Docker installé, quel que soit le système d'exploitation ou l'infrastructure sous-jacente.

Qu'est-ce que Docker ?

Docker est une plateforme logicielle open-source qui automatise le déploiement, le dimensionnement et la gestion des applications au sein de conteneurs logiciels. Les conteneurs sont des paquets logiciels légers, autonomes et exécutables qui incluent tout ce qui est nécessaire pour exécuter une application, y compris le code, l'environnement d'exécution, les outils système et les bibliothèques.

Pourquoi utiliser Docker ?

Docker offre plusieurs avantages aux développeurs et aux professionnels de l'informatique :

  1. Cohérence : Les conteneurs Docker garantissent que les applications fonctionnent de la même manière, quel que soit l'infrastructure sous-jacente.
  2. Portabilité : Les conteneurs Docker peuvent être facilement déplacés entre différents environnements, tels que le développement, les tests et la production.
  3. Scalabilité : Docker facilite le dimensionnement des applications vers le haut ou vers le bas, en fonction de la charge de travail.
  4. Efficacité : Les conteneurs Docker sont légers et utilisent moins de ressources que les machines virtuelles traditionnelles, ce qui les rend plus efficaces à exécuter.

Démarrer avec Docker

Pour commencer avec Docker, vous devez installer le moteur Docker sur votre système. Vous pouvez télécharger et installer Docker sur le site Web officiel de Docker (https://www.docker.com/get-started). Une fois Docker installé, vous pouvez commencer à créer et à exécuter des conteneurs Docker.

graph TD
    A[Installer Docker] --> B[Créer une image Docker]
    B --> C[Exécuter un conteneur Docker]
    C --> D[Déployer l'application]

Tableau 1 : Commandes CLI Docker

Commande Description
docker build Construire une image Docker à partir d'un Dockerfile
docker run Exécuter un conteneur Docker
docker ps Lister les conteneurs Docker en cours d'exécution
docker images Lister les images Docker
docker push Envoyer une image Docker vers un registre
docker pull Télécharger une image Docker depuis un registre

Maintenant que vous avez une compréhension de base de Docker, passons à la création d'une application Go dans un conteneur Docker.

Créer une application Go dans Docker

Création d'une application Go

Commençons par créer une simple application Go. Créez un nouveau fichier nommé main.go avec le contenu suivant :

package main

import (
    "fmt"
    "net/http"
)

func main() {
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        fmt.Fprintf(w, "Hello, LabEx!")
    })

    fmt.Println("Démarrage du serveur sur :8080")
    http.ListenAndServe(":8080", nil)
}

Cette application Go écoute sur le port 8080 et répond avec le message "Hello, LabEx!" lorsqu'une requête est effectuée sur l'URL racine (/).

Création d'une image Docker

Pour exécuter cette application Go dans un conteneur Docker, nous devons créer une image Docker. Créez un nouveau fichier nommé Dockerfile avec le contenu suivant :

FROM golang:1.18-alpine
WORKDIR /app
COPY . .
RUN go build -o main .
CMD ["./main"]

Ce Dockerfile :

  1. Utilise l'image officielle golang:1.18-alpine comme image de base.
  2. Définit le répertoire de travail sur /app.
  3. Copie le code de l'application Go dans le conteneur.
  4. Compile l'application Go et crée un exécutable nommé main.
  5. Définit la commande à exécuter lors du démarrage du conteneur : l'exécutable main.

Construction de l'image Docker

Pour construire l'image Docker, exécutez la commande suivante dans le même répertoire que le Dockerfile :

docker build -t my-go-app .

Cette commande construit une image Docker avec l'étiquette my-go-app.

Vérification de l'image Docker

Vous pouvez lister les images Docker disponibles sur votre système en exécutant la commande suivante :

docker images

L'image my-go-app devrait apparaître dans la liste.

Maintenant que nous avons une image Docker pour notre application Go, exécutons-la dans un conteneur Docker.

Exécution de l'application Go dans Docker

Exécution du conteneur Docker

Pour exécuter l'application Go dans un conteneur Docker, utilisez la commande suivante :

docker run -p 8080:8080 my-go-app

Cette commande :

  1. Exécute l'image Docker my-go-app.
  2. Mappe le port 8080 du conteneur au port 8080 de l'hôte, vous permettant d'accéder à l'application depuis votre machine locale.
graph TD
    A[Hôte Docker] --> B[Conteneur Docker]
    B --> C[Application Go]
    A --"HTTP 8080"--> B

Vérification du conteneur en cours d'exécution

Vous pouvez lister les conteneurs Docker en cours d'exécution en utilisant la commande suivante :

docker ps

Le conteneur my-go-app devrait apparaître dans la liste.

Accès à l'application Go

Pour accéder à l'application Go exécutée dans le conteneur Docker, ouvrez un navigateur web et accédez à http://localhost:8080. Vous devriez voir le message "Hello, LabEx!" affiché.

Arrêt du conteneur Docker

Pour arrêter le conteneur Docker en cours d'exécution, utilisez la commande suivante :

docker stop <container_id>

Remplacez <container_id> par l'ID du conteneur en cours d'exécution, que vous pouvez trouver en exécutant la commande docker ps.

Conclusion

Dans ce tutoriel, vous avez appris à :

  1. Créer une simple application Go.
  2. Construire une image Docker pour l'application Go.
  3. Exécuter l'application Go dans un conteneur Docker.
  4. Accéder à l'application Go exécutée dans le conteneur Docker.

En conteneurisant vos applications Go avec Docker, vous assurez un déploiement cohérent et fiable sur différents environnements, ce qui facilite le développement, les tests et le déploiement de vos applications.

Résumé

À la fin de ce tutoriel, vous aurez une compréhension solide de la manière de construire une application Go dans un conteneur Docker et de la faire fonctionner, ce qui facilitera la distribution et le déploiement de votre logiciel dans différents environnements. La technologie de conteneurisation de Docker simplifie le processus de développement et de déploiement, vous permettant de vous concentrer sur l'écriture d'un excellent code.