【问题标题】:How do I set Java JDBC Environment Variables?如何设置 Java JDBC 环境变量?
【发布时间】:2021-05-04 12:01:35
【问题描述】:

我正在构建一个使用 Vanilla JDBC 连接到 postgres 数据库的简单 Java 8 应用程序。在ConnectionUtil.java 中的getConnection() 方法中,我将连接凭据保存在以下变量中:

        String url = System.getenv("DB_URL");
        String username = System.getenv("DB_USERNAME");
        String password = System.getenv("DB_PASSWORD");

我的docker-compose.yml文件如下:

version: "3.9"

services:
  jdbc:
    build: .
    ports:
    - 7000:7000
    volumes:
    - ./logs/log.txt:/logs\log.txt
    environment:
    - DB_URL
    - DB_USERNAME
    - DB_PASSWORD
    container_name: jdbc

更多内容,这里是我的Dockerfile

# Base image with jdk 8 and maven
FROM maven:3.6.3-openjdk-8 as builder

# Copy pom.xml and source-code
COPY pom.xml pom.xml
COPY src/ src/

# Build application
RUN mvn clean package

# As a separate stage, to save on resulting image size, discard everything from previous stages
FROM java:8 as runner
# Base image only needs JRE 8

# Expose port 7000 for our web-app
EXPOSE 7000

# Copy the jar file from previous stage
COPY --from=builder target/jdbc-demo-jar-with-dependencies.jar app.jar

# Run program
ENTRYPOINT [ "java", "-jar", "app.jar" ]

我还在学习 Docker。我的问题是,我在哪里设置环境变量?

【问题讨论】:

标签: docker docker-compose environment-variables


【解决方案1】:

在您当前的 docker-compose.yaml 中,您声明了环境变量而没有初始化它们,只需给它们值。

像这样:

version: "3.9"

services:
  jdbc:
    build: .
    ports:
    - 7000:7000
    volumes:
    - ./logs/log.txt:/logs\log.txt
    environment:
    - DB_URL=https://db.address.com
    - DB_USERNAME=db_username
    - DB_PASSWORD=db_password
    container_name: jdbc

【讨论】:

  • 如果我要实际添加 url、密码和用户名,那么将其推送到 github 会不会是不好的做法,因为我的凭据会被暴露?我假设这些变量会存在于其他地方,这就是我要问的问题。
  • 您的问题并不清楚,您需要一些服务,应用程序将访问并要求提供机密信息,例如 hashcorp vault,或者如果您使用 github 操作或 gitllab ci 等构建工具,您可以如果映像存储在安全位置,则保存秘密变量并在构建过程中将它们注入到映像中,或者在部署过程中以相同的方式注入到容器中。
猜你喜欢
  • 2018-09-25
  • 2016-02-03
  • 1970-01-01
  • 1970-01-01
  • 2013-01-11
  • 1970-01-01
  • 1970-01-01
  • 2019-07-02
相关资源
最近更新 更多