如何将docker env变量读入Java代码

时间:2017-06-16 18:42:24

标签: java rabbitmq dockerfile

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

读取了相同的url
  

System.getenv( “RABBITMQ_URL”)

,但它是空的。我正在阅读docker env变量的方式有什么问题吗?这是我的Docker创建命令:

  

docker service create --name xxx --env   RABBITMQ_URL = amqp:// rabbitmq:xxxx --network msgq --with-registry-auth   $ {imageName}

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

似乎对我来说工作得很好。请参阅以下内容:

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