idea连接docker实现一键部署的方法
这篇文章主要介绍了idea连接docker实现一键部署的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
1.修改docker配置文件,打开2375端口
1 2 3 4 5 6 7 8 9 10 11 | [root@s162 docker] # vim /usr/lib/systemd/system/docker.service #查找 ExecStart,在末尾添加 #后面加上-H tcp://0.0.0.0:2375 [root@s162 docker] # systemctl daemon-reload [root@s162 docker] # systemctl start docker ## 查看2375端口是否启用 [root@s162 docker] # lsof -i:2375 COMMAND PID USER FD TYPE DEVICE SIZE /OFF NODE NAME dockerd 27021 root 5u IPv6 352598799 0t0 TCP *:2375 (LISTEN) |
2. Idea安装配置docker插件
2.1. idea-plugins市场安装docker插件
略…
2.2. 配置docker
3.springboot项目部署到docker服务器
3.1. 编写docker/dockerfile
3.2.maven添加docker-maven-plugin插件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | <plugin> <groupId>com.spotify< /groupId > <artifactId>docker-maven-plugin< /artifactId > <version>1.0.0< /version > <configuration> <!--指定生成的镜像名,如果不指定tag,默认会使用latest--> <imageName>jhs/${project.artifactId}:${project.version}< /imageName > <!--添加额外的指定标签, 非必须--> <!-- <imageTags> <imageTag>${project.version}< /imageTag > < /imageTags > --> <!-- 指定 Dockerfile 路径 :项目根路径下--> <dockerDirectory>${project.basedir} /docker < /dockerDirectory > <!--指定远程 docker api地址--> <dockerHost>http: //192 .168.129.162:2375< /dockerHost > <!-- copy资源 --> <resources> <resource> <targetPath>/< /targetPath > <directory>${project.build.directory}< /directory > <include>${project.build.finalName}.jar< /include > < /resource > < /resources > <!--docker build dockerfile时:设置镜像创建时的变量 --> <buildArgs> <JAR_FILE>target/${project.build.finalName}.jar< /JAR_FILE > < /buildArgs > < /configuration > < /plugin > |
3.3. docker:build
使用命令$ mvn clean package docker:build -Dmaven.test.skip=true
构建镜像,在docker服务器上查看镜像是否上传成功:
3.4 docker:tag
docker命令行格式为:
#docker tag <imageId or imageName> <nexus-hostname>:<repository-port>/<image>:<tag>
插件配置<configuration>
补充配置:
1 2 3 4 5 | <configuration> <image>jhs/${project.artifactId}:${project.version}< /image > <!-- docker tag 打标签--> <newName>192.168.129.160:5000/${project.artifactId}:${project.version}< /newName > < /configuration > |
为镜像打上tag标签,为后续的push做准备:mvn clean docker:tag -Dmaven.test.skip=true -DskipDockerBuild
3.5 docker:push
插件配置<configuration>
补充配置:
1 2 3 4 5 6 7 8 9 | <configuration> <!-- docker push 推送到远程镜像仓库--> <!-- serverId: 为在maven setting.xml配置的server信息 id --> <serverId>nexus-docker-registry< /serverId > <registryUrl>192.168.129.160:5000< /registryUrl > <!-- 打上tag的新镜像 push 到nexus--> <imageName>192.168.129.160:5000/${project.artifactId}< /imageName > < /configuration > |
将上文打上tag标签的镜像,推送到私服nexus:mvn clean docker:push -Dmaven.test.skip=true -DskipDockerBuild -DskipDockerTag
3.6 docker插件参数
-DskipDockerBuild
to skip image build-DskipDockerTag
to skip image tag-DskipDockerPush
to skip image push-DskipDocker
to skip any Docker goals
3.7 绑定命令到maven phases
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | <executions> <execution> < id >build-image< /id > <phase>package< /phase > <goals> <goal>build< /goal > < /goals > < /execution > <execution> < id >tag-image< /id > <phase>package< /phase > <goals> <goal>tag< /goal > < /goals > <configuration> <image>jhs/${project.artifactId}:${project.version}< /image > <newName>192.168.129.160:5000/${project.artifactId}:${project.version}< /newName > < /configuration > < /execution > <execution> < id >push-image< /id > <phase>deploy< /phase > <goals> <goal>push< /goal > < /goals > <configuration> <!-- docker push 推送到远程镜像仓库--> <!-- serverId: 为在maven setting.xml配置的server信息 id --> <serverId>nexus-docker-registry< /serverId > <registryUrl>192.168.129.160:5000< /registryUrl > <imageName>192.168.129.160:5000/${project.artifactId}< /imageName > < /configuration > < /execution > < /executions > |
3.8 最佳实践
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 | <properties> <docker.host>http: //192 .168.129.162:2375< /docker .host> <docker.registry.url>192.168.129.160:5000< /docker .registry.url> < /properties > <build> <plugins> <plugin> <groupId>com.spotify< /groupId > <artifactId>docker-maven-plugin< /artifactId > <version>1.0.0< /version > <configuration> <imageName>dic/${project.artifactId}:${project.version}< /imageName > <!--添加额外的指定标签(可配置多个), 若果没做指定,则为latest--> <!-- <imageTags> <imageTag>${project.version}< /imageTag > < /imageTags > --> <!-- 指定 Dockerfile 路径 :项目根路径下--> <dockerDirectory>${project.basedir} /docker < /dockerDirectory > <!--指定远程 docker api地址--> <dockerHost>${docker.host}< /dockerHost > <!-- copy资源 --> <resources> <resource> <targetPath>/< /targetPath > <directory>${project.build.directory}< /directory > <include>${project.build.finalName}.jar< /include > < /resource > < /resources > <!--docker build dockerfile时:设置镜像创建时的变量 --> <buildArgs> <JAR_FILE>target/${project.build.finalName}.jar< /JAR_FILE > < /buildArgs > < /configuration > <executions> <execution> < id >build-image< /id > <phase>package< /phase > <goals> <goal>build< /goal > < /goals > < /execution > <execution> < id >tag-image< /id > <phase>package< /phase > <goals> <goal>tag< /goal > < /goals > <configuration> <image>dic/${project.artifactId}:${project.version}< /image > <newName>${docker.registry.url}/${project.artifactId}:${project.version}< /newName > < /configuration > < /execution > <execution> < id >push-image< /id > <phase>deploy< /phase > <goals> <goal>push< /goal > < /goals > <configuration> <!-- docker push 推送到远程镜像仓库--> <!-- serverId: 为在maven setting.xml配置的server信息 id --> <serverId>nexus-docker-registry< /serverId > <registryUrl>${docker.registry.url}< /registryUrl > <imageName>${docker.registry.url}/${project.artifactId}< /imageName > < /configuration > < /execution > < /executions > < /plugin > < /plugins > < /build > |
4.Docker私服仓库Harbor安装的步骤详解(补充)
https://www.jb51.net/article/161964.htm
到此这篇关于idea连接docker实现一键部署的文章就介绍到这了