guns项目(springboot+maven)打包Docker镜像并自动部署至Docker服务器运行项目
1. 在windows 10 环境下安装docker
1.1. 下载地址:
https://docs.docker.com/docker-for-windows/install/#download-docker-for-windows
备注:该软件一直进行下一步安装即可,需要开启Hyper-v,不然运行不起来
1.2. 软件配置
软件安装完成后,在任务栏会出现docker图标,指向图标右击选择 》 settings 》 General 》 勾选(Expose daemon on tcp://localhost:2375 without TLS),开启该功能后,docker才能进行远程连接。
2. 程序打包配置【以eclipse为例】
2.1. 修改pom.xml文件
<!--使用docker-maven-plugin插件 -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.13</version>
<!--将插件绑定在某个phase执行 -->
<executions>
<execution>
<id>build-image</id>
<!--将插件绑定在package这个phase上。也就是说,用户只需执行mvn package ,就会自动执行mvn docker:build -->
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
<configuration>
<!--指定生成的镜像名 -->
<imageName>${project.artifactId}</imageName>
<!--指定标签 -->
<imageTags>
<imageTag>latest</imageTag>
</imageTags>
<!-- 指定 Dockerfile 路径 -->
<dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>
<!--指定远程 docker api地址 -->
<dockerHost>http://localhost:2375</dockerHost>
<!-- 这里是复制 jar 包到 docker 容器指定目录配置 -->
<resources>
<resource>
<targetPath>/</targetPath>
<!--jar 包所在的路径 此处配置的 即对应 target 目录 -->
<directory>${project.build.directory}</directory>
<!-- 需要包含的 jar包 ,这里对应的是 Dockerfile中添加的文件名 -->
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
备注:
- 以上docker-maven-plugin版本必须设置为:0.4.13。1.0.0版本会报错:no String-argument constructor/factory method to deserialize from String val
- dockerHost配置可以更改为任意远程docker地址,前提是必须开启2375端口并配置docker远程访问
2.2. 创建Dockerfile文件
在项目src/main下创建docker文件夹,并在该文件夹内创建Dockerfile文件,填入如下配置:
FROM java:8
# 挂载临时目录
VOLUME /tmp
# 添加指定jar包到容器
ADD your-package.jar app.jar
# 容器向外暴露的端口号
EXPOSE 80
# 容器运行程序的命令
ENTRYPOINT [ "java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app.jar" ]
备注: 本项目使用的是jdk8,your-package 为maven打包生成的程序包名(jar)详见pom.xml内artifactId配置(该名称字母必须小写,大写docker会报错提示找不到相应的jar),其他Dockerfile配置项详见:https://docs.docker.com/develop/develop-images/dockerfile_best-practices/
2.3. 使用maven打包项目
- 普通springboot 项目直接 Run As > Maven install 即可。
- guns项目需要使用guns提供的打包方式: Run As > Maven build… 选项,在Goals 选项中填写:clean package -Dmaven.test.skip=true 然后点击run打包运行。
2.4. 打包结果
当页面控制台出现Build success时说明打包部署成功,截图如下:
2.5. 查看docker中的镜像
进入cmd使用命令 docker image ls 或 docker images 查看本地镜像资源包,结果如下:
上图所示,打包的docker镜像已经自动上传至docker服务器。
2.6. 在容器中运行docker镜像及其他操作
运行命令:docker run -d -it -p 8080:80 --name xxx 镜像名/IMAGE ID
查看运行状态:docker ps -a
查看日志: docker logs -f -t --tail 容器名/容器ID
停止/启动/重启容器:docker stop / start / restart 容器ID/容器名称
删除容器:docker rm 容器ID/容器名称
删除镜像:docker rmi 镜像名/IMAGE ID
备注: 运行命令中 -d 为在后台运行 -it 为立即运行容器 -p 为 端口映射,格式为:宿主机端口:容器端口 --name 为指定容器名
2.利用Docker Client远程工具进行docker操作
2.1 下载安装Dcoker远程链接工具
下载地址:Docker Client v1.0 远程链接工具 for windows x64
安装方法:按照默认方式进行下一步安装即可。
程序界面:
该工具支持普通直连和ssl加密方式链接docker
镜像列表。在该页面可以安装、运行、删除镜像。
容器列表页面:在该页面可以对容器进行启动、停止、删除、查看日志等操作。
3.基于Eclipse 安装docker插件
3.1. 插件安装
在Eclipse 中依次执行 Help > Install New Software… > add ,填写如下信息:
地址:https://download.eclipse.org/linuxtools/updates-docker-nightly/
按照提示进行下一步,直到安装完成。
3.2. 在Eclipse中打开Docker Explorer 视图
在视图中新建连接,输入docker远程地址,本文docker安装在本地,故使用127.0.0.1:2375
在该视图内可以查看/编辑/运行docker镜像。
备注:使用该插件前,docker服务器必须开启远程连接和2375端口。