【问题标题】:How to read docker env variables into Java code如何将 docker env 变量读入 Java 代码
【发布时间】:2017-06-16 18:42:24
【问题描述】:

我正在尝试对接我的 Java 应用程序,该应用程序试图连接到 Rabbitmq 服务器。我已经通过 docker env 变量传递了 Rabbitmq Url,并使用

读取了相同的 url

System.getenv("RABBITMQ_URL")

,但结果为空。我读取 docker env 变量的方式有什么问题吗?这是我的 Docker 创建命令:

docker 服务创建 --name xxx --env RABBITMQ_URL=amqp://rabbitmq:xxxx --network msgq --with-registry-auth ${imageName}

【问题讨论】:

  • 您可以使用 docker inspect 检查您的图像,与您的服务相同:docker service inspect 来检查变量空白的位置。跨度>

标签: java rabbitmq dockerfile


【解决方案1】:

这很奇怪,但是重新启动 docker 容器对我来说效果很好。事实证明,每当我使用“--network”更新网络连接时,我都必须重新启动容器。谢谢

【讨论】:

  • 不,这不是预期的。即使在创建后,您也可以将网络连接到现有服务。
【解决方案2】:

对我来说似乎工作得很好。请看下面:

>> cat Dockerfile
FROM java

COPY Test.java /Test.java
RUN javac Test.java
CMD java Test


>> cat Test.java
class Test {
  public static void main(String[] j) {
    System.out.println(System.getenv("RABBITMQ_URL"));
    while (true) {}
  }
}


>> docker build -t testj .
Sending build context to Docker daemon  6.656kB
Step 1/4 : FROM java
 ---> d23bdf5b1b1b
Step 2/4 : COPY Test.java /Test.java
 ---> Using cache
 ---> 2333685c6488
Step 3/4 : RUN javac Test.java
 ---> Using cache
 ---> 8d1e98d604b9
Step 4/4 : CMD java Test
 ---> Using cache
 ---> 6f9625f04966
Successfully built 6f9625f04966
Successfully tagged testj:latest


>> docker service create --name xxx --env RABBITMQ_URL=amqp://rabbitmq:xxxx --detach testj
937rbfctrds0z1mhpk1e7dlja

>> docker service logs xxx                                                                                                                                                      
xxx.1.acv6mqqy38pf@moby    | amqp://rabbitmq:xxxx
>>

【讨论】:

    猜你喜欢
    • 2021-12-13
    • 2020-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-03
    • 1970-01-01
    • 1970-01-01
    • 2020-05-04
    相关资源
    最近更新 更多