软件版本
- 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:
一、IDEA配置Docker
1,暴露Docker后台
在Docker Desktop的设置中勾选下图红色长框中的选项。
2,IDEA中配置连接Docker后台
将上图中的URL填写到下图箭头所指处。
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,项目镜像和容器参数配置
右键点击Dockerfile文件中Run on Docker
按钮,再点击编辑文件菜单选项。依次填写好下图中的序号标出的参数。
5,启动容器
项目中包含数据库和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网卡信息
2,项目配置文件替换
将host和URL都改为上述IP地址。
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 刷新权限信息
4,修改Redis IP访问权限
添加上述IP地址到bind
行。
三、实战结果
在浏览器中输入docker0
的IP地址以及访问接口,得到如下图之结果。