Как сохранить учетные данные базы данных?

У меня есть Java-приложение Quarkus и я использую этот 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 теперь у меня есть проблема с безопасной передачей учетных данных базы данных, а также есть идентификатор и секрет клиента аутентификации для аутентификации, мы можем использовать для них KeyVault, но не понимаем, как и следует ли мне передавать их в Dockerfile вот так или нет?

это я получил из gpt чата, и он не включал идентификатор клиента и секретный ключ

    # 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}

Я не понимаю, как это сделать, где передать идентификатор и секрет клиента и как эти параметры будут заполнены, может быть, во время развертывания файла Deploy.yaml в веб-приложении Azure мне следует объявить env?

Пожалуйста, любые разъяснения или примеры были бы отличными

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
74
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам следует использовать секреты в действиях GitHub и сопоставлять их с переменными среды.

steps:
  - name: Hello world action
    env: # Or as an environment variable
      super_secret: ${{ secrets.DB_URL }}
    run: |
      docker build --build-arg DB_URL=$super_secret 

конечно, вам следует сделать это для задачи, в которой необходимо использовать эти переменные.

Посмотрите документацию здесь

В докере используйте аргументы

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

но таким образом я сохраню их в секретах GitHub, верно, может быть, я смогу сохранить их в переменных env веб-приложения Azure?

grigor martirosyan 17.04.2024 12:24

Где вы собираете докер? Я дал вам решение с помощью GitHub Actions, потому что вы предоставили файл докеров. Если вы используете только в коде, а секреты тура нужны только во время выполнения, тогда, конечно, используйте это в среде веб-приложения Azure. Но если вам нужны эти значения во время сборки, они не будут работать с средами веб-приложений Azure.

Krzysztof Madej 17.04.2024 12:55

да, спасибо, я сделал это с секретами Azure Vault, и во время выполнения оно было заполнено, спасибо.

grigor martirosyan 19.04.2024 09:13

Другие вопросы по теме