0
votes

Exécution d'une image docker avec argument

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.


0 commentaires

3 Réponses :


2
votes

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.


2 commentaires

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



0
votes

Donc, pour passer un argument dans docker build, procédez comme suit ....

  1. ARG -DCONFIG_DIR

ajoutez la ligne ci-dessus dans le fichier de composition du docker .....

  1. $ -DCONFIG_DIR

utilisez ce qui précède dans le dockerfile et accédez à la variable

  1. docker-compose build --build-arg -DCONFIG_DIR = ''

0 commentaires

0
votes

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.


0 commentaires