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

Table des matières
1. Utilisez une image de base plus petite
2. Build et exécuter en étapes distinctes (construction en plusieurs étapes)
3. Optimiser le pot lui-même
4. Activer le partage de données de classe (CDS)
5. régler les paramètres JVM pour les conteneurs
6. Considérez les images natives (GraalVM) pour une optimisation extrême
Résumé des gains
Maison Java javaDidacticiel Optimisation des images Java Docker pour une taille plus petite et un démarrage plus rapide

Optimisation des images Java Docker pour une taille plus petite et un démarrage plus rapide

Jul 29, 2025 am 12:27 AM
java docker

Utilisez des images de base plus petites telles que l'éclipse-térine: 17-jre-alpine ou -slim pour réduire le volume; 2. Utilisez la construction en plusieurs étapes pour séparer les environnements de compilation et d'exécution pour éviter de lancer les outils de construction et le code source dans l'image finale; 3. Optimiser le package JAR lui-même, supprimer les dépendances inutiles, activer la compression et considérer le pot hiérarchique de démarrage Spring; 4. Activer le partage de données de classe (CDS) pour réduire le temps de démarrage et l'utilisation de la mémoire; 5. Ajuster les paramètres de contenerisation JVM tels que -xx: useContainersupport et -xx: maxrampercentage pour s'adapter aux limitations des ressources du conteneur; 6. La mise en miroir native de Graalvm peut être utilisée dans des scénarios avec des exigences de vitesse de démarrage extrêmement élevées, ce qui améliore considérablement les performances mais augmente la complexité de la construction; L'utilisation combinée des cinq premiers éléments peut obtenir de bons résultats d'optimisation à faible complexité, et la mise en miroir native convient aux applications natives du nuage qui sont sensibles au démarrage à froid.

Optimisation des images Java Docker pour une taille plus petite et un démarrage plus rapide

L'optimisation des images Java Docker ne concerne pas seulement la tailles de fichiers - il s'agit de déploiements plus rapides, de surface d'attaque réduite et de temps de démarrage plus rapides, en particulier dans les environnements cloud et sans serveur. Voici comment rendre votre prêteur d'images Java Docker et plus efficace.

Optimisation des images Java Docker pour une taille plus petite et un démarrage plus rapide

1. Utilisez une image de base plus petite

L'image de base que vous choisissez a un impact massif sur la taille. openjdk:17-jdk ou openjdk:17 images sont basées sur des distributions linux complètes comme Debian et peuvent dépasser 500 Mo.

De meilleures options:

Optimisation des images Java Docker pour une taille plus petite et un démarrage plus rapide
  • eclipse-temurin:17-jre-alpine - Alpine Linux est minuscule (~ 5 Mo de base), et Jre uniquement réduit l'empreinte.
  • eclipse-temurin:17-jre-slim - basée à Debian mais dépouillée. Plus compatible qu'Alpine, encore beaucoup plus petit que JDK complet.
 # au lieu de:
# D'OpenJdk: 17
# Utiliser:
De Eclipse-Temurin: 17-Jre-Alpine

?? Remarque: Alpine utilise musl au lieu de glibc , ce qui peut entra?ner des problèmes de compatibilité avec certaines bibliothèques natives. Si vous touchez des problèmes, allez avec -slim à la place.


2. Build et exécuter en étapes distinctes (construction en plusieurs étapes)

évitez de regrouper les outils de construction, le code source et les dépendances dans votre image finale.

Optimisation des images Java Docker pour une taille plus petite et un démarrage plus rapide
 # Multi-stage: construire avec JDK complet, exécuter avec JRE
De Eclipse-Temurin: 17-JDK-Alpine en tant que constructeur
WorkDir / App
Copie. .
Exécuter ./gradlew build -x test

De Eclipse-Temurin: 17-Jre-Alpine
WorkDir / App
Copier --From = Builder /App/build/libs/app.jar app.jar
Cmd ["java", "-jar", "app.jar"]

Cela maintient l'image d'exécution minimum - pas de gradle, de fichiers source ou d'outils de développement.


3. Optimiser le pot lui-même

Un gros pot (Uber-Jar) avec toutes les dépendances inclus est pratique mais peut être gonflé.

Conseils:

  • Supprimez les dépendances inutilisées - Utilisez des outils tels que la dépendance à la dépendance ou l'examen manuel.
  • Utilisez le pot mince de Spring Boot (le cas échéant) - Déchargez les dépendances à une couche partagée.
  • Activer la compression du pot - la plupart des outils de construction le font par défaut, mais vérifiez.

