【问题标题】:Spring boot running as container issuesSpring Boot 作为容器问题运行
【发布时间】:2020-02-25 10:19:50
【问题描述】:

我在 docker 容器内运行带有 REST API 的 Spring Boot。当我从 Eclipse 或 jar 运行时,一切似乎都运行良好。但是当我将它 dockerize 并运行时,我面临以下问题

第一 无法访问容器内的 REST 端点。

http://localhost:9000/ --> 有效但是

http://localhost:9000/api/v1/test --> 无法识别。

但是我可以大摇大摆地运行它。

第二个问题 org.postgresql.util.PSQLException: ERROR: permission denied for schema

但是我已经授予了架构的所有权限,例如

GRANT ALL ON SCHEMA < schemaname> TO < username>;
GRANT USAGE ON SCHEMA < schemaname> TO < username>;

这些问题仅在我尝试从容器运行时出现。

用于 docker 的命令

docker run -p 9000:9000 &lt; image name &gt;

我正在使用 spring boot 2.1.9

Dockerfile

FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD run-app.sh run-app.sh
RUN chmod +x run-app.sh
EXPOSE 9000
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} dummy.jar
ENTRYPOINT ./run-app.sh

run-app.sh

java  $JAVA_OPTS -jar /dummy.jar

我的 postgresql 数据库在 aws 中运行。

我的 spring boot 能够启动,但只有在我的 API 查询时我才面临异常

【问题讨论】:

  • [第二期] 你是不是在容器内用 localhost 引用你的数据库?这是我的一个项目,它在 docker 中运行 spring-boot 和 postgres,如果配置有帮助的话:github.com/choudharyhimanshu/survey-panda-api
  • 第一个问题遇到什么错误?
  • 嗨,我的数据库在 aws 中运行。
  • 第一个问题很好,可以通过 curl 命令运行,只在我面对的邮递员中运行,所以不太在意

标签: java postgresql spring-boot docker amazon-aurora


【解决方案1】:

如果可能的话,你能分享 dockerfile 的内容吗,想看看你用端点给出了什么命令。对于您正在使用的 postgresql,它是嵌入在带有 spring boot 应用程序的 docker 中还是其他服务器中?

我已经使用 nginx 和 postgresql dockerized 设置了 Spring Boot,但是在不同的服务器/容器中,它们在生产中运行非常顺利。

【讨论】:

  • 你是如何构建 docker 镜像的?
  • docker build -t :latest .
【解决方案2】:

对于第一个问题,我需要更多详细信息。

对于第二个问题,问题是两个容器不在同一个网络上,因此服务容器无法与 psql 容器通信。您实际上可以创建一个docker-compose.yml 文件以在同一网络上运行这些文件。或者创建一个网络并加入该网络上的容器。

【讨论】:

  • postresql 在 aws 中运行。并且 Spring Boot 容器正在我的本地主机中运行。您能否分享与我的用例相关的 docker-compose.yml 示例
  • 如果它的网络问题更多,那么我的应用程序不应该首先启动。它能够沟通,但只有在查询时我面临这个问题。
  • 你从来没有提到过这个问题。请更新问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-03-30
  • 2021-11-12
  • 2016-09-16
  • 1970-01-01
  • 2020-10-23
  • 2018-11-28
  • 2017-12-01
相关资源
最近更新 更多