Jar 在主机上运行但在 docker 容器中失败

2023-12-06

我有一个jar在我的主机上运行良好;具体来说,当我跑步时

java -jar myjar.jar

我得到预期的输出:

[2018-12-05 16:46:53.917] boot - 21252 INFO [main] --- 应用程序:没有活动配置文件集,回退到默认配置文件:默认

[2018-12-05 16:47:00.855] boot - 21252 INFO [main] --- 应用程序:在 8.176 秒内启动应用程序(JVM 运行时间为 9.106) 这就是核心数据微服务。

[2018-12-05 16:47:00.856] boot - 21252 INFO [main] --- 应用程序:注册事件队列

[2018-12-05 16:47:00.857] boot - 21252 INFO [main] --- ZeroMQEventSubscriber:获取订阅者,监听 tcp://localhost:5565

[2018-12-05 16:47:00.915] boot - 21252 INFO [main] --- ZeroMQEventSubscriber:正在监视新的事件消息...

但后来,我尝试运行相同的jar在 docker 容器内。所以我创建这样的图像:

FROM openjdk:8-jdk-alpine
COPY myjar.jar /opt/spring-cloud/lib/
ENTRYPOINT ["/usr/bin/java"]
CMD ["-jar", "/opt/spring-cloud/lib/myjar.jar"]
EXPOSE 48080

并运行它:

sudo docker run [ID]

但这一次,我从容器日志中得到了这个异常(这只是异常的一部分,因为它太大了,但如果需要的话我可以显示全部):

[2018-12-07 08:30:31.447] boot - 1  INFO [main] --- Application: No active profile set, falling back to default profiles: default

[2018-12-07 08:32:35.423] boot - 1 ERROR [main] --- SpringApplication: Application startup failed

...

...

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'readingControllerImpl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: org.edgexfoundry.dao.ValueDescriptorRepository org.edgexfoundry.controller.impl.ReadingControllerImpl.valDescRepos; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'valueDescriptorRepository': Invocation of init method failed; nested exception is org.springframework.dao.DataAccessResourceFailureException: Timed out after 120000 ms while waiting for a server that matches AnyServerSelector{}. Client view of cluster state is {type=Unknown, servers=[{address=localhost:27017, type=Unknown, state=Connecting, exception={com.mongodb.MongoException$Network: Exception opening the socket}, caused by {java.net.ConnectException: Connection refused (Connection refused)}}]; nested exception is com.mongodb.MongoTimeoutException: Timed out after 120000 ms while waiting for a server that matches AnyServerSelector{}. Client view of cluster state is {type=Unknown, servers=[{address=localhost:27017, type=Unknown, state=Connecting, exception={com.mongodb.MongoException$Network: Exception opening the socket}, caused by {java.net.ConnectException: Connection refused (Connection refused)}}]
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:334)

...

...

