Springboot 容器使用 docker-compose 连接到 mongo 容器的 503 错误代码

Posted

技术标签:

【中文标题】Springboot 容器使用 docker-compose 连接到 mongo 容器的 503 错误代码【英文标题】:503 error code for Springboot container connecting to mongo container using docker-compose 【发布时间】:2020-03-05 21:46:14 【问题描述】:

我正在尝试将在 Tomcat 容器中运行的 spring-boot 应用程序(REST 端点)与 mongo 容器连接起来。我正在使用 docker-compose 链接两个容器。该应用程序运行良好。它只是突然停止工作。

以下是我的代码:

Dockerfile:

FROM tomcat:9.0.13
WORKDIR /usr/local/tomcat/webapps
#COPY pom.xml .
#RUN ["mvn", "clean", "install"]
COPY /target/TestProfileManager.war .

docker-compose.yml:

version: '3'
services:
 app:
  container_name: VF-BACKEND
  restart: always
  build: .
  ports:
   - "8083:8080" #VF Webservice
  depends_on:
   - mongo
  links:
   - mongo
 mongo:
  container_name: VF-MONGO
  image: mongo:4.0.2
  ports:
   - "27018:27017"
  volumes:
   - /data/vfdb:/data/db

application.properties

spring.data.mongodb.uri=mongodb://mongo:27018/tsp

如果我从 IDE 将应用程序作为独立应用程序运行,端点会返回响应。仅在容器通信期间,我收到 503。我找不到任何回答我问题的帖子。

感谢您的帮助。因为,代码以前可以工作,而不是粘贴类。如果我也应该分享它们,请告诉我。

【问题讨论】:

容器到容器的通信总是使用服务器进程实际监听的任何端口;它忽略 ports: 并且不知道重新映射。尝试更改为默认的 MongoDB 端口 27017。 【参考方案1】:

应该是mongodb://mongo:27017,在服务到服务的通信中你不需要使用发布端口。

注意HOST_PORTCONTAINER_PORT。 HOST_PORT 是27018,容器端口是 27017联网的服务到服务通信使用 CONTAINER_PORT

compose-networking

【讨论】:

以上是关于Springboot 容器使用 docker-compose 连接到 mongo 容器的 503 错误代码的主要内容,如果未能解决你的问题,请参考以下文章

Vulhub漏洞CVE-2017-10271复现

是否可以运行 Prometheus 和 Grafana docker 容器但使用安装在主机中的 node-exporter?

docker compose 的安装和入门实战

docker compose 的安装和入门实战

堆栈(Stacks)

创建 ASP.NET Core Web API 后端容器,包括为前端恢复的数据库