Conseil de pro: Si vous utilisez Spring Boot, considérez Spring Boot 3.2 avec la prise en charge de l'image de conteneur qui superpose le contenu JAR pour une meilleure mise en cache de couche Docker.


4. Activer le partage de données de classe (CDS)

Le partage de données de classe permet au JVM de précharger les classes de base de la carte de mémoire, réduisant le temps de démarrage et l'utilisation de la mémoire.

Générez une archive CDS pendant la construction d'images:

 De Eclipse-Temurin: 17-Jre-Alpine
Copier app.jar /app.jar

# Générer des archives CDS
Exécuter Java -Xshare: Dump -xx: archiveClassesatexit = / app.jsa -jar /app.jar
# Ou si vous connaissez la classe principale:
# Exécuter java -cp app.jar -xshare: Dump -xx: archiveclassesatexit = / app.jsa com.example.main

# Utilisez des CD à l'exécution
EntryPoint ["java", "-xshare: auto", "-xx: sharedarchivefile = / app.jsa", "-jar", "app.jar"]

Cela peut réduire le temps de démarrage de 10 à 30%, en particulier pour les applications avec de nombreuses dépendances.


5. régler les paramètres JVM pour les conteneurs

Par défaut, le JVM peut ne pas respecter les limites de mémoire du conteneur.

Ajoutez ces drapeaux:

 Point d'entrée ["Java", \
  "-Xx: usecontainersupport", \
  "-Xx: maxrampercentage = 75.0", \
  "-Xshowsettings: VM", \
  "-jar", "app.jar"]
  • UseContainerSupport permet à JVM de détecter les limites des conteneurs.
  • MaxRAMPercentage évite le tas de surallocation.

Cela empêche l'OOM-tus et améliore la prédiction des startups.


6. Considérez les images natives (GraalVM) pour une optimisation extrême

Pour le démarrage le plus rapide et l'empreinte la plus petite, compilez votre application Java à un binaire natif à l'aide de l'image native Graalvm .

Avantages:

  • Startup en millions de secondes.
  • Empreinte mémoire plus petite.
  • Image plus petite (pas de JVM nécessaire).

Inconvénients:

  • Temps de construction plus long.
  • Réflexion limitée / chargement de classe dynamique (nécessite une configuration).
  • Image de construction plus grande.

Exemple:

 # Build Stage avec graalvm
De ghcr.io/graalvm/graalvm-jdk:17 en tant que constructeur
Exécuter GU installer natif-image
Copie. .
Exécutez Native-Image -Jar App.jar

# Stage final
De Alpine: dernier
Copier --From = Builder App / App
Entrée ["./app"]

Mieux pour les outils de microservices, sans serveur ou CLI où le démarrage rapide est critique.


Résumé des gains

Optimisation Réduction de la taille Amélioration des startups
Base alpine / jre 30–50% Mineure
Construction en plusieurs étapes 20–40% Aucun
CDS Minimal 10–30%
Image native 50–80% 80–95% plus rapidement

Choisissez le bon combo en fonction de vos besoins. Pour la plupart des applications, les CD à plusieurs étages de base mince donne d'excellents résultats sans complexité. Pour les services natifs du cloud, le natif de Graalvm vaut l'investissement.

Fondamentalement, n'expédie pas pour un centre de données de JDK juste pour exécuter un pot.

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)

Un guide du développeur à Maven pour la gestion de projet Java Un guide du développeur à Maven pour la gestion de projet Java Jul 30, 2025 am 02:41 AM

Maven est un outil standard pour la gestion et la construction de projet Java. La réponse réside dans le fait qu'il utilise pom.xml pour normaliser la structure du projet, la gestion des dépendances, l'automatisation du cycle de vie de la construction et les extensions de plug-in; 1. Utilisez pom.xml pour définir GroupID, Arfactive, version et dépendances; 2. Commandes Master Core telles que MvnClean, compiler, tester, package, installer et déploier; 3. Utiliser la fonction de dépendance et les exclusions pour gérer les versions et les conflits de dépendance; 4. Organisez de grandes applications via la structure du projet multi-modules et sont gérées uniformément par le POM parent; 5

Construire des API RESTful à Java avec Jakarta EE Construire des API RESTful à Java avec Jakarta EE Jul 30, 2025 am 03:05 AM

Setupamaven / gradleprojectwithjax-rsDependces likejersey; 2.CreateArestResourceUsingannotationsSuchas @ pathand @ get; 3.ConfigureTheApplicationViaApplicationsUbclassorweb.xml; 4.AddjacksonforjsonBindingByCludingJersey-Media-Json-Jackson; 5.DeploEp

