如何保存数据库凭证?

问题描述 投票:0回答:1

我有一个 Quarkus java 应用程序并使用这个 Dockerfile

    # Use a base image with JDK 17
FROM openjdk:17

# Set the working directory in the Docker container
WORKDIR /app

# Copy the Maven build output (fat jar) into the Docker image
COPY target/quarkus-app/ /app

# Expose the port your application runs on
EXPOSE 8080

# Command to execute the Quarkus application
CMD ["java", "-jar", "/app/quarkus-run.jar"]

我的应用程序使用 Github 操作来构建和部署到 azure Web 应用程序 现在我有数据库凭据安全传递问题,并且还有身份验证客户端 ID 和身份验证密钥,我们可以为它们使用 KeyVault,但不明白如何以及我应该像这样将它们传递给 Dockerfile 吗?

这是我从聊天 gpt 获得的,它不包括客户端 ID 和秘密

    # Use a base image with JDK 17
FROM openjdk:17

# Set the working directory in the Docker container
WORKDIR /app

# Copy the Maven build output (fat jar) into the Docker image
COPY target/quarkus-app/ /app

# Expose the port your application runs on
EXPOSE 8080

# Set environment variables for database URL, username, and password
ENV DB_URL=""
ENV DB_USERNAME=""
ENV DB_PASSWORD=""

# Command to execute the Quarkus application
CMD ["java", "-Dquarkus.datasource.url=${DB_URL}", "-Dquarkus.datasource.username=${DB_USERNAME}", "-Dquarkus.datasource.password=${DB_PASSWORD}", "-jar", "/app/quarkus-run.jar"]

这是 application.properties

quarkus.datasource.url=${DB_URL}
quarkus.datasource.username=${DB_USERNAME}
quarkus.datasource.password=${DB_PASSWORD}

我不清楚如何执行此操作,在哪里传递客户端 ID 和秘密,以及如何填充这些参数,也许在部署期间将 yaml 部署到 azure web 应用程序,我应该声明 env 吗?

请任何澄清或示例都会很棒

java github-actions quarkus
1个回答
0
投票

您应该在 GitHub Actions 中使用机密并将其映射到环境变量

steps:
  - name: Hello world action
    env: # Or as an environment variable
      super_secret: ${{ secrets.DB_URL }}

当然,您应该针对需要使用这些变量的任务执行此操作。

查看文档这里

© www.soinside.com 2019 - 2024. All rights reserved.