Je travaille avec spring-boot avec des images de docker.
J'exécute mon application springboot
directement à partir de IntelliJ code >
nom comme runtime
avec quelques arguments comme ci-dessous
-DCONFIG_DIR = D: \ baseapimanager \ runtime \ config
Je peux l'exécuter avec succès.
Mais en créant une image docker et en exécutant cette image, elle ne peut pas s'exécuter. Comme je ne sais pas comment passer l'argument lors de l'exécution de l'image docker.
Ici, j'avais également partagé le contenu de mon fichier Docker.
FROM openjdk:8-jdk-alpine VOLUME /tmp ADD target/docker-runtime.jar docker-runtime.jar EXPOSE 8091 ENTRYPOINT ["java","-jar","docker-runtime.jar"]
sous la commande docker, j'essaie de créer un fichier image pour la même chose.
docker build -f Dockerfile -t docker-runtime.
Après avoir exécuté la commande ci-dessous pour exécuter ce fichier image généré.
docker run -p 8091: 8091 docker-runtime
Sans passer cet argument et commenter les affaires avec cet argument, cela fonctionne parfaitement bien.
Toute aide sera appréciée.
3 Réponses :
Si CONFIG_DIR est un paramètre que vous utilisez avec la configuration Spring @Value
ou @ConfigurationProperties
, vous pouvez également passer le paramètre en tant que variable d'environnement.
Les variables d'environnement peuvent être passé au conteneur avec -e
docker run -p 8091:8091 -e CONFIG_DIR=D:\baseapimanager\runtime\config docker-runtime
Mais comme D: \ baseapimanager \ runtime \ config ressemble à un chemin Windows qui ne sera pas visible à l'intérieur le conteneur Docker, vous devez également ajouter les configurations à l'image docker ou monter un volume docker et le paramètre doit pointer vers le volume.
Comment ajouter une configuration à l'image du docker?
Bonjour @Simon, je veux mapper le lecteur D: //
pour le répertoire source de liaison mais cela ne fonctionne pas. avec le lecteur C: //
cela fonctionne bien comme indiqué ci-dessous docker run -p 8091: 8091 --mount type = bind, source = / c / Users / lenovo / data, target = / shareddata docker-runtime
Donc, pour passer un argument dans docker build, procédez comme suit ....
ajoutez la ligne ci-dessus dans le fichier de composition du docker .....
utilisez ce qui précède dans le dockerfile et accédez à la variable
J'avais apporté les modifications ci-dessous dans mon fichier Docker.
FROM openjdk:8-jdk-alpine VOLUME /tmp ADD target/docker-runtime.jar docker-runtime.jar EXPOSE 8091 ENTRYPOINT ["java","-jar","-DCONFIG_DIR=/shareddata","docker-runtime.jar"]
Et lors de l'exécution d'une image, j'avais lié cette adresse en utilisant la commande ci-dessous, et cela fonctionne bien.
docker run -p 8091: 8091 --mount type = bind, source = / c / Users / lenovo / data, target = / shareddata docker-runtime
Cela avait résolu mon problème.