Apprenez à utiliser Docker pour empaqueter et déployer efficacement vos applications Go, en les rendant portables et faciles à gérer.
Docker est la technologie de conteneurisation la plus populaire en raison de sa simplicité et de sa facilité d'utilisation. Docker soulage le stress des problèmes de portabilité dans le développement et la distribution de logiciels. Vous pouvez déployer vos conteneurs Docker sur la plupart des fournisseurs de services cloud.
La conteneurisation de vos applications Go avec Docker peut vous aider à assurer un déploiement cohérent et fiable dans différents environnements. Vous pouvez déployer vos applications Go dans différents environnements tels que le développement, la mise en scène et la production. Les conteneurs Docker sont légers et occupent moins d'espace que les machines virtuelles traditionnelles. Cela peut vous faire économiser de l'argent sur les coûts d'hébergement et accélérer vos déploiements.
Configuration d'un serveur Web simple dans Go
La bibliothèque standard Go contient les packages dont vous aurez besoin pour configurer un serveur Web simple.
Tout d'abord, importez le http, enregistrer, et json paquets. Vous utiliserez Le paquet http de Go configurer le serveur et OBTENIR point de terminaison de la demande. Le enregistrer package pour consigner les éventuelles erreurs sur votre console. Le package json pour encoder une structure en JSON pour le point de terminaison de l'API.
importer (
"encodage/json"
"enregistrer"
"net/http"
)
Vous pouvez encoder une instance de structure en tant que JSON pour le client en tant que réponse basée sur la validité de la requête comme suit :
taper Message structure {
Réponse chaîne`json:"réponse"`
Description chaîne`json:"description"`
}
La fonction de gestionnaire renverrait un message réussi au client si la demande au point de terminaison est un OBTENIR demande.
// dockerTestEndpoint gère le point de terminaison de l'API pour tester la connectivité Docker
fonctiondockerTestEndpoint(écrivain http. ResponseWriter, demande *http. Demande) {// Définissez l'en-tête de réponse pour indiquer le contenu JSON
écrivain. En-tête().Set(« Type de contenu »,"applications/json")// Si la méthode de requête est GET
si demande. Méthode == "OBTENIR" {// Définissez le code d'état de la réponse sur 200 OK
écrivain. Write Header (http. StatutOK)// Crée une structure de message pour une réponse réussie
message := Message{
Réponse: "Réussi",
Description: "Vous avez réussi à atteindre le point de terminaison de l'API" +
"Depuis votre conteneur Docker",
}
// Encode le message en JSON et l'envoie en réponse
erreur := json. NewEncoder (writer).Encode(&message)
si erreur != néant {
retour
}
} autre {// Si la méthode de requête n'est pas GET
// Définissez le code d'état de la réponse sur 400 Bad Request
écrivain. Write Header (http. StatusBadRequest)// Crée une structure de message pour une réponse de requête incorrecte
message := Message{
Réponse: "Mauvaise demande",
Description: "Vous avez réussi à atteindre le point de terminaison de l'API à partir de votre " +
"Docker Container, mais vous avez fait une mauvaise demande",
}
// Encode le message en JSON et l'envoie en réponse
erreur := json. NewEncoder (writer).Encode(&message)
si erreur != néant {
retour
}
}
}
Vous configurez la fonction de gestionnaire dans la fonction principale avec la route comme /api/docker/go. Le dockerTestEndpoint La fonction de gestionnaire valide que la demande adressée au gestionnaire est une demande GET. S'il s'agit d'une requête GET, elle encode une instance Message struct au client en fonction de l'état de la demande.
Voici comment vous pouvez monter la fonction de gestionnaire sur une route et configurer le serveur pour qu'il s'exécute sur le port 8080:
fonctionprincipal() {
// Enregistrez la fonction de gestionnaire 'dockerTestEndpoint'
// pour gérer les requêtes pour l'URL "/api/docker/go".
http. HandleFunc("/api/docker/aller", dockerTestEndpoint)
// Démarrez le serveur HTTP et écoutez les requêtes entrantes sur le port 8080.
euh := http. EcouteEtServe(":8080", néant)
si erreur != néant {
enregistrer. Fataln("Il y a une erreur avec le serveur :", euh)
}
}
Le principal la fonction est le point d'entrée du serveur, qui écoute sur le port 8080. Le HandleFunc La méthode monte les routes sur la fonction de gestionnaire. Le ÉcouterEtServir la méthode démarre le serveur sur le port hôte local spécifié 8080.
Commencer à conteneuriser vos applications Go avec Docker
Après avoir installé et configuré Docker, vous aurez besoin d'un fichier Docker nommé Dockerfile pour créer et construire une image Docker pour votre application Go. Vous spécifierez des commandes pour l'image de base et des commandes pour copier les fichiers, ajouter le répertoire de travail et exécuter l'application dans le Dockerfile.
Exécutez cette commande dans le terminal de votre espace de travail pour créer un Dockerfile.
touchez Dockerfile
Vous spécifierez les commandes pour créer votre image Docker dans le Dockerfile.
S'il y a des fichiers que vous souhaitez séparer de votre image Docker, vous pouvez utiliser un .dockerignore déposer. Le .dockerignore les fichiers fonctionnent exactement comme .gitignore des dossiers.
toucher .dockerignorer
Ensuite, vous spécifierez les commandes de construction dans votre Dockerfile pour conteneuriser vos applications.
Définition des commandes dans le Dockerfile
Les Dockerfiles sont personnalisables en fonction des spécifications de votre projet. Vous allez définir des commandes pour créer l'image de base pour la création de l'application.
Voici un exemple du contenu d'un Dockerfile qui construit le serveur Web ci-dessus :
# Utiliser une image de base Golang
DEPUIS golang: le plus récent# Définir le répertoire de travail à l'intérieur du conteneur
RÉP TRAVAIL /app# Copie tous les fichiers du répertoire local dans le répertoire de travail du conteneur
COPIE. .# Télécharger les dépendances du module Go
COURIR aller télécharger le mod# Construire l'application Go
COURIR aller construire -o app
# Définir le point d'entrée de l'application
POINT D'ACCÈS ["./app"]
Le Dockerfile utilise golang: le plus récent image de base, pour créer l'application après avoir défini le répertoire de travail sur /app.
Le Dockerfile copie les fichiers avec le COPIE commande et télécharge les dépendances avec le COURIR commande.
Le fichier spécifie une opération de construction et d'exécution avec le COURIR commande, puis définit la commande à exécuter lorsque le conteneur démarre avec la CMD commande.
Enregistrez le Dockerfile dans le même répertoire que votre aller.mod et main.go des dossiers; puis exécutez cette commande pour créer une image Docker à partir de ce Dockerfile :
docker build -t GolangTutoriel .
La commande ci-dessus créera une image Docker avec la balise golangtutoriel. Vous pouvez exécuter un conteneur avec cette commande :
docker run -p 8080:8080 golangtutorial
La commande mappe le port 8080 du conteneur au port 8080 sur l'hôte local de la machine hôte. Vous pouvez demander le serveur exécuté dans le conteneur Docker à partir de la machine hôte.
Voici le résultat de envoyer la requête CURL au serveur, exécuté cette fois sur Docker :
Vous pouvez utiliser Docker Compose pour l'orchestration des conteneurs
Docker Compose est un outil que vous pouvez utiliser pour orchestrer (travailler avec de nombreux) conteneurs Docker. Docker Compose vous permet de définir une application multi-conteneurs dans un seul fichier YAML. Vous pouvez exécuter et gérer l'ensemble de l'application avec une seule commande.
Vous pouvez utiliser Docker Compose pour déployer et gérer des applications conteneurisées complexes. Docker Compose simplifie la gestion avec des déploiements automatisés et cohérents.