Aplication properties a "docker run".

1

Hej.

W application.properties mam taką linię

spring.data.mongodb.uri=${MONGO_URL:mongodb://localhost:27017/dev}

Następnie zbudowałem obraz aplikacji za pomocą Dockerfile

FROM adoptopenjdk/openjdk11:jdk-11.0.2.9-slim
WORKDIR /opt
ENV PORT 8080
EXPOSE 8080
COPY target/*.jar /opt/app.jar
ENTRYPOINT exec java $JAVA_OPTS -jar app.jar

Chciałbym się dowiedzieć jak działa dokładnie ta linia

spring.data.mongodb.uri=${MONGO_URL:mongodb://localhost:27017/dev}

Przy wywołaniu komendy

docker run \
  --name=knote-java \
  --rm \
  --network=knote \
  -p 8080:8080 \
  -e MONGO_URL=mongodb://mongo:27017/dev \
  knote-java

Czy wtedy zamienia się ona w

spring.data.mongodb.uri=mongodb://mongo:27017/dev

?

Chodzi mi o to, że za pomocą -e w komendzie docker run można tam wrzucać dynamicznie swoje zmienne, a w przypadku braku -e zostaje domyślna wartość

spring.data.mongodb.uri=mongodb://localhost:27017/dev

a

${MONGO_URL:

jest pomijane.

4

nie wiem czy o to pytasz, ale w skrócie - tak;
jak do obrazu Dockerowego podasz zmienna srodowiskowa i ja ustawisz to ${NAZWA_ZMIENNEJ} w springowych plikach .properties czyta zmienną srodowiskową o nazwie NAZWA_ZMIENNEJ
jeśli byś jej nie ustawił to dostaniesz wartość domyślną, czyli to po dwukropku - mongodb://localhost:27017/dev

1

Dzięki bardzo za odpowiedź! O to mi chodziło!

1 użytkowników online, w tym zalogowanych: 0, gości: 1