使用 Docker Secret 作为 Quarkus 数据源密码
Using Docker Secret for Quarkus Data Source Password
我目前在一个项目中工作,客户对安全级别要求比较高,生产数据库密码不与我们开发人员共享。
我正在使用部署在 Docker Swarm
上的 Quarkus version 1.9.2.Final
。我想知道是否有办法将数据源密码存储在 Docker 秘密中并在我的 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
目标是以下之一:
- 用 Docker 秘密中的数据库密码替换我
pom.xml
文件中的 prod-dbpass
。
或
- 将
pom.xml
文件中的db-pass
属性一并删除,并在application.properties
文件中设置quarkus.datasource.password
属性与数据库来自 Docker 秘密的密码。
您可以只定义一个 QUARKUS_DATASOURCE_PASSWORD
环境变量。
这就是您为任何事物定义秘密的方式,无论是 Kubernetes 还是 Docker。
我目前在一个项目中工作,客户对安全级别要求比较高,生产数据库密码不与我们开发人员共享。
我正在使用部署在 Docker Swarm
上的 Quarkus version 1.9.2.Final
。我想知道是否有办法将数据源密码存储在 Docker 秘密中并在我的 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
目标是以下之一:
- 用 Docker 秘密中的数据库密码替换我
pom.xml
文件中的prod-dbpass
。
或
- 将
pom.xml
文件中的db-pass
属性一并删除,并在application.properties
文件中设置quarkus.datasource.password
属性与数据库来自 Docker 秘密的密码。
您可以只定义一个 QUARKUS_DATASOURCE_PASSWORD
环境变量。
这就是您为任何事物定义秘密的方式,无论是 Kubernetes 还是 Docker。