Windows10环境下制作SpringBoot项目的Docker镜像以及与宿主机上MySQL、Redis进行桥接通信

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: Windows10环境下制作SpringBoot项目的Docker镜像以及与宿主机上MySQL、Redis进行桥接通信

软件版本


  • OS: Windows10
  • IDEA: 2020.3
  • JDK: 8
  • MySQL: 5.7
  • WSL:Linux version 5.10.16.3-microsoft-standard-WSL2 (oe-user@oe-host) (x86_64-msft-linux-gcc (GCC) 9.3.0, GNU ld (GNU Binutils) 2.34.0.20200220) #1 SMP Fri Apr 2 22:23:49 UTC 2021
  • Docker Server:

1666188998703.jpg

一、IDEA配置Docker


1,暴露Docker后台


在Docker Desktop的设置中勾选下图红色长框中的选项。

1666189029343.jpg


2,IDEA中配置连接Docker后台


将上图中的URL填写到下图箭头所指处。

1666189044588.jpg


3,编写Dockerfile文件


在项目中src/main创建docker文件夹,在该文件夹下创建Dockerfile文件。内容为:


FROM java:8
MAINTAINER Chambocang
WORKDIR /
ADD iotProject.jar iotProject.jar
RUN bash -c 'touch /iotProject.jar'
EXPOSE 8081
ENTRYPOINT ["java","-Dfile.encoding=UTF-8","-jar","/iotProject.jar"]

4,项目镜像和容器参数配置


1666189082326.jpg

右键点击Dockerfile文件中Run on Docker按钮,再点击编辑文件菜单选项。依次填写好下图中的序号标出的参数。

1666189103053.jpg


5,启动容器


1666189116075.jpg

项目中包含数据库和Redis的使用,其驱动配置中包含的IP都是127.0.0.1,该IP此时表示容器的环回地址,和宿主机上的监听127.0.0.1的MySQL、Redis两码事。因此容器需要访问宿主机上的MySQL、Redis,必须知道能够和宿主机的127.0.0.1通信的IP地址,因此就涉及Docker网络的知识。


二、开通宿主机上MySQL、Redis的IP访问权限


具体知识自行搜索官方WSL2网络相关讲解,该博客给出答案。


1,查询docker0网卡信息

1666189160800.jpg


2,项目配置文件替换


将host和URL都改为上述IP地址。

1666189175795.jpg


3,修改MySQL IP访问权限


mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
mysql>flush privileges;

语句含义如下。


// 其中各字符的含义:
// *.* 对任意数据库任意表有效
// "root" "123456" 是数据库用户名和密码
// '%' 允许访问数据库的IP地址,%意思是任意IP,也可以指定IP
// flush privileges 刷新权限信息

image.png

4,修改Redis IP访问权限


添加上述IP地址到bind行。

image.png


三、实战结果


在浏览器中输入docker0的IP地址以及访问接口,得到如下图之结果。

1666189262540.jpg

相关文章
|
4月前
|
关系型数据库 应用服务中间件 nginx
Docker一键安装中间件(RocketMq、Nginx、MySql、Minio、Jenkins、Redis)
本系列脚本提供RocketMQ、Nginx、MySQL、MinIO、Jenkins和Redis的Docker一键安装与配置方案,适用于快速部署微服务基础环境。
|
24天前
|
NoSQL Java 网络安全
SpringBoot启动时连接Redis报错:ERR This instance has cluster support disabled - 如何解决?
通过以上步骤一般可以解决由于配置不匹配造成的连接错误。在调试问题时,一定要确保服务端和客户端的Redis配置保持同步一致。这能够确保SpringBoot应用顺利连接到正确配置的Redis服务,无论是单机模式还是集群模式。
156 5
kde
|
1月前
|
存储 NoSQL Redis
手把手教你用 Docker 部署 Redis
Redis是高性能内存数据库,支持多种数据结构,适用于缓存、消息队列等场景。本文介绍如何通过Docker快速拉取轩辕镜像并部署Redis,涵盖快速启动、持久化存储及docker-compose配置,助力开发者高效搭建稳定服务。
kde
563 7
|
1月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
292 5
|
2月前
|
NoSQL Java 调度
分布式锁与分布式锁使用 Redis 和 Spring Boot 进行调度锁(不带 ShedLock)
分布式锁是分布式系统中用于同步多节点访问共享资源的机制,防止并发操作带来的冲突。本文介绍了基于Spring Boot和Redis实现分布式锁的技术方案,涵盖锁的获取与释放、Redis配置、服务调度及多实例运行等内容,通过Docker Compose搭建环境,验证了锁的有效性与互斥特性。
181 0
分布式锁与分布式锁使用 Redis 和 Spring Boot 进行调度锁(不带 ShedLock)
|
4月前
|
NoSQL Redis 数据安全/隐私保护
挂载配置文件以Docker启动Redis服务
以上步骤提供了一个高效且实用的方式来使用Docker启动并运行带有自定义配置的Redis服务。这些操作可以适用于开发、测试和生产环境,是一种灵活且可扩展的部署方案。通过挂载配置文件和数据卷,您可以轻松地管理和迁移您的Redis实例。
531 9
|
Java 测试技术 Docker
Spring Boot 学习研究笔记(十九)-docker部署SpringBoot 日志目录挂载
Spring Boot 学习研究笔记(十九)-docker部署SpringBoot 日志目录挂载
821 0
|
Java 应用服务中间件 Linux
使用docker部署springboot项目小白教程
使用docker部署springboot项目小白教程
866 0
|
Java 关系型数据库 Docker
docker打包部署spring boot应用(mysql+jar+Nginx)
docker打包部署spring boot应用(mysql+jar+Nginx)
|
NoSQL Java Redis
利用Docker部署一个简单的springboot项目
利用Docker部署一个简单的springboot项目
422 2