这是我的DockerFile:-
FROM openjdk:10
ENV AQUILA_HOME /data/config
#USER root
#VOLUME /tmp
ADD a2i-web-1.0.0-SNAPSHOT.jar app.jar
#RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-jar","app.jar"]
我的jar是Spring Boot应用程序,需要postgres。 我在本地安装了portgres,它已在我的本地主机上成功运行。 我正在通过命令成功构建DockerFile
sudo docker build -t djtijare/a2i-web:v1 .
但是在通过命令运行时
sudo docker run -p 8080:8080 -t djtijare/a2i-web:v1
将异常表示为:
Connection to localhost:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
我正在从包含DockerFile和我的jar的目录中运行此docker命令 我需要设置任何配置来运行postgres吗?
答案 0 :(得分:1)
您无法使用localhost
从容器访问主机上的服务,而必须使用主机的IP地址进行访问。
这是因为:默认docker将使用bridge来为您的容器设置一个内部网络,因此,当容器使用localhost时,它并不意味着主机,而是容器自身的网络。
如果坚持,则使用--net=host
是一个丑陋的解决方案。
类似下一个内容:
sudo docker run --net=host -p 8080:8080 -t djtijare/a2i-web:v1
然后,您可以使用localhost
从容器访问主机的服务。