与localhost:5432的连接被拒绝。检查主机名和端口是否正确以及邮局主管正在接受TCP / IP连接

时间:2019-05-30 07:53:53

标签: docker dockerfile

这是我的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吗?

1 个答案:

答案 0 :(得分:1)

您无法使用localhost从容器访问主机上的服务,而必须使用主机的IP地址进行访问。

这是因为:默认docker将使用bridge来为您的容器设置一个内部网络,因此,当容器使用localhost时,它并不意味着主机,而是容器自身的网络。

如果坚持,则使用--net=host是一个丑陋的解决方案。

类似下一个内容:

sudo docker run --net=host -p 8080:8080 -t djtijare/a2i-web:v1

然后,您可以使用localhost从容器访问主机的服务。