亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

Table des matières
1. Utilisez des versions multi-étages pour des images plus petites et sécurisées
2. Optimiser le contexte de construction et la mise en cache des calques
3. Construire pour la production avec des drapeaux appropriés
4. Exécutez en tant qu'utilisateur non racinaire pour la sécurité
5. Déployer avec des outils Docker Compose ou Orchestration
Bonus: effet de levier .dockerignore
Maison développement back-end Golang Construire et déploier des applications GO avec Docker

Construire et déploier des applications GO avec Docker

Jul 25, 2025 am 04:33 AM
go docker

Utilisez des constructions Docker à plusieurs étapes pour créer de petites images sécurisées en compilant le binaire Go à un stade de constructeur et en le copie sur une image d'exécution minimale comme Alpine Linux, en réduisant la taille et la surface d'attaque. 2. Optimiser les performances de construction en copie Go.mod et go.sum d'abord pour tirer parti de la mise en cache de couche Docker, garantissant que les dépendances ne sont redémarrées que lorsque cela est nécessaire. 3. Construisez le binaire Go avec des drapeaux de production, y compris cgo_enabled = 0 pour la compilation statique, goos = linux pour la compatibilité Linux et -ldflags = "- s -w" pour dépouiller les symboles de débogage et réduire la taille binaire. 4. Exécutez le conteneur en tant qu'utilisateur non root en créant un utilisateur dédié dans l'image Docker pour minimiser les risques de sécurité. 5. Déployez à l'aide de Docker Compose pour le développement ou les tests et utilisez des registres de conteneurs avec des plates-formes d'orchestration comme Kubernetes ou ECS pour la production, assurant un déploiement cohérent dans les environnements. De plus, utilisez un fichier .dockaignore pour exclure les fichiers inutiles tels que les actifs de test et la documentation, en gardant le contexte de construction minimal et en améliorant l'efficacité de construction.

Construire et déploier des applications GO avec Docker

La création et le déploiement d'applications GO avec Docker est un moyen puissant d'assurer la cohérence entre les environnements, de réduire le frottement du déploiement et de simplifier la gestion de la dépendance. Les binaires compilés statiquement de Go se marient exceptionnellement bien avec le modèle de conteneur léger de Docker. Voici comment le faire efficacement.

Construire et déploier des applications GO avec Docker

1. Utilisez des versions multi-étages pour des images plus petites et sécurisées

L'une des meilleures pratiques lorsque les applications Dockerizing GO consiste à utiliser des versions multiples . Cela vous permet de compiler votre binaire Go en une étape (avec le SDK GO complet), puis de copier uniquement le binaire final dans une image d'exécution minimale.

 # étape 1: Construisez le binaire Go
De Golang: 1,22 en tant que constructeur

WorkDir / App

# Copier les fichiers GO Mod et télécharger des dépendances
Copy go.mod go.sum ./
Run Go Mod Download

# Copier le code source
Copie. .

# Construisez le binaire (désactiver le CGO pour une compilation statique complète)
Exécuter cgo_enabled = 0 goos = linux go build -a -installsuffix cgo -o main ./cmd/api

# étape 2: image d'exécution minimale
De Alpine: dernier
Exécutez APK --No-cache Ajouter Ca-Certificats
Workdir / root /

# Copiez le binaire de Builder Stage
Copier --From = Builder / App / Main.

# Exposez le port et définissez la commande
Exposer 8080
Cmd ["./main"]

Pourquoi cela compte:

Construire et déploier des applications GO avec Docker
  • L'image finale est minuscule (souvent moins de 30 Mo).
  • Aucune cha?ne d'outils ou le code source n'est incluse dans la production.
  • Réduit la surface d'attaque et améliore le temps de démarrage.

2. Optimiser le contexte de construction et la mise en cache des calques

Les constructions Docker sont plus rapides lorsque vous structurez vos instructions COPY pour profiter de la mise en cache des calques.

  • Copy go.mod et go.sum d'abord , puis exécutez go mod download . Cela signifie que Docker réutilisera les modules téléchargés à moins que ces fichiers ne changent.
  • Copiez le code source par la suite afin que les modifications de code n'invalident pas les calques de dépendance.
 Copy go.mod go.sum ./
Run Go Mod Download

Copie. .

