解决Docker部署SpringBoot项目时各容器的相互调用

这篇具有很好参考价值的文章主要介绍了解决Docker部署SpringBoot项目时各容器的相互调用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、项目问题场景:

二、问题分析:

三、解决各容器互相调用的办法:

1、第一步:

2、第二步:

3、第三步:


一、项目问题场景:

项目打包成jar包后,通过

Java -jar xxx.jar

可以正常连接我本地的docker容器中的其他服务,如mysql,nacos,sentinel,rabbitmq等等

但是当我将这个jar包打包成镜像部署到docker时,项目报错,提示信息大概就是,如naco连不上

这是我当时spring boot项目的yml配置文件

spring:
  application:
    name: mq-m
  cloud:
    sentinel:
      transport:
        port: 8719
        dashboard: localhost:8858
      eager: true
    nacos:
      discovery:
        namespace: public
        username: nacos
        password: nacos
        server-addr: localhost:8848
  rabbitmq:
    virtual-host: /
    publisher-confirm-type: correlated
    publisher-returns: true
    listener.:
      direct:
        acknowledge-mode: manual
      simple:
        acknowledge-mode: manual
    host: 127.0.0.1
    port: 5672
    username: guest
    password: guest

  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: root
    password: 1234
    url: jdbc:mysql://localhost:3310/damai?serverTimeZone=UTC
    #使用druid数据源
    type: com.alibaba.druid.pool.DruidDataSource

server:
  port: 6002
二、问题分析:

        因为我的nacos,mysql等服务是部署在docker的容器中的,通过端口映射到我的主机上,所以在java -jar的时候可以正常连接。

        但部署到docker后,因为 容器中的ip地址 和 宿主机的ip地址 是不同的,所以当 nacos 用 localhost 时,其实对应的是 nacos容器的ip地址,所以调用 localhost 时,并不能通过 宿主机的ip地址调用8848端口映射到容器中8848端口.

三、解决各容器互相调用的办法:

 Docker容器网络模式:

       只要将你所需要的服务放到同一个network下,就可以通过容器名直接访问

1、第一步:

  创建network

docker network create testnet

# 查看
docker network ls
2、第二步:

将你需要调用的容器重新启动    --network    testnet

docker run -d -p 8848:8848 -p 9848:9848 -e MODE=standalone --name nacos01 --network testnet nacos/nacos-server

具体就是在容器运行的时候多加一个字段  

 --network    testnet
3、第三步:

简单直接,就比如你java -jar xxx  .jar可以正常运行后

进入这个jar包把yml中的localhost改成对应的容器名

注意:同时端口也要改成对应容器端口,不再使用本机映射端口

修改后的yml文章来源地址https://www.toymoban.com/news/detail-588862.html

spring:
  application:
    name: mq-m
  cloud:
    sentinel:
      transport:
        port: 8719
        dashboard: sentinel01:8858
      eager: true
    nacos:
      discovery:
        namespace: public
        username: nacos
        password: nacos
        server-addr: nacos01:8848
  rabbitmq:
    virtual-host: /
    publisher-confirm-type: correlated
    publisher-returns: true
    listener.:
      direct:
        acknowledge-mode: manual
      simple:
        acknowledge-mode: manual
    host: rabbitmq01
    port: 5672
    username: guest
    password: guest

  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: root
    password: 1234
    url: jdbc:mysql://mysql01:3306/damai?serverTimeZone=UTC
    #使用druid数据源
    type: com.alibaba.druid.pool.DruidDataSource

server:
  port: 6002


#  # rabbitmq
#  # 配置虚拟机
#  spring.rabbitmq.virtual-host=/
#  # 开启消息确认机制 confirm 异步
#  spring.rabbitmq.publisher-confirm-type=correlated
#  # 之前的旧版本 开启消息确认机制的方式
#  # spring.rabbitmq.publisher-confirms=true
#  # 开启return机制
#  spring.rabbitmq.publisher-returns=true
#  # 消息开启手动确认
#  spring.rabbitmq.listener.direct.acknowledge-mode=manual
#  spring.rabbitmq.listener.simple.acknowledge-mode=manual
#  spring.rabbitmq.host=127.0.0.1
#  spring.rabbitmq.port=5672
#  spring.rabbitmq.username=admin
#  spring.rabbitmq.password=123456

