Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

1K
Visualizações
Cómo pasar opciones/variables de Java a la aplicación Springboot en el comando de ejecución de la ventana acoplable

Tengo una aplicación Spring Boot que usa perfiles para configurar en diferentes entornos. Quiero pasar esta información de perfil como parámetro a mi comando de docker run . ¿Cómo hago para hacerlo?

Aquí está mi dockerfile

 FROM openjdk:8-jdk-alpine ARG JAR_FILE=target/demo-app-1.0-SNAPSHOT.jar COPY ${JAR_FILE} /opt/lib/demo-app.jar EXPOSE 80 # ENTRYPOINT ["java","-Dspring.profiles.active=dockerdev","-jar","/opt/lib/demo-app.jar"] # Above line works, but not desired as profile will change in diff envs ENTRYPOINT ["java","-jar","/opt/lib/demo-app.jar"]

He intentado lo siguiente, pero ninguno funciona

docker run -p 8000:80 demo-app -Dspring.profiles.active=dockerdev

docker run -p 8000:80 demo-app --rm -e JAVA_OPTS='-Dspring.profiles.active=dockerdev'

Por favor ayuda.

Aclaración: estoy usando varios perfiles. Por lo tanto, no quiero que se mencione el perfil activo dentro de la aplicación o el archivo docker. En cambio, quiero usar la misma aplicación y el mismo archivo docker y ejecutarlo en diferentes entornos, y pasar el perfil activo para usar en el comando de ejecución docker. Disculpas si algo de lo anterior no aclaró eso.

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Solución 1

Puede anular cualquier propiedad de su configuración pasándola al contenedor docker usando la opción -e . Como se explica en Externalized configuration el nombre de la variable de entorno debe escribirse en mayúsculas y dividirse mediante guiones bajos. Entonces, por ejemplo, para pasar la propiedad spring.profiles.active , podría usar la variable de entorno SPRING_PROFILES_ACTIVE durante la ejecución del contenedor:

 docker run -p 8000:80 -e SPRING_PROFILES_ACTIVE=dockerdev demo-app

Y esta variable debe ser seleccionada automáticamente por Spring desde el entorno.

Solución 2

Cambie Dockerfile a:

 FROM openjdk:8-jdk-alpine ARG JAR_FILE=target/demo-app-1.0-SNAPSHOT.jar # environment variable with default value ENV SPRING_PROFILE=dev COPY ${JAR_FILE} /opt/lib/demo-app.jar EXPOSE 80 #run with environment variable ENTRYPOINT ["java","-Dspring.profiles.active=${SPRING_PROFILE}","-jar","/opt/lib/demo-app.jar"]

y luego ejecute el contenedor pasando la variable de entorno:

 docker run -p 8000:80 --rm -e SPRING_PROFILE=dockerdev demo-app
over 4 years ago · Santiago Trujillo Relatório

0

Utilice application.properties en springboot para anular cualquier variable externa. Usamos mucho esto en nuestros entornos de producción.

Necesitas:

  • Cambie su ENTRYPOINT a:
 ENTRYPOINT ["java","-jar","/opt/lib/demo-app.jar","--spring.config.additional-location=/application.properties"]
  • Cree el archivo application.properties con contenido:
 spring.profiles.active=dockerdev

También puede anular cualquier variable utilizada en su código springboot usando application.properties y también puede anular variables específicas de springboot como se menciona aquí .

  • También cambie su comando de docker run a:
 docker run -itd -v /path/to/application.properties:/application.properties image-name

De modo que application.properties de su host se montará dentro de su contenedor docker.

NOTA: Si --spring.config.additional-location no funciona, intente con la opción --spring.config.location .

Espero que esto ayude.

over 4 years ago · Santiago Trujillo Relatório

0

JAVA_TOOL_OPTIONS tal vez la respuesta correcta.

 docker run -p 8000:80 -e JAVA_TOOL_OPTIONS='-Dspring.profiles.active=dockerdev' demo-app
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda