У меня есть 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?
Пожалуйста, любые разъяснения или примеры были бы отличными
Вам следует использовать секреты в действиях 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 Actions, потому что вы предоставили файл докеров. Если вы используете только в коде, а секреты тура нужны только во время выполнения, тогда, конечно, используйте это в среде веб-приложения Azure. Но если вам нужны эти значения во время сборки, они не будут работать с средами веб-приложений Azure.
да, спасибо, я сделал это с секретами Azure Vault, и во время выполнения оно было заполнено, спасибо.
но таким образом я сохраню их в секретах GitHub, верно, может быть, я смогу сохранить их в переменных env веб-приложения Azure?