当前位置: 首页 > 知识库问答 >
问题:

docker compose无法访问数据库端口

别俊誉
2023-03-14

dockerfile:

FROM anapsix/alpine-java:8_server-jre_unlimited
# copy application
COPY server.jar /opt/test/
COPY application.yml /opt/test/

# expose server ports
EXPOSE 8080 18080

# Run via dumb-init
WORKDIR /opt/test
ENTRYPOINT ["java"]
CMD ["-jar", "server.jar"]

docker撰写文件:

services:
  backend-server:
    image: test.com/server:latest
    build: .
    depends_on:
      - database-server
    ports:
        - "127.0.0.1:8080:8080"
        - "127.0.0.1:18080:18080"
  database-server:
    image: postgres:9.6
    ports:
        - "127.0.0.1:5432:5432"
    environment:
      - POSTGRES_PASSWORD testtest

应用程序属性文件

spring:
  datasource:
    # use default user/database created by PostgreSQL Docker image upon startup
    url: jdbc:postgresql://localhost/postgres
    username: postgres
    password: testtest
    driver-class-name: org.postgresql.Driver

当我运行docker-comush up时,它将创建一个数据库容器和一个连接到数据库容器的应用程序容器。

但是spring应用程序容器在启动过程中遇到了一些错误:

org.postgresql.util.PSQL异常:连接到localhost:5432被拒绝。检查主机名和端口是否正确,邮政局长是否接受TCP/IP连接。

docker container ls显示数据库正在运行,如果直接运行spring应用程序,我可以访问它。

a295bfd16e2c        postgres:9.6        "docker-entrypoint.s…"   About a minute ago   Up About a minute   127.0.0.1:5432->5432/tcp   server_database-server_1

那我搞砸的问题是什么?

我找到了解决办法

services:
  backend-server:
    image: test.com/server:latest
    build: .
    environment:
      - SPRING_DATASOURCE_URL=jdbc:postgresql://database-server/postgres
    depends_on:
      - database-server
    ports:
        - 8080:8080
        - 18080:18080
  database-server:
    image: postgres:9.6
    ports:
        - 5432:5432
    environment:
      - POSTGRES_PASSWORD testtest

但我仍然无法从我的计算机的localhost:8080访问应用程序,甚至容器的日志也显示了这一点

2018-10-31 15:02:40.881信息1---[main]o.s.b.w.嵌入式。公猫TomcatWebServer:Tomcat已在端口8080(http)上启动,上下文路径为“”

2018-10-31 15:02:40.881信息1---[main]com。测验服务器应用程序:在12.823秒内启动应用程序(JVM运行13.235秒)

共有2个答案

虞安康
2023-03-14
services:
  backend-server:
    image: test.com/server:latest
    build: .
    depends_on:
      - database-server
    ports:
        - "127.0.0.1:8080:8080" #change to 8080:8080 without ""and by default set to local so you dont need add local ip
        - "127.0.0.1:18080:18080"  #change to 18080:18080 without ""and by default set to local so you dont need add local ip
  database-server:
    image: postgres:9.6
    ports:
        - "127.0.0.1:5432:5432" #change to 5432:5432 without ""and by default set to local so you dont need add local ip
    environment:
      - POSTGRES_PASSWORD testtest
白念
2023-03-14

我建议修改你的docker作文。yml文件如下所示,并对其进行测试

services:


backend-server:
    image: test.com/server:latest
    build: .
    depends_on:
      - database-server
    ports:
        - 8080:8080
        - 18080:18080
  database-server:
    image: postgres:9.6
    ports:
        - 5432:5432
    environment:
      - POSTGRES_PASSWORD testtest
 类似资料:
  • 一个ASP.NET web项目加载了解决方案,但我得到了这个错误

  • 嗨,我知道有几个线程对此,但没有一个解决方案似乎对我有效。 我有一个ASP.NET网站项目,我正试图加载并在Visual Studio中发布该项目。然而,当我加载项目时,我得到了错误: 到目前为止我所尝试的: 获得C://Windows/system32/inetsrv/config的所有权 在我的project_name.csproj文件中设置 返回到旧的team foundation serv

  • 我正在使用DBEAVER3.8.0,并试图建立到本地PostgreSQL数据库的一般连接。 若要查看所有数据库,请选中“显示非默认数据库”复选框。当我试图访问我的一个数据库的架构时,我得到了错误

  • 安装Visual Studio2012并打开解决方案后,在此表单中出现一系列错误: Web应用程序项目Foo配置为使用IIS。 无法访问IIS元数据库。您没有足够的权限访问计算机上的IIS网站。 我为我们的每个web应用程序都得到了这一点。 我尝试过的事情: 以管理员身份运行Visual Studio 正在运行aspnet_regiis.exe-ga MyUserName 正在运行aspnet_r

  • 我装载了一个 blob 存储容器(已确认的 blob 类型): 挂载点已创建,我可以在数据砖中看到它。我在此容器中放置了一个 csv 文件,以及一个包含更多 csv 文件但无法访问任何内容的文件: 找不到Java . io . filenotfoundexception:/文件 shade.databricks.org.apache.hadoop.fs.azure。AzureException:s

  • 我使用启动了mongo,但是我得到了如下所示的错误消息。 我试图使用,但得到如下所示的错误消息。 但是当我尝试时,我可以在集合中显示用户,而不会出现任何错误消息。