Table des matières
Exigences
Le processus de production doit être intégré au processus de construction du projet
Utilisez l'image officielle comme image de base
Définissez le fuseau horaire correct
Maison Java javaDidacticiel La méthode et le processus de création d'une image Docker à l'aide du programme Java

La méthode et le processus de création d'une image Docker à l'aide du programme Java

Sep 19, 2018 pm 03:35 PM
docker java maven

Le contenu de cet article concerne la méthode et le processus de création d'une image Docker avec le programme Java. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

Exigences

Voici quelques exigences pour la production d'images Docker, puis nous verrons comment le faire.

  1. Le processus de production doit être intégré au processus de construction du projet

  2. Utiliser l'image officielle comme image de base

  3. Définir le fuseau horaire correct

  4. Le programme dans le conteneur est démarré en tant qu'utilisateur non root

  5. Spécifiez l'interface du programme Web

  6. Capable de transmettre les paramètres JVM, les propriétés du système Java et les paramètres définis par le programme

Parlons de la façon de faire le ci-dessus en détail :

Le processus de production doit être intégré au processus de construction du projet

Il est recommandé d'utiliser le dockerfile-maven-plugin de Spotify car ce plugin est le plus simple à utiliser et facile à maîtriser .

L'essence de ce plugin est que vous écrivez un Dockerfile (veuillez vous référer à la documentation officielle pour la méthode d'écriture spécifique de Dockerfile. Ce plugin transmet certains paramètres pour vous aider à créer une image Docker).

Donc, tant que vous pouvez écrire Dockerfile, vous utiliserez ce plugin. Il n'ajoute aucun concept supplémentaire.

Utilisez l'image officielle comme image de base

L'image de base de Java doit être trouvée dans le référentiel openjdk, pas dans le référentiel Java obsolète.

Le référentiel openjdk fournit une variété de balises d'image qui peuvent sembler éblouissantes, mais il n'y en a essentiellement que quelques-unes :

  • openjdk:<version>

  • openjdk:<version>-slim

  • openjdk:<version>-alpine

Concernant <version>, d'une manière générale, spécifiez simplement un numéro de version plus grand. Par exemple, vous pouvez écrire ceci dans le Dockerfile :

FROM openjdk:8-alpine
Copier après la connexion

En termes de taille, alpine est le plus petit, slim est légèrement plus grand et la valeur par défaut. est le plus grand. Par conséquent, vous devez utiliser la version alpine autant que possible. Si vous constatez que l'environnement d'exécution du programme manque de quelque chose, essayez d'utiliser la version slim ou la version par défaut. En termes d'expérience actuelle :

  • Si vous avez besoin de la bibliothèque de polices du système d'exploitation, vous devez utiliser la version slim ou la version par défaut. Programmes nécessitant des bibliothèques de polices du système d'exploitation telles que les codes de vérification d'image et l'exportation PDF.

  • Si vous avez besoin de bibliothèques de liens dynamiques/statiques standard Linux, alors si la version alpine ne fonctionne pas, essayez la version slim ou la version par défaut. Parce que la version alpine est un Linux extrêmement simplifié, elle supprime beaucoup de choses.

Définissez le fuseau horaire correct

Le fuseau horaire de presque toutes les images Docker est UTC. Nous devons définir le fuseau horaire de l'image Docker que nous avons créée :

ENV TZ=Asia/Shanghai
RUN set -eux; \
    ln -snf /usr/share/zoneinfo/$TZ /etc/localtime; \
    echo $TZ > /etc/timezone
Copier après la connexion
Le programme dans le conteneur est démarré en tant qu'utilisateur non root

Dans l'image Docker, nous devons utiliser l'utilisateur non root pour démarrer le programme, ce qui nécessite l'utilisation de gosu .

Le guide Dockerfile de Gosu est ici.

N'oubliez pas de choisir la méthode d'installation appropriée en fonction des différentes images de base.

Spécifiez l'interface du programme Web

Pour les applications en réseau, le port exposé doit être spécifié dans le Dockerfile, sinon le port ne peut pas être mappé.

EXPOSE 8080
Copier après la connexion
Pouvoir transmettre les paramètres JVM, les propriétés du système Java et les paramètres définis par le programme

Nous devons pouvoir transmettre certains paramètres lors du démarrage de l'image Docker :

  • Paramètres JVM

  • Propriétés du système Java

  • Paramètres de démarrage du programme

Ici, vous devez vous référer aux bonnes pratiques de Dockerfile et à Docker ENTRYPOINT.

Exemple de projet

Un exemple de code source de projet est ici : https://github.com/chanjarster/dockerfile-examples/

Structure du répertoire

Tous les éléments liés au programme sont stockés sous

 : /home/java-app/

/home/java-app
   ├── docker-entrypoint.sh
   ├── lib
   │   └── java-app.jar
   ├── etc
   ├── logs
   └── tmp
Copier après la connexion
docker-entrypoint.sh, script de démarrage

lib, stockez le package JAR

lib /java-app .jar, programme package JAR

etc, stocke les fichiers de configuration

journaux, stocke les fichiers journaux

tmp, stocke les fichiers temporaires

construire la méthode de l'image

