微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Spring 启动,docker compose 内的 postgres 无法访问 localhost

如何解决Spring 启动,docker compose 内的 postgres 无法访问 localhost

我有一个带有 Postgres 数据库的 Spring Boot Web 应用程序。我创建了 docker-compose 文件

version: '3.1'
services:
  app:
    container_name: springboot-postgresql
    image: springboot-postgresql
    build: ./
    restart: always
    #Environment variables for Spring Boot Application.
    environment:
      - DB_SERVER=postgresqldb
      - POSTGRES_DB=my_database
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres
    ports:
      - "8080:8080"
    depends_on:
      - postgresqldb

  postgresqldb:
    image: postgres
    ports:
      - "5432:5432"
    environment:
      - POSTGRES_PASSWORD=postgres
      - POSTGRES_USER=postgres
      - POSTGRES_DB=my_database

和 Dockerfile

FROM adoptopenjdk/openjdk15:alpine-jre
VOLUME /tmp
copY target/*.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
EXPOSE 8080

还有 application.properties 文件

spring.datasource.url=jdbc:postgresql://${DB_SERVER}/${POSTGRES_DB}
spring.datasource.username=${POSTGRES_USER}
spring.datasource.password=${POSTGRES_PASSWORD}
spring.jpa.hibernate.ddl-auto=create

spring.freemarker.expose-request-attributes=true
spring.freemarker.suffix= .ftl

address=http://localhost:8080/

server.error.whitelabel.enabled=false

# =========================== MAIL ===========================
spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true

spring.mail.host=***
spring.mail.username=***
spring.mail.password=***
spring.mail.port=465
spring.mail.protocol=smtps
mail.smtp.auth=true
mail.debug=true

# =========================== SESSIONS ===========================
spring.session.jdbc.initialize-schema=always
spring.session.jdbc.table-name=SPRING_SESSION

# =========================== THYMELEAF ===========================
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html
spring.thymeleaf.mode=HTML5
spring.thymeleaf.encoding=UTF-8
spring.thymeleaf.content-type=text/html # ;charset=<encoding> is added
spring.thymeleaf.cache=true


在我运行 docker-compose up 后,所有服务都启动并且一切正常:

...
springboot-postgresql | 2021-01-11 13:20:20.703  INFO 1 --- [           main] DeferredRepositoryInitializationListener : Triggering deferred initialization of Spring Data repositories…
springboot-postgresql | 2021-01-11 13:20:21.268  INFO 1 --- [           main] DeferredRepositoryInitializationListener : Spring Data repositories initialized!
springboot-postgresql | 2021-01-11 13:20:21.306  INFO 1 --- [           main] com.example.semestral_work.Application   : Started Application in 15.753 seconds (JVM running for 17.887)

但由于 http://localhost:8080/,我无法访问 ERR_CONNECTION_REFUSED 链接。 服务器看起来正在运行,但我无法访问此应用程序的任何页面。 请问我做错了什么?

解决方法

因为你的spring的tomcat还没开始。为此,您需要在不同的终端中启动 docker 或 spring 应用程序。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。