到了这里,关于解决Docker部署SpringBoot项目时各容器的相互调用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Docker】安装Nginx容器并部署前后端分离项目

    🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的专栏《Docker实战》。🎯🎯 👉点击这里,就可以查看我的主页啦!👇👇 Java方文山的个人主页 🎁如果感觉还不错的话请给我点赞吧!🎁🎁 💖期待你的加入,一起

    2024年01月23日
    浏览(47)
  • Docker容器与本地文件相互拷贝

    Docker容器中的文件可以与本地进行共享。 1、Docker容器中的文件拷贝至本地 2、本地文件拷贝至容器 注意: 1、此命令是在容器外使用(shell或cmd)。 2、两个命令中容器 ID可以与容器name相互替换使用。 如下图所示,CONTAINER ID和NAMES 都可以在命令中使用。

    2024年02月11日
    浏览(38)
  • 实战:用docker-compose容器化springboot项目

    前面我们学习和实战了用dockerfile构建镜像,通过镜像可以任意在docker环境容器化部署项目。但是作为WEB领域的开发者,大多都是微服务架构,一个项目会有很多的子项目和中间件,一个个的容器化部署会非常的麻烦。那么,此时我们可以用docker-compose批量构建镜像和容器化,

    2024年02月10日
    浏览(42)
  • Docker容器化部署若依微服务ruoyi-cloud项目

    接下来的内容以 Ubuntu 22.04.1 操作系统为例。 验证版本信息 Note: 在 CentOS7 上使用上述 yum 方式安装的 Docker ,默认自带了Docker Compose Plugin,不过命令是 docker compose 。 docker pull docker run docker images docker ps docker logs docker start docker stop docker restart docker rmi docker rm docker exec docker netwo

    2024年02月04日
    浏览(43)
  • 【Docker】Docker部署SpringBoot项目

    名称 版本 说明 Java 8 开发 Maven 3.6.3 打包 Docker 23.0.5 部署 作者以在本地安装并配置好以上基础环境,非Java得小伙伴安装各自语言的环境即可。 需要准备一个springboot项目,确保项目可以正常启动,并且有可访问的接口,后续用于测试。 demo源码放在仓库了,有需要的小伙伴自

    2024年02月02日
    浏览(36)
  • 使用docker-file 将springboot项目打成镜像,发布成容器服务

    [root@localhost ~]# uname -r 3.10.0-862.el7.x86_64 [root@localhost ~]# yum install docker [root@localhost export]# systemctl start docker [root@localhost export]# docker -v Docker version 1.13.1, build 7d71120/1.13.1 [root@localhost export]# systemctl status docker ● docker.service - Docker Application Container Engine    Loaded: loaded (/usr/lib/systemd

    2024年02月13日
    浏览(46)
  • docker 部署springboot项目

    新建Dockerfile 2 3 4查看日志  

    2024年01月25日
    浏览(68)
  • Docker快速部署springboot项目

    有很多开发者在项目部署过程中都会遇到一些繁琐的问题,比如打包、上传、部署等。而使用Docker可以非常方便地解决这些问题。在本文中,将详细讲解如何使用IDEA中的docker打包插件,将代码打包并直接发布到服务器上。这样,我们就可以非常快速地完成项目的部署。当然,

    2024年02月06日
    浏览(46)
  • 2-Docker-应用-多容器部署Django+Vue项目(nginx+uwsgi+mysql)

    基于Linux CentOS 7系统(虚拟机),使用Docker,多容器部署Django+Vue项目 整体部署用到了:Django+Vue+nginx+mysql+uwsgi 先每一个容器单独部署,最后用Docker compose 语法整合,统一部署 参考文章:https://blog.csdn.net/qq_45445505/article/details/135563784 章标题:Docker介绍 节标题:Docker安装 总结梳

    2024年03月10日
    浏览(97)
  • 【docker系列】docker实战之部署SpringBoot项目

    💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老 导航 檀越剑指大厂系列:全面总

    2024年02月05日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包