利用docker-maven-plugin快速交测
目的
由开发环境交测的时候,通过docker镜像简化环境搭建及项目部署的过程。
环境描述
项目开发环境: windowns7
在windowns7中通过VMware Workstation安装CentOS 7
在CentOS 7中安装docker
docker配置
1.docker正常安装。通过yum安装后最终信息如下:
[samhxm@localhost app]$ sudo docker version
Client:
Version: 1.12.3
API version: 1.24
Go version: go1.6.3
Git commit: 6b644ec
Built:
OS/Arch: linux/amd64 Server:
Version: 1.12.3
API version: 1.24
Go version: go1.6.3
Git commit: 6b644ec
Built:
OS/Arch: linux/amd64
2.docker开启远程API。
通过yum安装的docker配置文件是/lib/systemd/system/docker.service
修改该文件的ExecStart参数为加入/usr/bin/dockerd -H TCP://0.0.0.0:2375 -H UNIX:///VAR/RUN/DOCKER.SOCK 最终配置如下:
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network.target [Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd -H TCP://0.0.0.0:2375 -H UNIX:///VAR/RUN/DOCKER.SOCK
ExecReload=/bin/kill -s HUP $MAINPID
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process [Install]
WantedBy=multi-user.target
3.重启docker
[samhxm@localhost ~]$ sudo systemctl daemon-reload
[samhxm@localhost ~]$ sudo systemctl restart docker
4.获取包含jre的基础镜像。如果仅仅是运行java程序,镜像中包含jre即可。我使用的是daocloud的java镜像。如果项目中需要其他环境依赖(数据库,MQ,Redis等)可以事先自行构建一个包含所需环境的镜像。
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
daocloud.io/library/java latest 861e95c114d6 4 weeks ago 643.1 MB
daocloud.io/library/mysql latest cf725f136fd2 7 weeks ago 383.4 MB
maven项目pom.xml配置
在项目的pom.xml中加入docker-maven-plugin插件,根据项目实际情况进行设置。
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.13</version>
<configuration>
<dockerHost>http://192.168.1.107:2375</dockerHost>
<imageName>sam/spring-boot-dockerimage</imageName>
<baseImage>daocloud.io/library/java:latest</baseImage>
<entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
配置项说明:
dockerHost: docker宿主机地址,其中端口号为docker远程API访问端口。
imageName: 构建镜像的repository,该值勿包含英文大写字母。
baseImage: 基础镜像。基于该镜像构建项目的运行环境。
entryPoint: 同dockerfile中的命令,还可以写其他在dockerfile中运行的命令。
resources: 项目的资源配置
运行maven命令构建项目,并生成docker镜像
E:\workspace2\dockerImage>mvn clean package docker:build
其中关键信息如下:
[INFO] Copying E:\workspace2\dockerImage\target\dockerimage.jar -> E:\workspace2\dockerImage\target\docker\dockerimage.jar
[INFO] Building image sam/spring-boot-dockerimage
Step 1 : FROM daocloud.io/library/java:latest
---> 861e95c114d6
Step 2 : ADD /dockerimage.jar //
---> d401cb3c9dfd
Removing intermediate container 49fcdc6cb81e
Step 3 : ENTRYPOINT java -jar /dockerimage.jar
---> Running in dd5ed0604906
---> a295878e59f6
Removing intermediate container dd5ed0604906
Successfully built a295878e59f6
[INFO] Built sam/spring-boot-dockerimage
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 24.871 s
[INFO] Finished at: 2016-12-10T17:18:55+08:00
[INFO] Final Memory: 29M/466M
[INFO] ------------------------------------------------------------------------
检查docker宿主机是否已产生镜像
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
sam/spring-boot-dockerimage latest 804270c5ba56 7 seconds ago 658.9 MB
daocloud.io/library/java latest 861e95c114d6 4 weeks ago 643.1 MB
daocloud.io/library/mysql latest cf725f136fd2 7 weeks ago 383.4 MB
启动镜像
[samhxm@localhost ~]$ sudo docker run -it -p 8080:8080 sam/spring-boot-dockerimage:latest /bin/bash
通过docker宿主机ip和8080端口即可访问项目。
利用docker-maven-plugin快速交测的更多相关文章
- 9. 利用Docker快速构建MGR | 深入浅出MGR
目录 1.安装Docker 2.拉取GreatSQL镜像,并创建容器 2.1 拉取镜像 2.2 创建新容器 2.3 容器管理 3.构建MGR集群 3.1 创建专用子网 3.2 创建3个新容器 3.3 ...
- 如何利用docker快速构建MySQL主从复制环境
在学习MySQL的过程中,常常会测试各种参数的作用.这时候,就需要快速构建出MySQL实例,甚至主从. 考虑如下场景: 譬如我想测试mysqldump在指定--single-transaction参数 ...
- 利用Docker快速部署Mysql
写在前面 我又来更新了~~~,今天内容较少,主要是利用Docker快速部署Mysql和初始化数据 利用Docker下载Mysql 简洁明了,在命令提示符中输入 docker pull mysql:8. ...
- docker 一小时快速入门之利用docker安装Redis
利用docker方式快捷安装redis 该方式默认下载的最新版本镜像,如需要下载指定版本在redis后面跟:版本号 docker pull redis 查看当前下载redis的镜像 docker im ...
- 利用Intellij+MAVEN搭建Spring+Mybatis+MySql+SpringMVC项目详解
http://blog.csdn.net/noaman_wgs/article/details/53893948 利用Intellij+MAVEN搭建Spring+Mybatis+MySql+Spri ...
- idea 创建maven web项目部署在 tomcat maven plugin中
前提:1.安装jdk,多数系统使用jdk1.8.xxx,因此选择下载此版本的居多 2.安装Maven 3.部署到tomcat我们可以有两种方式,一种是利用tomcat插件来进行部署,另一种是下载tom ...
- 一代版本一代神:利用Docker在Win10系统极速体验Django3.1真实异步(Async)任务
一代版本一代神:利用Docker在Win10系统极速体验Django3.1真实异步(Async)任务 原文转载自「刘悦的技术博客」https://v3u.cn/a_id_177 就在去年(2019年) ...
- Spring Boot Maven Plugin(一):repackage目标
简介 Spring Boot Maven Plugin插件提供spring boot在maven中的支持.允许你打包可运行的jar包或war包. 插件提供了几个maven目标和Spring Boot ...
- CentOS中利用Docker安装RabbitMQ
CentOS中利用Docker安装RabbitMQ 1.拉取镜像(带管理平台) #docker pull rabbitmq:3.7.7-management 2.启动容器: #docker run - ...
随机推荐
- 【JS】 JS毫秒值转化为正常格式 或者正常格式转化为毫秒值
1.毫秒值转化为正常时间格式 最简单的方法 new Date(后台传来的毫秒值).toLocaleDateString() 就是这个样子 2.毫秒值转化为自定义的时间格式 本页面重写一下 toLo ...
- Ruby:字符集和编码学习总结
背景 Ruby直到1.9版本才很好的支持了多字节编码,本文简单总结了今天学习的关于Ruby编码方面的知识. 字符串可以使用不同的编码 在.NET中字符串的编码是一致的,Ruby允许字符串有不同的编码, ...
- linux有用技巧:使用ntfs-3g挂载ntfs设备
1.几种文件系统的比較 (1)在linux系统中支持一下文件系统: Ext2 第二扩展文件系统(简称 ext2 或者 ext2) 非常多年前就已经成为 GN ...
- Informatica 常用组件Source Qualifier之六 外部联接
可以使用源限定符和应用程序源限定符转换在相同的数据库中执行两个源的外部联接.当 PowerCenter 执行外部联接时,它将返回其中一个源表的所有行和另一个源表中匹配联接条件的行. 如果您需要联接两个 ...
- RecyclerView.ItemDecoration 间隔线
内容已更新到:https://www.cnblogs.com/baiqiantao/p/19762fb101659e8f4c1cea53e7acb446.html 目录一个通用分割线ItemDecor ...
- JSON劫持漏洞攻防原理及演练
注* 作者发表这篇文章的时间较早,某些方法可能并不是最好的解决方案,但针对这种漏洞进行的攻击还依然可见,如早期的:QQMail邮件泄露漏洞,下面介绍的是对这种攻击原理的介绍. 不久之前,我写了一篇文章 ...
- UVA 11367 Full Tank?(bfs最短路)
n个点m条无向边的图,油箱有上限,每个单位的汽油能走1单位距离,每个城市的油价val[i], 对于每个query,求s到e的最小花费. dp[i][j]表示到达第i个城市,油箱剩余油量j时的最小花费. ...
- IDEA下clean Maven项目
如何调试出窗口: 点击菜单栏View->Tool Windows->Maven projects ♦如下图,选中之后.点击绿色三角形就可以clean了
- 怎样获取shell函数的返回值及shell命令的返回值?
1.获取shell函数调用的返回值: #!/bin/sh info() { cat jlb.sh } res=`info` echo "state: "$? echo " ...
- 使用IntelliJ IDEA开发Spring MVC HelloWorld
https://blog.csdn.net/industriously/article/details/52851588 https://blog.csdn.net/slow_wakler/artic ...