小知识:最新IDEA快速实现Docker镜像部署运行的过程详解

背景

使用idea配合docker,实现从javaweb开发,部署,运行全过程。

环境:已经配置好的docker、已经安装好的mysql8容器、一个springBoot 框架的web项目(内含swagger,便于测时)

开启Docker的远程连接

网上的方法找不到对应的docker.service文件,可能版本或者安装方式不同。

通过 systemctl status docker 查找docker.service文件位置:

%小知识:最新IDEA快速实现Docker镜像部署运行的过程详解-猿站网-插图

修改/etc/systemd/system/docker.service文件:

?
1
2
#ExecStart=/usr/bin/dockerd
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock

重启Docker服务:

?
1
2
systemctl daemon-reload
systemctl restart docker.service

2375端口开放:

?
1
2
firewall-cmd –zone=public –add-port=2375/tcp –permanent
firewall-cmd –reload

重启后,验证下2375端口是否是通的:

http://192.168.137.188:2375/info

%小知识:最新IDEA快速实现Docker镜像部署运行的过程详解-1猿站网-插图

注:这个就表示成功了。

idea docker插件配置

idea 2019 3 版已经集成docker,未集成的请自行安装。

%小知识:最新IDEA快速实现Docker镜像部署运行的过程详解-2猿站网-插图

注:docker— 点击“+”后,填入连接名称和linux主机ip:docker对外端口

idea连接docker,熟悉相关界面可用操作:

%小知识:最新IDEA快速实现Docker镜像部署运行的过程详解-3猿站网-插图

注:集成了包括容器,镜像基本的常用命令,具体使用可自己研究,没啥难度。

springboot应用中加入dockerfile

%小知识:最新IDEA快速实现Docker镜像部署运行的过程详解-4猿站网-插图

注:与pom文件同级目录,文件内容如下:

?
1
2
3
4
5
FROM openjdk:8u212-jre
MAINTAINER aliyu<2557170552@qq.com>
COPY target/myframe-0.0.1-SNAPSHOT.jar /myframe-0.0.1-SNAPSHOT.jar
ENTRYPOINT [“java”, “-jar”, “/myframe-0.0.1-SNAPSHOT.jar”]

添加docker 运行配置

%小知识:最新IDEA快速实现Docker镜像部署运行的过程详解-5猿站网-插图

注:1、右键“edit configuration”

2、点击“+”,选择docker

3、选择前面定义的docker连接

4、dockerfile的名称

5、dockerfile的目录位置

6、项目镜像及版本定义

7、run build image 打勾,并命名容器名称,这样可以在创建镜像的后创建容器并运行。

8、配置宿主机与容器的端口映射

9、配置容器固定ip,以避免随机ip导致的类似项目运行找不到服务的问题。固定ip配置请参考:http://blog.java1234.com/blog/articles/628.html

ps:mysql8容器已经配置好默认ip会和这里的ip为同一网段。

10、此处可以预览命令,方便检查错误。

11、配置运行docker run 之前需要重新编译打包项目:
?
1
clean package -U -DskipTest -P test

注:因为开发时是主机访问linux内的mysql容器,而应用生成为容器运行时时应用容器访问mysql容器。yml中mysql配置不一致,所以为docker 部署专门使用test yml配置文件。ps:容器间互相访问,请查看“其他-容器间通信”标题

创建好后,可以看到:

%小知识:最新IDEA快速实现Docker镜像部署运行的过程详解-6猿站网-插图

注:多了一个dockerFile 启动

运行docker 启动配置

点击:

%小知识:最新IDEA快速实现Docker镜像部署运行的过程详解-7猿站网-插图

注:可以完整的看到maven clean 打包的过程,以及docker 构建镜像,创建并启动容器的过程。甚至可以看到容器启动项目的日志

测试访问swagger主页:

%小知识:最新IDEA快速实现Docker镜像部署运行的过程详解-8猿站网-插图

其他

容器之间通信

背景:因为不明白容器之间如何通信,导致配置mysql连接时,url一直不对,一直报数据库连接问题。

宿主机ip加映射端口可以访问mysql8容器:

url: jdbc:mysql://192.168.137.188:3307/db_myframe?serverTimezone=GMT

但是myframe 容器内 通过 宿主机ip加映射端口 访问失败

因为容器和容器之间的通信不一样

不能通过localhost:3306 访问,docker容器中的localhost并不是指宿主机的localhost。

docker在运行时建立了虚拟网卡,并命名为docker0

通过 docker inspect mysql8 找到ip地址 172.17.0.2 ,但是注意容器访问容器,端口需要用容器内的端口,而不是映射到宿主机的3307。

到此这篇关于最新IDEA快速实现Docker镜像部署运行的文章就介绍到这了,更多相关IDEA Docker镜像部署运行内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/mofsfely2/article/details/108844138

声明: 猿站网有关资源均来自网络搜集与网友提供,任何涉及商业盈利目的的均不得使用,否则产生的一切后果将由您自己承担! 本平台资源仅供个人学习交流、测试使用 所有内容请在下载后24小时内删除,制止非法恶意传播,不对任何下载或转载者造成的危害负任何法律责任!也请大家支持、购置正版! 。本站一律禁止以任何方式发布或转载任何违法的相关信息访客发现请向站长举报,会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。本网站的资源部分来源于网络,如有侵权烦请发送邮件至:2697268773@qq.com进行处理。
建站知识

小知识:excel导出在docker环境中总是失败的问题

2023-3-27 15:22:59

建站知识

小知识:用Docker swarm快速部署Nebula Graph集群的教程

2023-3-27 15:37:44

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索