
IDEA使用Docker部署项目
1)Linux虚拟机上在Docker基础上,(2)docker文件配置docker.service文件(所在目录(2.1)修改内容如下Docker是默认拒绝连接的,需开放连接docker端口-Htcp//0.0.0.02375(2.2)重新加载并重启Docker(3)服务器防火墙设置如图查看防火墙状态关闭防火墙状态开启防火墙命令或添加端口到防火墙中查看端口是否开放添加端口到防火墙(注。......
一、前提准备:
(1)Linux 虚拟机上:在Docker基础上,安装docker-compose
(2)docker文件配置:docker.service文件(所在目录 : /usr/lib/systemd/system)
(2.1)修改内容如下:Docker是默认拒绝连接的,需开放连接docker端口
ExecStart=... -H tcp://0.0.0.0:2375
(2.2)重新加载并重启Docker:systemctl daemon-reload、systemctl restart docker
(3)服务器防火墙设置:
如图:
查看防火墙状态:systemctl status firewalld

关闭防火墙状态:systemctl stop firewalld

开启防火墙命令:systemctl start firewalld
或 添加端口到防火墙中
查看端口是否开放:firewall-cmd --query-port=2375/tcp
添加端口到防火墙:firewall-cmd --zone=public --add-port=2375/tcp --permanent
(注:--zone为作用域,--add-port为开放端口,--permanent为永久开放,
添加完重启一下虚拟机)
(4)docker-compose.yml文件配置多服务启动参数
编辑内容参考如下:
#定义版本(compose版本有:1,2,3) version: '版本' #定义服务 services: service-1: image: 镜像名:版本 ports: - 映射端口:服务1端口 networks: - 所属工作网络名 service-2: image: 镜像名:版本 ports: - 映射端口:服务2端口 networks: - 所属工作网络名 server-n: image: 镜像名:版本 ports: - 映射端口:服务n端口 networks: - 所属工作网络名 #定义全局网络名 networks: #无此网络名可以创建一个,命令docker network ls/create 网络名(查看/创建) #注:创建网络时,Linux防火墙关闭时是无法创建的,需要开启防火墙时才可创建 自定义工作网络名: #默认使用bridge external: true
(5)docker私有仓库配置:(可选)
(5.1)拉取镜像命令:docker pull registry
(5.2)启动镜像命令:
docker run -d -p 5000:5000 -v /etc/docker/registry:/var/lib/registry
--restart always --name registry registry:latest
(5.3)文件配置:daemon.json文件
(所在目录:/etc/docker,没有就创建,有些版本需配置)
(5.3.1)编辑内容如下:ip:port为私有仓库地址
{
"insecure-registries":["ip:5000"]
}
(5.3.2)添加端口到防火墙:
firewall-cmd --zone=public --add-port=2375/tcp --permanent
(注:添加完重启一下Linux虚拟机)
(5.3.3)重新加载并重启Docker服务:
systemctl daemon-reload、systemctl restart docker
二、IDEA集成Docker
(1)项目父工程pom.xml引入管理Docker插件并配置上传Docker信息,需要打包子模块引入
Docker插件
<!--引入插件-->
<build>
<!--父工程打包名-->
<finalName></finalName>
<!--插件管理-->
<pluginManagement>
<plugins>
<!--打包插件-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<!---->
<executions>
<execution>
<goals>
<!--可以把依赖的包都打包到生成的Jar包中-->
<goal>repackage</goal>
</goals>
</execution>
</executions>
<!---->
<configuration>
<fork>true</fork>
</configuration>
</plugin>
<!-- 跳过单元测试 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
<!--使用docker-maven-plugin插件-->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<!--
将插件绑定在某个phase执行
(只上传有引用打包插件的模块,即有主启动类的模块)
-->
<executions>
<execution>
<id>build-image</id>
<!--
用户只需执行mvn package ,
就会自动执行mvn docker:build
-->
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
<!--项目上传docker配置-->
<configuration>
<!--jdk版本1.8-->
<baseImage>java:8</baseImage>
<!--项目镜像名(注:ip:port为私有仓库地址,可选)-->
<imageName>
ip:port/${project.artifactId}:${project.version}
</imageName>
<!--项目版本-->
<imageTags>
<imageTag>${project.version}</imageTag>
</imageTags>
<!--容器启动命令(多环境)-->
<entryPoint>
[
"java", "-Djava.security.egd=file:/dev/./urandom",
"-jar",
"-Duser.timezone=GMT+08",
"/${project.build.finalName}.jar"
]
</entryPoint>
<!--是否推送到docker私有仓库(可选)-->
<pushImage>true</pushImage>
<registryUrl>ip:port</registryUrl>
<!--生成镜像-->
<resources>
<resource>
<targetPath>/</targetPath>
<!--项目中target目录-->
<directory>${project.build.directory}</directory>
<!--此目录打包的jar包-->
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
<!--docker主机地址-->
<dockerHost>http://ip:2375</dockerHost>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
(2)IDEA设置Docker连接配置
如图:File --> Settings --> Build, Execution, Deployment --> Docker

(3)IDEA操作Docker管理工具
如图:IDEA中View --> Services --> Add Configuration Type -->Docker

(4)使用Maven中命令打包上传docker
如图:在父工程(root)Maven的Lifecycle中命令先clean,再package,
出现Building image 即为在构建项目镜像

或 IDEA控制台输入mvn clean package命令
更多推荐



所有评论(0)