【问题标题】:Using Docker Secret for Quarkus Data Source Password使用 Docker Secret 作为 Quarkus 数据源密码
【发布时间】:2021-04-19 19:21:22
【问题描述】:

我目前在一个项目中工作,该项目的客户要求较高的安全级别,并且生产数据库密码不与我们开发人员共享。

我正在使用部署在Docker Swarm 上的Quarkus version 1.9.2.Final。我想知道是否有办法将数据源密码存储在 Docker Secret 中并在我的 application.properties 文件中使用该密码

我的 application.properties 文件

quarkus.datasource.db-kind=other
quarkus.hibernate-orm.dialect=org.hibernate.dialect.Oracle12cDialect
spring.jpa.database-platform=org.hibernate.dialect.Oracle12cDialect
quarkus.datasource.jdbc.driver=oracle.jdbc.driver.OracleDriver
quarkus.datasource.jdbc.url=${db-url}
quarkus.datasource.username=${db-user}
quarkus.datasource.password=${db-pass}
logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type=TRACE

我的 pom.xml 配置文件:

<profiles>
    <profile>
        <id>dev</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <db-url>jdbc:oracle:thin:@//host:1521/dbname</db-url>
            <db-user>dbuser</db-user>
            <db-pass>dbpass</db-pass>
        </properties>
    </profile>

    <profile>
        <id>prod</id>
        <properties>
            <db-url>jdbc:oracle:thin:@//prod-host:1521/dbname</db-url>
            <db-user>prod-dbuser</db-user>
            <db-pass>prod-dbpass</db-pass>
        </properties>
    </profile>
</profiles>

我的 compose.yml 文件:

version: "3.1"

services:
  myappservices:
    image: myapp
    deploy:
      replicas: 4
      update_config:
        parallelism: 2
        delay: 10s
      restart_policy:
        condition: on-failure
        delay: 5s
        max_attempts: 3
        window: 20s
    ports:
      - "8080:8080"
    hostname: myapp-node{{.Task.Slot}}
    volumes:
      - "/usr/local/myapp:/usr/local/myapp"
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
      interval: 1m30s
      timeout: 10s
      retries: 3

目标是以下之一:

  1. 将我的pom.xml 文件中的prod-dbpass 替换为来自Docker Secret 的数据库密码。

或

  1. 从pom.xml 文件中完全删除db-pass 属性,并使用来自Docker Secret 的数据库密码设置application.properties 文件中的quarkus.datasource.password 属性。

【问题讨论】:

    标签: docker hibernate quarkus microprofile docker-secrets


    【解决方案1】:

    您可以只定义一个QUARKUS_DATASOURCE_PASSWORD 环境变量。

    这就是您为任何事物定义秘密的方式,无论是 Kubernetes 还是 Docker。

    【讨论】:

    • 系统属性是指容器级别的环境变量吗?
    • 是的,完全正确!我修好了。
    • 非常感谢,我尝试设置一个环境变量并且配置属性被覆盖了!
    • 亲爱的,你能发布一个完整的例子吗?
    猜你喜欢
    • 2020-07-15
    • 2021-07-13
    • 1970-01-01
    • 2012-06-04
    • 1970-01-01
    • 2019-11-24
    • 1970-01-01
    • 1970-01-01
    • 2020-07-07
    相关资源
    最近更新 更多