【问题标题】:Spring boot, postgres inside docker compose cannot reach localhostSpring boot,docker compose中的postgres无法访问localhost
【发布时间】:2021-04-16 10:50:54
【问题描述】:

我有一个带有 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)

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

【问题讨论】:

  • address: 设置有什么影响?将其更改为 http://0.0.0.0:8080 有帮助吗?

标签: java spring postgresql spring-boot docker


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2021-05-04
    • 2020-04-23
    • 1970-01-01
    • 2020-10-12
    • 1970-01-01
    • 2019-11-14
    • 2019-11-22
    • 1970-01-01
    相关资源
    最近更新 更多