2

Ich habe eine SpringBoot-Anwendung und seine Dockerfile ist wie folgt. Ich habe application.properties für verschiedene Umgebungen wie local/dev/qa/prod. Wenn ich die Anwendung lokal in IDE ausführe, übergebe ich -Dspring.profiles.active = local in VM-Optionen, so dass es die application-local.properties lädt. Zum Ausführen als Docker-Container erstelle ich ein Image, das alle application.properties enthält. es ist nur das gleiche Docker-Bild für alle Umgebungen.Übergabe env Variablen an DOCKER Spring Boot

Wenn ich das Bild in einer Umgebung ausführen, möchte ich irgendwie den SpringBoot zu verstehen, dass seine dev env, so dass es application-dev.properties laden muss. Ich verwende AWS ECS zur Verwaltung der Container.

FROM openjdk:8-jdk-alpine 
VOLUME /tmp 
ADD target/sample-test-sb-sample-app-1.0-exec.jar app.jar 
EXPOSE 8080 
ENV JAVA_OPTS="" 
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ] 

Antwort

0

Im Dockerfile, ENTRYPOINT [ "sh", "c", „java -Dspring.profiles.active = $ { ENV} -Djava.security.egd = file:/dev /./ urandom -jar /app.jar“]

Und beim laufen die docker, docker Lauf --env ENV = lokale -d - p 8080: 8080 < Bild ID>

Auf diese Weise erhält die Umgebungsvariable den Wert local und wird an Dockerfile übergeben, wenn wir einen Container aufrufen.

0

Der einfachste (und wahrscheinlich der beste Weg) es über Umgebungsvariable in einem Docker Behälter zu tun:

UPDATE:

Um Umgebungsvariablen zu setzen, die Sie Andockfenster Dockerfile muss nicht geändert werden. bauen Sie einfach Ihre Docker Bild und es dann mit den env Variablen laufen gesetzt:

docker run your-docker-container -e SPRING_PROFILES_ACTIVE='dev,swagger' -p 8080:8080 
+0

Können Sie bitte ausarbeiten? Ich bin neu in Docker. Wo sollte diese Umgebungsvariable sein und wie und wann sollte sie in die Dockerfile injiziert werden? Vielen Dank! – deejo

+0

Habe meine Antwort aktualisiert –

Verwandte Themen