目的

由开发环境交测的时候,通过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快速交测的更多相关文章

  1. 9. 利用Docker快速构建MGR | 深入浅出MGR

    目录 1.安装Docker 2.拉取GreatSQL镜像,并创建容器 2.1 拉取镜像 2.2 创建新容器 2.3 容器管理 3.构建MGR集群 3.1 创建专用子网 3.2 创建3个新容器 3.3 ...

  2. 如何利用docker快速构建MySQL主从复制环境

    在学习MySQL的过程中,常常会测试各种参数的作用.这时候,就需要快速构建出MySQL实例,甚至主从. 考虑如下场景: 譬如我想测试mysqldump在指定--single-transaction参数 ...

  3. 利用Docker快速部署Mysql

    写在前面 我又来更新了~~~,今天内容较少,主要是利用Docker快速部署Mysql和初始化数据 利用Docker下载Mysql 简洁明了,在命令提示符中输入 docker pull mysql:8. ...

  4. docker 一小时快速入门之利用docker安装Redis

    利用docker方式快捷安装redis 该方式默认下载的最新版本镜像,如需要下载指定版本在redis后面跟:版本号 docker pull redis 查看当前下载redis的镜像 docker im ...

  5. 利用Intellij+MAVEN搭建Spring+Mybatis+MySql+SpringMVC项目详解

    http://blog.csdn.net/noaman_wgs/article/details/53893948 利用Intellij+MAVEN搭建Spring+Mybatis+MySql+Spri ...

  6. idea 创建maven web项目部署在 tomcat maven plugin中

    前提:1.安装jdk,多数系统使用jdk1.8.xxx,因此选择下载此版本的居多 2.安装Maven 3.部署到tomcat我们可以有两种方式,一种是利用tomcat插件来进行部署,另一种是下载tom ...

  7. 一代版本一代神:利用Docker在Win10系统极速体验Django3.1真实异步(Async)任务

    一代版本一代神:利用Docker在Win10系统极速体验Django3.1真实异步(Async)任务 原文转载自「刘悦的技术博客」https://v3u.cn/a_id_177 就在去年(2019年) ...

  8. Spring Boot Maven Plugin(一):repackage目标

    简介 Spring Boot Maven Plugin插件提供spring boot在maven中的支持.允许你打包可运行的jar包或war包. 插件提供了几个maven目标和Spring Boot ...

  9. CentOS中利用Docker安装RabbitMQ

    CentOS中利用Docker安装RabbitMQ 1.拉取镜像(带管理平台) #docker pull rabbitmq:3.7.7-management 2.启动容器: #docker run - ...

随机推荐

  1. pytest文档9-参数化parametrize

    前言 pytest.mark.parametrize装饰器可以实现测试用例参数化. parametrizing 1.这里是一个实现检查一定的输入和期望输出测试功能的典型例子 # content of ...

  2. sqlite insert select 联合使用

    insert into encoder_config (name,value,chengji,parents) select name,value,chengji,parents from media ...

  3. 解决:解压zip文件却变成cpgz文件

    众所周知,zip是一种压缩文件格式,MAC OS默认支持的文件格式,当时偶尔当你打开zip文件想要解压时,却自动变成了cpgz文件而没有解压,再双击这个cpgz文件,Archive Utility又会 ...

  4. 《Android传感器高级编程》

    <Android传感器高级编程> 基本信息 原书名:Professional Android Sensor Programming 原出版社: Wrox 作者: (美)米内特(Greg M ...

  5. ActiveX 控件漏洞挖掘之方法

    ActiveX是微软公司提出,并在1996年被正式命名的组件技术.该技术提供了一种通用的开放程序接口,使用这种技术开发的ActiveX控件可以直接集成到IE浏览器或第三方应用程序中,但由于第三方编程等 ...

  6. osglightpoint例子 [转]

    该例子演示了光点的效果,主要应用osgSim库中的LightPoint.LightPointNode. SequenceGroup.BlinkSequence,osgSim库属于仿真库,扩展库.应用o ...

  7. hadoop压缩框架

    一般来说,计算机处理的数据都存在一些冗余度,同时数据中间,尤其是相邻数据间存在着相关性,所以可以通过一些有别于原始编码的特殊编码方式来保存数据,使数据占用的存储空间比较小,这个过程一般叫压缩.和压缩对 ...

  8. 【LeetCode】Jump Game (一维动态规划 + 线性扫描)

    Given an array of non-negative integers, you are initially positioned at the first index of the arra ...

  9. Python Socket 编程——聊天室演示样例程序

    上一篇 我们学习了简单的 Python TCP Socket 编程,通过分别写服务端和client的代码了解主要的 Python Socket 编程模型.本文再通过一个样例来加强一下对 Socket ...

  10. 使用CopyTable工具方法在线备份HBase表

    CopyTable is a simple Apache HBase utility that, unsurprisingly, can be used for copying individual ...