java - 在 docker compose 文件中访问 Spring boot 应用程序属性

标签 java spring-boot docker docker-compose

我有两个应用程序,一个应用程序用于 API,另一个应用程序用于 UI(UI 依赖于 API_portal),我没有容器化数据库。

docker_compose 文件

version: "3"
services:
  ui_application:
    image: ui_app
    build:
      context: ./ui_app
      dockerfile: Dockerfile
    ports:
      - "8080:8080"
    depends_on:
      - admin_portal_app
  admin_portal_app:
    image: admin_portal
     build:
      context: ./admin_app
      dockerfile: Dockerfile
    volumes:
      - ./logs:/logs

Dockerfile 来自 openjdk:8-jdk-alpine 添加目标/.war admin_portal.war ENTRYPOINT [“Java”、“-jar”、“admin_portal.war”] Dockerfile 来自 openjdk:8-jdk-alpine 添加目标/.war ui_app.war ENTRYPOINT [“Java”、“-jar”、“ui_app.war”]

    application.properties(Admin Portal API)
    spring.datasource.url = jdbc:mysql://mysql-standalone:3306/test
    spring.datasource.username = xxx
    spring.datasource.password = xxx
    spring.datasource.driver-class-name=com.mysql.jdbc.Driver
    server.port=8090
    logging.file=./logs/adminportal.log

我想外部化 docker-compose 文件中的所有应用程序属性。请指导我

最佳答案

如果我正确理解了需求,你想通过 docker-compose 注入(inject) spring 属性。

您可以利用环境变量来实现相同的目的。 执行以下操作:

  1. 创建启动脚本并将其打包到镜像中。
  2. 在此脚本中,输入 java 启动命令,如下所示

    java \ -Xmx$XMX_VALUE \ -XX:MaxMetaspaceSize=$MAX_METASPACE_SIZE \ -XX:+HeapDumpOnOutOfMemoryError \ -XX:HeapDumpPath=$HEAP_DUMP_PATH \ -Dspring.datasource.url=$DB_URI \ -Dspring.datasource.username=$DB_USERNAME \ -Dspring.datasource.password=$DB_PASSWORD \ -jar <your app.jar>

  3. 最后通过docker compose注入(inject)所需的变量:

    admin_portal_app: image: admin_portal build: context: ./admin_app dockerfile: Dockerfile volumes: - ./logs:/logs environment: - DB_URI=<uri> - DB_USERNAME=<username> - DB_PASSWORD=<password>

关于java - 在 docker compose 文件中访问 Spring boot 应用程序属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60762996/

相关文章:

java - 删除字符串中2个字符之间的所有字符

java - 是否有新版本的 ehcache-core 是最新版本的 Ehcache 的一部分?

spring-boot - Hashicorp Vault 错误 : Error checking seal status

spring - 我可以将 Spring 的 MockMvc 与 Jersey 资源一起使用吗?

Docker Hub 登录失败,状态为 404 Not Found

docker - 无法在Docker容器上将mosquitto作为服务启动

java - 如何使用 JSTL 将日期显示为 ISO8601?

java - 如何在 parent 身上停止 JProgressBar?

Springboot :BeanDefinitionStoreException: Failed to parse configuration class

openstack - OpenStack上的Docker驱动程序可以与libvirt.LibvirtDriver共存吗?