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

Docker上带有MongoDB的Spring Boot

卫阳炎
2023-03-14

在这些日子里,我正在尝试部署我的Spring Boot OAuth2项目。它有3个不同的模块。(身份验证服务器,资源服务器和前端)身份验证和资源服务器有自己的*.yml文件配置,如mongodb名称-端口,服务器配置文件-IP等。我正在尝试做什么?我想在docker上部署Spring Boot应用程序,但我不想把我的数据库(mongodb)作为容器放在docker上。我不确定这种结构是否可行?因为当我在本地(localhost:27017)上运行mongodb之后,尝试将spring boot应用程序作为容器部署在本地docker上时,我会得到mongodb的超时异常。应用程序无法连接到外部mongoDB(非docker容器)。

我该怎么办?我应该在Docker上运行mongodb吗?我也试了一下,Mongo运行成功,但spring容器仍然不能运行和连接到Mongo。我尝试在没有mongodb的情况下运行另一个spring boot应用程序,它运行成功,并且我通过IP&Port向浏览器发出请求,我得到了应用程序的响应。

*** MONGO URL ****
mongodb://127.0.0.1:27017/db-localhost

**** Authentication server .yml file   ****
server:
    port: 9080
    contextPath: /auth-service
    tomcat:
          access_log_enabled: true
          basedir: target/tomcat
security:
    basic:
        enabled: false
spring:
    profiles:
        active: development
    thymeleaf:
        cache: false
mongo:
    db:
      server: 127.0.0.1
      port: 27017
logging:
 level:
  org.springframework.security: DEBUG

---

spring:
  profiles: development
  data:
    mongodb:
      database: db-localhost

---

spring:
  profiles: production
  data:
    mongodb:
      database: db-prod

---


***** DOCKER FILE *******
FROM java:8
VOLUME /tmp
ADD auth-server-1.0-SNAPSHOT.jar app.jar
EXPOSE 9080
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]


**** DOCKER COMMAND *******
docker run -it -P --name authserver authserver

共有1个答案

太叔超英
2023-03-14

配置的问题是从127.0.0.1上的authservice内部引用mongodb,后者是authservice容器内部的环回适配器。所以您告诉spring应用程序mongodb运行在与authservice spring应用程序相同的容器中,而事实并非如此。

您可以将数据库作为自己的容器运行(这需要正确处理数据卷),并使用容器名作为主机名(通过链接)引用它,或者需要使用正确的地址引用外部运行的mongodb实例。这将是运行docker守护进程的机器的ip地址(对于您的本地环境,我假设类似于192.168.0.xxx)。

 类似资料:
  • 问题内容: 我正在构建一个使用postgresql在NodeJS上运行的应用程序。我正在将SequelizeJS用作ORM。为了避免使用真正的postgres守护程序并在自己的设备上安装nodejs,我使用了带有docker- compose的容器。 当我运行 它启动pg数据库 和nodejs服务器。但服务器无法连接到数据库。 如果我尝试在不使用容器的情况下运行服务器(在我的计算机上使用真正的no

  • 我的MongoDB卡住并返回以下错误: 但是,我的磁盘有空间: df-h df-i 这将是我的docker撰写: 这对我的码头工人来说是个问题。yml?因为我使用的是物理磁盘,而不是虚拟磁盘。我可以运行应用程序,1-2小时后mongo将再次失败。

  • 我在Docker上有分片系统。我有一个带有副本集的6个碎片(P-S-A)、带有副本集的配置服务器和2个mongo服务器。

  • 我可以将其更改为正确的容器主机名-->plaintext://kafka:9092,但这样我就无法用其他应用程序再次访问kafka实例了。有什么简单的方法可以解决这个问题吗?

  • What is MongoDB® packaged by Bitnami? MongoDB® is a cross-platform document-oriented database. Classified as a NoSQL database, MongoDB® eschews the traditional table-based relational database structur

  • 问题内容: 我需要从Docker容器中在后台运行的Java应用程序中启动Selenium。启动失败,因为在运行时无法访问X11环境。请参阅下面的内容。 我该怎么办? 问题 我从安装Java 8和Jetty 9.3.x 的简单程序开始运行一个简单的服务(实际上是selenium的东西)。该服务实际上是为了启动一些需要UI才能执行的事情而设置的。我遇到的问题是其中的任何内容执行失败,因为UI在我运行的