Caused by: com.mongodb.MongoTimeoutException: Timed out after 120000 ms while waiting for a server that matches AnyServerSelector{}. Client view of cluster state is {type=Unknown, servers=[{address=localhost:27017, type=Unknown, state=Connecting, exception={com.mongodb.MongoException$Network: Exception opening the socket}, caused by {java.net.ConnectException: Connection refused (Connection refused)}}]
    at com.mongodb.BaseCluster.getServer(BaseCluster.java:82)
    at com.mongodb.DBTCPConnector.getServer(DBTCPConnector.java:664)
    at com.mongodb.DBTCPConnector.access$500(DBTCPConnector.java:40)
    at com.mongodb.DBTCPConnector$MyPort.getConnection(DBTCPConnector.java:513)
    at com.mongodb.DBTCPConnector$MyPort.get(DBTCPConnector.java:456)
    at com.mongodb.DBTCPConnector.getPrimaryPort(DBTCPConnector.java:415)
    at com.mongodb.DBCollectionImpl.createIndex(DBCollectionImpl.java:378)
    at com.mongodb.DBCollection.createIndex(DBCollection.java:597)
    at org.springframework.data.mongodb.core.index.MongoPersistentEntityIndexCreator.createIndex(MongoPersistentEntityIndexCreator.java:142)
    ... 57 more

Mongo 已通过 docker-compose 在另一个容器中启动(与其他容器中的其他服务一起):

ps aux | grep mongo

root     16226  0.0  0.0   4340   768 ?        Ss   10:27   0:00 /bin/sh -c /edgex/mongo/config/launch-edgex-mongo.sh
root     16292  0.0  0.0   4340   764 ?        S    10:27   0:00 /bin/sh /edgex/mongo/config/launch-edgex-mongo.sh
root     16293  0.5  0.3 961168 61400 ?        SLl  10:27   0:05 mongod --smallfiles

这是 docker-compose 文件:

version: '3'

services:
  volume:
    image: edgexfoundry/docker-edgex-volume:0.6.0
    container_name: edgex-files
    networks:
      - edgex-network
    volumes:
      - db-data:/data/db
      - log-data:/edgex/logs
      - consul-config:/consul/config
      - consul-data:/consul/data

  mongo:
    image: edgexfoundry/docker-edgex-mongo:0.6.0
    ports:
      - "27017:27017"
    container_name: edgex-mongo
    hostname: edgex-mongo
    networks:
      - edgex-network
    volumes:
      - db-data:/data/db
      - log-data:/edgex/logs
      - consul-config:/consul/config
      - consul-data:/consul/data
    depends_on:
      - volume

.... more services...

 networks:
   edgex-network:
     driver: "bridge

以及 mongo db 配置属性:

spring.data.mongodb.username=core
spring.data.mongodb.password=password
spring.data.mongodb.database=coredata
#change to localhost when running locally during development 
# (or set hosts to point edgex-mongo to the mongo host
spring.data.mongodb.host=localhost
#spring.data.mongodb.host=edgex-mongo
spring.data.mongodb.port=27017
spring.data.mongodb.connectTimeout=120000
spring.data.mongodb.socketTimeout=60000
spring.data.mongodb.maxWaitTime=120000
spring.data.mongodb.socketKeepAlive=true

有什么想法可能出了什么问题吗?


这里有两件事出了问题,首先 spring 尝试连接到你的 mongodblocalhost,在 docker 中这不起作用,因为localhost对当前容器的引用,其中当然没有 mongodb 可用。要解决此问题,您必须注释掉此行并取消注释下一行,该行将主机列为edgex-mongo它与 mongodb 容器的主机名相对应,因此 spring 知道要连接到该容器。

但是,当您这样做时,您会遇到它无法识别的问题edgex-mongo因为它与该容器没有连接。edgex-mongo位于桥接网络内,需要使用以下命令将 spring 容器添加到该网络:

docker run --network edgex--network [image]

我希望这可以帮助你

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Jar 在主机上运行但在 docker 容器中失败 的相关文章

  • Mongo:按键查询一层深

    是否可以在 Mongo 查询中使用 存在 之类的内容来根据 ID 返回此记录 就像是选择 ids 包含密钥 123456 的位置 department Digging ids 123456 color blue 123457 color r
  • Mongodb 聚合使用 $group 两次

    我在 mongo 中有一堆文档 其结构如下 id number 2 colour id name Green hex 00ff00 position id name Defence type position ageGroup id nam
  • 如何在 minikube VM 中挂载 Host 文件夹

    我有一个用例 我需要 kubernetes 下的 Docker 容器来访问主机路径 我使用的是 minikube 容器能够访问 minikube VirtualBox VM 中的文件夹 但我不知道如何让它访问主机本身上的文件夹 我在主机上执
  • Mongodb简单前缀查询与正则表达式和排序很慢

    我被这个简单的前缀查询困住了 虽然蒙戈文档 http www mongodb org display DOCS Advanced Queries AdvancedQueries RegularExpressions声明您可以通过使用前缀正则
  • 当使用带 _id 的复合分片键时,MongoDB 是否确保唯一的 _id 字段值

    我想启动分片 如您所知 分片键非常重要 我发现 使用 id 以外的分片键时 MongoDB 不确保 id 字段值唯一 http docs mongodb org manual faq sharding how does mongodb en
  • 如何使用 Docker 镜像 jupyter/pyspark-notebook 在 jupyter-notebook 上禁用密码或令牌登录

    我正在运行 dockerdocker run it p 8888 8888 jupyter pyspark notebook usr local bin start notebook sh running hooks in usr loca
  • 查找聚合中的管道在 mongodb 中不起作用

    我是 mongodb 的新手 所以我希望这不会成为一个非常基本的问题 我做了一些研究 并试图应用我所发现的东西 但有些东西似乎让我忽略了 我有两个以下格式的集合 Shop shopId 1002 shopPosId 10002 descri
  • 猫鼬模式创建

    我刚刚开始使用猫鼬 我有一个使用 mongoose 的创建脚本 它使用示例数据创建模式和数据库 现在我编写实际的应用程序 我是否需要在每次应用程序运行时创建架构对象 或者它是否已经以某种方式可用 换句话说 我是否需要在每个使用 mongoo
  • 使用 Docker-Compose 运行 Google Firestore 模拟器

    我正在尝试运行我的 Node 项目以及 Firestore 模拟器docker compose在本地开发环境中 我的 Node 项目有一个 Dockerfile 如下所示 WORKDIR app ADD package json RUN n
  • 在 Nginx 容器 wsl2 上运行 Laravel 时 Docker 非常慢

    我已经将Windows 10更新到2004最新版本 安装了wsl2并更新了它 安装了docker和ubuntu 当我创建一个简单的索引 php文件与 Hello World 它工作完美 响应 100 400ms 但是当我添加我的Larave
  • Docker:尝试连接时发生错误

    在 Windows 上安装了 Docker 另外还安装了 2 个 Oracle VM VirualBox 和 Kitematic 我已在 Windows 10 电脑中禁用 Hyper V 现在的问题是我无法从 DockerHub 下载任何
  • 将虚拟主机分配给 Docker 端口

    我设置了通配符 DNS 以便对自定义域 foo 的所有 Web 请求都映射到 Docker 主机的 IP 地址 如果我有多个运行 Apache 或 Nginx 实例的容器 每个容器都会将 Apache 端口 80 映射到某个外部入站端口 我
  • 正则表达式 Spring 数据 mongodb 存储库

    早上好 我正在尝试使用查询注释将正则表达式与 Spring data mongodb 存储库结合起来 我想要的是在我的 mongo 文档的一个字符串属性中搜索一个子字符串 我一直在谷歌和这里寻找 但我没有找到任何优雅的东西 我想知道 Spr
  • 从 Eclipse 中的工作应用程序导出后出现 ClassNotFoundException

    因此 在将项目导出到可运行的 jar 后 我收到此消息 我很不明白为什么会这样 因为应用程序正在运行完美当我在 Eclipse 中选择 运行 时 我已经尝试过提取和打包可靠的库 但没有雪茄 有人知道该怎么办吗 Exception in th
  • Spring mongodb 指南针缺少创建的数据/集合

    我使用 spring 将数据保存到数据库 RepositoryRestResource collectionResourceRel operators path operators public interface OperatorsRep
  • 我可以通过mongo shell重启mongodb服务器吗?

    我可以通过 mongo CLI 客户端重新启动 MongoDB 服务器吗 您无法从客户端停止和启动 重新启动 它 正如 i kimiko 已经提到的 你可以在客户端上关闭它db shutdownServer 通过 mongo shell数据
  • MongoDB - 编辑器变量 - MongoDB shell - Windows 7

    EDITOR 变量功能真的可以在 Windows 7 上使用吗 我正在读一篇文章 说一旦我们设置了 EDITOR 变量在 mongorc js 中 我们只需在 shell 中输入 编辑变量名 and var name将被加载到编辑器中 在我
  • 使用 Docker compose 连接到另一个容器

    我需要一起使用两个容器 一个用于 Tomcat 另一个用于数据库 我创建了以下描述服务的 yaml 文件 postgredb image postgres expose 5432 ports 5432 5432 environment PO
  • 如何在minikube中创建多个集群

    我需要在 minikube 中创建额外的集群 我搜索了一段时间没有找到任何这方面的资源 如何在 minikube 中创建集群 创建第一个名为cluster 1 minikube start p cluster 1 创建第二个集群 名称为cl
  • Windows 8.1可以安装Docker吗?

    我想使用 Docker 将带有 NET Core 3 1 的 Web 应用程序部署到 Heroku 我下载了它 然后告诉我应该使用 Windows 10 适用于 Windows 的 Docker 需要 Windows 10 如果您使用 Wi

随机推荐

  • SWI-Prolog:将文本原子拆分为字符列表

    非常简单的问题 我知道有很多方法可以分割原子 例如在某些分隔符上分割 示例原子 例如 gt 示例 原子 但是有没有办法分割每个字符 例如 e x a o m 我试过了 atomic list concat List Atom 但这会产生错误
  • 一个块中有多个 try 代码

    我的 try 块中的代码有问题 为了简单起见 这是我的代码 try code a code b if b fails it should ignore and go to c code c if c fails go to d code d
  • 在R中构建单词共现边缘列表

    我有一大块句子 我想构建单词共现的无向边缘列表并查看每个边缘的频率 我看了一下tm包但没有找到类似的功能 有一些我可以使用的包 脚本吗 多谢 注意 单词不与其自身同时出现 出现两次或多次的单词在同一个句子中仅与其他单词同时出现一次 DF s
  • 如何在jquery中正确缓存DOM元素?

    我在从命名空间变量访问缓存的 DOM 元素时遇到一些问题 我的 FeedManager 配置变量是这样的 var FeedManager config feedContainer feedContainer feedUrl http rss
  • 使用 makecert 进行开发 SSL

    这是我的情况 我正在尝试创建一个 SSL 证书 该证书将安装在所有开发人员的计算机上 以及两个内部服务器 一切都是非生产的 我需要做什么来创建一个可以安装在所有这些地方的证书 现在 我使用 Microsoft Visual Studio 8
  • 使用 Jersey 在正文请求中 POST JSON

    我有一个 Java 动态 Web 项目 部署在本地应用程序服务器 Tomcat 7 上 它使用 Jersey 来创建 REST API 我不使用任何构建自动化工具 因此我的库被添加到构建路径中 并且 servlet 被插入到 web xml
  • 使用 Plotly 与 Slider 进行交互式绘图

    如何使用 Plotly 在 Python 中重新创建以下交互式绘图 我的简单示例绘制了一个条形图 其中一列为 x 另一列为 1 x 来自 Mathematica 的 GIF 滑块允许 x 在 0 到 1 之间变化 数学代码 Manipula
  • 如何在嵌套 JSON 值上使用 SwiftyJSON

    我正在调用一个 JSON API 它有几个我需要获取的嵌套值 我使用 SwiftyJSON 来让事情变得更干净一些 对于顶级值 一切似乎都工作正常 但在更深层次的情况下 我得到了可怕的 展开可选值时为零 以下是我使用 Alamofire 进
  • 如何仅解决 chrome - ERR_HTTP2_PROTOCOL_ERROR - 加载图像问题。 ? (2022)

    这种情况仅在最近几天 2022 年 1 月 开始发生 并且仅在 Chrome 中发生 例如 97 0 4692 99 官方版本 64 位 如果我的页面上有 10 多个图像 chrome 会随机无法下载一些图像 原因如下 失败 net ERR
  • 同一页面中的两个jquery分页插件似乎不起作用

    我使用 jquery 分页插件进行分页 如果有一个分页插件对我来说没有问题 但是如果有两个 一个似乎可以工作 但另一个似乎不起作用 这是我的代码 div class pager div br br br div div div class
  • 如何按日期对图库缩略图图像进行排序

    我正在开发一个安卓应用程序 该应用程序从图库中获取所有缩略图 我想按日期对这些缩略图进行排序 但我做不到 请帮我 获取所有图像 Set up an array of the Thumbnail Image ID column we want
  • Web Deploy 3.0 发布时出现令人恼火的 401 错误

    我似乎无法将简单的应用程序部署到我作为管理员的 IIS 服务器 这是我从 VS2010 收到的错误消息 修改域名以保护无辜者 Build started Project HelloWorldWeb Configuration Debug A
  • 保存 WPF 应用程序页面的状态

    我正在 WPF 中创建一个软件 在该软件中 用户可以加载图像并配置地图 基本上 一旦加载 地图的 图像 用户就可以添加其他图像 如宝藏或怪物的图片等 将它们拖放到地图的图像中 当用户关闭软件并重新打开它时 我希望最后打开的图像和添加的 UI
  • 如何在 laravel 中创建从 public/storage 到 storage/app/public 的符号链接?

    我不知道如何创建符号链接 or symlink 我正在 Laravel 5 2 中的文件系统上工作 该文件说我需要创建一个符号链接 from 公共 存储 to 存储 应用 公共将可公开访问的文件保存在一个目录中 如何创建符号链接或符号链接
  • 使用 FFmpeg 时删除连续重复的帧

    有没有什么方法可以使用来检测视频中的重复帧ffmpeg I tried vf标志与select gt scene 0 xxx 用于场景变换 但是 它对我的 情况不起作用 Use the mp抽取过滤器 其目的是 丢弃与前一帧差异不大的帧 以
  • 抑制 Firebase 错误登录失败的signInWithEmailAndPassword

    我正在尝试在 NextJS 中使用 Firebase 身份验证来实现登录功能 尽管登录函数的处理程序中的 catch 语句为空 但使用无效登录详细信息调用该函数会向控制台记录错误 如何禁止 Firebase 将此错误记录到控制台 登录函数处
  • 如何使用多线程发送 MailMessages?

    我希望你们能容忍我在线程方面完全缺乏方向 我必须实现一个邮件队列处理系统 我必须通过 Windows 服务发送在数据库中排队的电子邮件 它不是生产者 消费者模式 我一次将 10 行提取到数据表中 数据表包含序列化的 MailMessage
  • 如何在 Angular 中对卡片进行分页?

    我正在尝试制作剧集指南 每一集都显示在卡片上 共有 25 张卡片 每页显示 6 张 我有可用的 下一个 和 上一个 按钮 但需要通过分页系统对此进行改进 该系统每个屏幕显示 6 张卡片 并且您可以使用上一个 1 2 3 等进行导航 这是我到
  • 使用 swing GUI 在下载文件时显示进度条[重复]

    这个问题在这里已经有答案了 我目前有一堂课应该在下载文件时向我显示一个简单的表单 它正在工作 但进度条没有更新 只有下载完成后我才能看到它 有人能帮我吗 import java awt FlowLayout import java io i
  • Jar 在主机上运行但在 docker 容器中失败

    我有一个jar在我的主机上运行良好 具体来说 当我跑步时 java jar myjar jar 我得到预期的输出 2018 12 05 16 46 53 917 boot 21252 INFO main 应用程序 没有活动配置文件集 回退到