Exemple de décorateur de propriété Python Exemple de décorateur de propriété Python Jul 30, 2025 am 02:17 AM

@Property Decorator est utilisé pour convertir les méthodes en propriétés pour implémenter le contr?le de lecture, de réglage et de suppression des propriétés. 1. Utilisation de base: définissez des attributs en lecture seule via @Property, tels que la zone calculée en fonction du rayon et accédé directement; 2. Utilisation avancée: utilisez @ name.setter et @ name.deleter pour implémenter les opérations de vérification et de suppression de l'attribut d'attribut; 3. Application pratique: effectuer la vérification des données dans les setters, tels que BankAccount pour s'assurer que le solde n'est pas négatif; 4. Spécification de dénomination: les variables internes sont préfixées, les noms de méthode de propriété sont cohérents avec les attributs et le contr?le d'accès unifié est utilisé pour améliorer la sécurité et la maintenabilité du code.

Exemple de bascule du mode sombre CSS Exemple de bascule du mode sombre CSS Jul 30, 2025 am 05:28 AM

Tout d'abord, utilisez JavaScript pour obtenir les préférences du système utilisateur et les paramètres de thème stockés localement et initialiser le thème de la page; 1. La structure HTML contient un bouton pour déclencher la commutation du sujet; 2. CSS utilise: Root pour définir des variables de thème brillantes, la classe de mode. Dark définit les variables de thème sombres et applique ces variables via var (); 3. JavaScript détecte préfère-Color-Scheme et lit LocalStorage pour déterminer le thème initial; 4. Communiquez la classe en mode noir sur l'élément HTML lorsque vous cliquez sur le bouton et enregistre l'état actuel vers LocalStorage; 5. Tous les changements de couleur sont accompagnés d'une animation de transition de 0,3 seconde pour améliorer l'utilisateur

Comment utiliser Java MessagediGest pour le hachage (MD5, SHA-256)? Comment utiliser Java MessagediGest pour le hachage (MD5, SHA-256)? Jul 30, 2025 am 02:58 AM

Pour générer des valeurs de hachage à l'aide de Java, il peut être implémenté via la classe MessagediGest. 1. Obtenez une instance de l'algorithme spécifié, tel que MD5 ou SHA-256; 2. Appelez la méthode .update () à transmettre les données à chiffrer; 3. Appelez la méthode .digest () pour obtenir un tableau d'octets de hachat; 4. Convertir le tableau d'octets en une cha?ne hexadécimale pour la lecture; Pour les entrées telles que les fichiers gros, lisez dans des morceaux et appelez .Update () plusieurs fois; Il est recommandé d'utiliser SHA-256 au lieu de MD5 ou SHA-1 pour assurer la sécurité.

Exemple de menu déroulant CSS Exemple de menu déroulant CSS Jul 30, 2025 am 05:36 AM

Oui, un menu déroulant CSS commun peut être implémenté via Pure HTML et CSS sans JavaScript. 1. Utilisez des ul imbriqués et Li pour construire une structure de menu; 2. Utilisez le: Hover Pseudo-Class pour contr?ler l'affichage et la cachette du contenu déroulant; 3. Position définie: relative pour le parent li, et le sous-menu est positionné en utilisant la position: absolue; 4. Le sous-menu défaut par défaut: Aucun, qui devient affichage: Block lorsqu'il a survolé; 5. Le tir-down à plusieurs niveaux peut être réalisé grace à la nidification, combinée à la transition, et à l'ajout d'animations fondues, et adaptées aux terminaux mobiles avec des requêtes multimédias. La solution entière est simple et ne nécessite pas de prise en charge JavaScript, qui convient au grand

Comment utiliser Docker avec VS Code? Comment utiliser Docker avec VS Code? Jul 30, 2025 am 02:29 AM

InstallerDockerDesktop, Vscode et TheofficialDockerextenfrommicRosoft.2

Exemple de cha?ne de date d'analyse Python Exemple de cha?ne de date d'analyse Python Jul 30, 2025 am 03:32 AM

Utilisez dateTime.Strptime () pour convertir les cha?nes de date en objet DateTime. 1. Utilisation de base: Parse "2023-10-05" comme objet DateTime via "% y-% m-% d"; 2. prend en charge plusieurs formats tels que "% m /% d /% y" pour analyser les dates américaines, "% d /% m /% y" pour analyser les dates britanniques, "% b% d,% y% i:% m% p" pour analyser le temps avec AM / PM; 3. Utilisez dateUtil.parser.parse () pour déduire automatiquement les formats inconnus; 4. Utiliser .d

See all articles