mvn clean package dockerfile:build
Copier après la connexion
s'exécute

et démarre normalement, puis accède à

 : http://localhost:8080

docker run -p 8080:8080 chanjarster/dockerfile-java-examples-1:1.0-SNAPSHOT
Copier après la connexion
pour définir les paramètres JVM et utiliser les

variables d'environnement : JVM_OPTS

docker run -p 8080:8080 -e JVM_OPTS='-Xmx128M -Xms128M' chanjarster/dockerfile-java-examples-1:1.0-SNAPSHOT
Copier après la connexion
Définissez les propriétés du système, utilisez

variables d'environnement : JAVA_ARGS

docker run -p 8080:8080 -e JAVA_ARGS='-Dabc=xyz -Ddef=uvw' chanjarster/dockerfile-java-examples-1:1.0-SNAPSHOT
Copier après la connexion
Fournissez les paramètres d'exécution du programme, ajoutez-les simplement directement après :

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

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.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

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)

Nombre parfait en Java Nombre parfait en Java Aug 30, 2024 pm 04:28 PM

Guide du nombre parfait en Java. Nous discutons ici de la définition, comment vérifier le nombre parfait en Java ?, des exemples d'implémentation de code.

Weka en Java Weka en Java Aug 30, 2024 pm 04:28 PM

Guide de Weka en Java. Nous discutons ici de l'introduction, de la façon d'utiliser Weka Java, du type de plate-forme et des avantages avec des exemples.

Numéro de Smith en Java Numéro de Smith en Java Aug 30, 2024 pm 04:28 PM

Guide du nombre de Smith en Java. Nous discutons ici de la définition, comment vérifier le numéro Smith en Java ? exemple avec implémentation de code.

Enseignement du nœud PI: Qu'est-ce qu'un nœud PI? Comment installer et configurer le nœud PI? Enseignement du nœud PI: Qu'est-ce qu'un nœud PI? Comment installer et configurer le nœud PI? Mar 05, 2025 pm 05:57 PM

Explication détaillée et guide d'installation pour les nœuds de pignon Cet article introduira l'écosystème de pignon en détail - nœuds PI, un rôle clé dans l'écosystème de pignon et fournir des étapes complètes pour l'installation et la configuration. Après le lancement du réseau de test de la blockchain pèse, les nœuds PI sont devenus une partie importante de nombreux pionniers participant activement aux tests, se préparant à la prochaine version du réseau principal. Si vous ne connaissez pas encore Pinetwork, veuillez vous référer à ce qu'est Picoin? Quel est le prix de l'inscription? PI Utilisation, exploitation minière et sécurité. Qu'est-ce que Pinetwork? Le projet Pinetwork a commencé en 2019 et possède sa pièce exclusive de crypto-monnaie PI. Le projet vise à en créer un que tout le monde peut participer

Comment installer Deepseek Comment installer Deepseek Feb 19, 2025 pm 05:48 PM

Il existe de nombreuses façons d'installer Deepseek, notamment: Compiler à partir de Source (pour les développeurs expérimentés) en utilisant des packages précompilés (pour les utilisateurs de Windows) à l'aide de conteneurs Docker (pour le plus pratique, pas besoin de s'inquiéter de la compatibilité), quelle que soit la méthode que vous choisissez, veuillez lire Les documents officiels documentent soigneusement et les préparent pleinement à éviter des problèmes inutiles.

Questions d'entretien chez Java Spring Questions d'entretien chez Java Spring Aug 30, 2024 pm 04:29 PM

Dans cet article, nous avons conservé les questions d'entretien Java Spring les plus posées avec leurs réponses détaillées. Pour que vous puissiez réussir l'interview.

Break or Return of Java 8 Stream Forach? Break or Return of Java 8 Stream Forach? Feb 07, 2025 pm 12:09 PM

Java 8 présente l'API Stream, fournissant un moyen puissant et expressif de traiter les collections de données. Cependant, une question courante lors de l'utilisation du flux est: comment se casser ou revenir d'une opération FOREAK? Les boucles traditionnelles permettent une interruption ou un retour précoce, mais la méthode Foreach de Stream ne prend pas directement en charge cette méthode. Cet article expliquera les raisons et explorera des méthodes alternatives pour la mise en œuvre de terminaison prématurée dans les systèmes de traitement de flux. Lire plus approfondie: Améliorations de l'API Java Stream Comprendre le flux Forach La méthode foreach est une opération terminale qui effectue une opération sur chaque élément du flux. Son intention de conception est

Java Made Simple : un guide du débutant sur la puissance de programmation Java Made Simple : un guide du débutant sur la puissance de programmation Oct 11, 2024 pm 06:30 PM

Java Made Simple : Guide du débutant sur la puissance de programmation Introduction Java est un langage de programmation puissant utilisé dans tout, des applications mobiles aux systèmes d'entreprise. Pour les débutants, la syntaxe de Java est simple et facile à comprendre, ce qui en fait un choix idéal pour apprendre la programmation. Syntaxe de base Java utilise un paradigme de programmation orienté objet basé sur les classes. Les classes sont des modèles qui organisent ensemble les données et les comportements associés. Voici un exemple simple de classe Java : publicclassPerson{privateStringname;privateintage;

See all articles