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.
Voici quelques exigences pour la production d'images Docker, puis nous verrons comment le faire.
Le processus de production doit être intégré au processus de construction du projet
Utiliser l'image officielle comme image de base
Définir le fuseau horaire correct
Le programme dans le conteneur est démarré en tant qu'utilisateur non root
Spécifiez l'interface du programme Web
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 :
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.
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
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.
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/timezoneLe 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 8080Pouvoir transmettre les paramètres JVM, les propriétés du système Java et les paramètres définis par le programmeNous devons pouvoir transmettre certains paramètres lors du démarrage de l'image Docker :
: /home/java-app/
/home/java-app ├── docker-entrypoint.sh ├── lib │ └── java-app.jar ├── etc ├── logs └── tmpdocker-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:builds'exécute et démarre normalement, puis accède à
: http://localhost:8080
docker run -p 8080:8080 chanjarster/dockerfile-java-examples-1:1.0-SNAPSHOTpour 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-SNAPSHOTDé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-SNAPSHOTFournissez 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!