Java 访问docker compose文件中的Spring引导应用程序属性

Java 访问docker compose文件中的Spring引导应用程序属性,java,spring-boot,docker,docker-compose,Java,Spring Boot,Docker,Docker Compose,我有两个应用程序,一个是API应用程序,另一个是UI(UI依赖于API_门户),我没有将db容器化 docker_编写文件 version: "3" services: ui_application: image: ui_app build: context: ./ui_app dockerfile: Dockerfile ports: - "8080:8080" depends_on: - admin_port

我有两个应用程序,一个是API应用程序,另一个是UI(UI依赖于API_门户),我没有将db容器化

docker_编写文件

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 添加target/.war admin\u portal.war 入口点[“Java”、“-jar”、“admin\u portal.war”] Dockerfile 来自openjdk:8-jdk-alpine 添加target/.war ui\u app.war 入口点[“Java”、“-jar”、“ui_app.war”]


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

如果我正确理解了要求,您想通过docker compose注入spring属性

您可以利用env变量实现同样的功能。 请执行以下操作:

  • 创建一个启动脚本并将其打包到映像中
  • 在这个脚本中,像这样输入java start命令

    java\
    -Xmx$Xmx_值\
    -XX:MaxMetaspaceSize=$MAX\u METASPACE\u SIZE\
    -XX:+HEAPDUMPONAUTOFMEMORYERROR\
    -XX:HeapDumpPath=$HEAP\u DUMP\u PATH\
    -Dspring.datasource.url=$DB\u URI\
    -Dspring.datasource.username=$DB\u username\
    -Dspring.datasource.password=$DB\u password\
    -jar

  • 最后,通过docker compose注入所需变量:

    admin\u门户\u应用程序:
    图片:admin_门户
    建造:
    上下文:./admin\u应用程序
    dockerfile:dockerfile
    卷数:
    -/日志:/logs
    环境:
    -DB_URI=
    -DB_用户名=
    -DB_密码=


  • java \-Xmx$Xmx\u VALUE \-XX:MaxMetaspaceSize=$MAX\u METASPACE\u SIZE \-XX:+heapdumponAutofmemoryError \-XX:HeapDumpPath=$HEAP\u DUMP\u PATH \-Dspring.datasource.url=$DB\u URI \-Dspring.datasource.username=$DB\u username \-Dspring.datasource.password=$DB\u password \-jar
    我必须放入docker文件并用docker文件运行它从openjdk:8-jdk-alpine ADD target/.war admin_portal.war ENTRYPOINT[“Java”、“-jar”、“admin_portal.war”]让我们假设我有4个数据源,那么如何添加它们是允许的。origin=8080如何将此属性外部化到docker compose文件1。在包含docker-compose.yaml 2的同一文件夹中创建.env文件。在docker compose中使用
    ALLOWED\u origin=8080
    更新文件,使用变量:
    environment:
    `-ALLOWED.origin=${ALLOWED\u origin}`阅读此文件以了解更多详细信息:
        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