Cette petite optimisation fait gagner beaucoup de temps pendant CI / CD et les reconstructions locales.

Construire et déploier des applications GO avec Docker

3. Construire pour la production avec des drapeaux appropriés

Lorsque vous construisez votre binaire Go pour Docker, utilisez des drapeaux qui optimisent pour la production:

 aller build -ldflags = "- s -w" -o main ./cmd/api
  • -ldflags="-s -w" Débogage des symboles, réduisant la taille binaire.
  • CGO_ENABLED=0 assure un binaire entièrement statique (pas de dépendances externes sur libc , etc.).
  • GOOS=linux garantit que le binaire est construit pour Linux (requis dans Docker).

Mettez à jour votre dockerfile en conséquence:

 Exécuter cgo_enabled = 0 goos = linux go build -a -installsuffix cgo -ldflags = "- s -w" -o main ./cmd/api

4. Exécutez en tant qu'utilisateur non racinaire pour la sécurité

La course à pied en tant que racine est un risque de sécurité. Créez un utilisateur non root dans votre image finale:

 De Alpine: dernier

Exécutez APK --No-cache Ajouter Ca-Certificats
Exécutez l'application AddUser -d -s / bin / sh

Workdir / Home / Appuseur

Copier --From = Builder / App / Main.
Exécutez Chown -r Appuseur: Appuseur ./
Appuseur utilisateur

Exposer 8080
Cmd ["./main"]

Cela garantit que votre application fonctionne avec un minimum de privilèges.


5. Déployer avec des outils Docker Compose ou Orchestration

Pour le développement local ou les déploiements simples, utilisez docker-compose.yml :

 Version: '3.8'
services:
  API:
    construire: .
    PORTS:
      - "8080: 8080"
    environnement:
      - Env = production
    redémarrer: sauf arrêt

Pour la production:

  • Poussez l'image vers un registre ( docker push myregistry/myapp:latest )
  • Déploiement à l'aide de Kubernetes, ECS ou toute plate-forme d'orchestration de conteneurs.

Exemple de poussée et de course:

 docker build -t myapp: dernier.
Docker Tag MyApp: Dernier MyRegistry / MyApp: Dernière
docker push myRegistry / myApp: dernier

# Courez localement
Docker Run -P 8080: 8080 MyRegistry / MyApp: Dernière

Bonus: effet de levier .dockerignore

Tout comme .gitignore , utilisez .dockerignore pour exclure les fichiers inutiles du contexte de build:

 .git
.gitignore
Readme.md
Dockerfile
.Dockagerignore
*.Maryland
go.mod
aller

Attendez - n'ignorez pas go.mod et go.sum si vous les copiez dans le dockerfile. Au lieu de cela, excluez les actifs Dev uniquement:

 .git
.gitignore
Readme.md
*.test
* .sh
cmd / ** / testdata

Cela maintient le contexte de construction petit et accélère les constructions.


Fondamentalement, la combinaison de la simplicité de Go avec la portabilité de Docker vous donne des déploiements rapides, sécurisés et cohérents. Avec des versions multi-étages, des autorisations utilisateur appropriées et une superposition intelligente, vos services GO seront prêts pour la production en un rien de temps.

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 de ce site Web
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

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Création d'environnements Docker prêts pour la production pour PHP Création d'environnements Docker prêts pour la production pour PHP Jul 27, 2025 am 04:32 AM

L'utilisation de l'image de base PHP correcte et la configuration d'un environnement Docker sécurisé et optimisé sont la clé pour obtenir la production prête. 1. Sélectionnez PHP: 8.3-FPM-Alpine comme image de base pour réduire la surface d'attaque et améliorer les performances; 2. Désactiver les fonctions dangereuses via PHP.ini personnalisé, désactiver l'affichage des erreurs et activer Opcache et Jit pour améliorer la sécurité et les performances; 3. Utilisez Nginx comme proxy inverse pour restreindre l'accès aux fichiers sensibles et transférer correctement les demandes PHP à PHP-FPM; 4. Utilisez des images d'optimisation en plusieurs étapes pour supprimer les dépendances de développement et configurez les utilisateurs non racinaires pour exécuter des conteneurs; 5. Supervisord facultatif pour gérer plusieurs processus tels que Cron; 6. Vérifiez qu'aucune fuite d'informations sensibles avant le déploiement

Comment utiliser la réflexion dans Go? Comment utiliser la réflexion dans Go? Jul 28, 2025 am 12:26 AM

Usereflect.valueofAndreflect.TypeoftoGetTimeValuesAndTypes; 2.InspectTypedetailsWithReflect.TypeMethodslikename () etkind (); 3.ModifyValuesviAreflect.Value.Elem () etCanSet () AfterPassingApointer; 4.CallMethodsDynamiquement UsingMethodByName () etCall (); 5.R

Comment gérer les délais d'attente en Go? Comment gérer les délais d'attente en Go? Jul 27, 2025 am 03:44 AM

UseContext.WithTimeoutTocreatEacancelLableContextwithAdeadLineAndalwaysCallCancel () ToreleSeResources.2.ForHttpRequests, settimeoutsinghttp.client.timeoutoruseContextViahttp.NewRequestwithContel

Comment fonctionne l'instruction Switch? Comment fonctionne l'instruction Switch? Jul 30, 2025 am 05:11 AM

L'instruction Switch de Go ne sera pas exécutée tout au long du processus par défaut et quittera automatiquement après la correspondance de la première condition. 1. Switch commence par un mot-clé et peut transporter une valeur ou aucune valeur; 2. Les matchs de cas de haut en bas dans l'ordre, seul le premier match est exécuté; 3. Plusieurs conditions peuvent être répertoriées par des virgules pour correspondre au même cas; 4. Il n'est pas nécessaire d'ajouter manuellement la pause, mais peut être forcé; 5.Default est utilisé pour les cas inégalés, généralement placés à la fin.

Analyse et manipulation JSON efficaces en Go Analyse et manipulation JSON efficaces en Go Jul 27, 2025 am 03:55 AM

UsestructswithPERJSontagsFeRpredictabledatoensurefast, safeparsingwithcompile-timetypesafety.2.avoidmap [string] interface {string] interface {string] interface {string] interface {string] interface {string] interface {string] interface {string] interface {string] interface {string] interface {string] interface {string] interface {string] Interface {string] interface {string] interface {string] interface {string] interface {string] interface {string] interface {string] interface {string] interface {string] interface {string] interface {string] interface {string] interface {string] interface {string] interface {string] interface {string] } duetoreflectionoverHeadAndRuntimeTypeassertions Undless-DithTrulyDynamicjson.3.Usejson.RawMessagefordeFerreDorselectiveP

Utilisation du package de contexte en Go pour l'annulation et les délais d'expiration Utilisation du package de contexte en Go pour l'annulation et les délais d'expiration Jul 29, 2025 am 04:08 AM

UseContextTopropagateCantellation andDeadlinesAgRossgoroutines, permettant à la coopérativecancellation de l'Inde

Construire un serveur GraphQL en Go Construire un serveur GraphQL en Go Jul 28, 2025 am 02:10 AM

Initialiseagomodulewithgomodinit, 2.InstallgqlGencli, 3.Defineaschemainschema.graphqls, 4.RungqlGeninitoGenerateModelsAndResolvers, 5.ImplementResolverFonctionsForQueriesAndMutations, 6.RunververtOerverUserUsingTeneteatedSchema, et7.runteroDerver

comment rompre avec une boucle imbriquée en go comment rompre avec une boucle imbriquée en go Jul 29, 2025 am 01:58 AM

Dans GO, pour sortir des boucles imbriquées, vous devez utiliser des instructions de pause étiquetées ou un retour via des fonctions; 1. Utilisez la rupture étiquetée: placez la balise avant la boucle extérieure, comme OUTERLOOP: pour {...}, utilisez Breakouterloop dans la boucle intérieure pour quitter directement la boucle extérieure; 2. Mettez la boucle imbriquée dans la fonction et retournez à l'avance lorsque les conditions sont remplies, mettant ainsi fin à toutes les boucles; 3. évitez d'utiliser des variables de drapeau ou Goto, la première est longue et facile à faire des erreurs, et la seconde n'est pas recommandée; La bonne fa?on est que la balise doit être avant la boucle plut?t qu'après elle, ce qui est la manière idiomatique de sortir des boucles multi-couches en Go.

See all articles