jdk8:slim
VOLUME /tmp //docker中创建tmp
ADD eureka-server-0.0.1-SNAPSHOT.jar app.jar
#RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] //执行app.jar
EXPOSE 8761 //docker服务端口
2、运行docker build -t xiong:rureka docker 或者 mvn package docker:build 创建镜像,如下图(为了规范命名,我将前面工程名重建了):
3运行3、容器 docker run -p 8761:8761 0 -d xiong:reruka 将容器的8761端口映射到linux主机的8761端口
4、测试一下 http://192.168.1.100:8761 显示了eureka server的主页,表示一个eureka server容器运行成功(实际生产中,建议一个容器中运行一个进程或者说一个微服务)
三 、CI
利用jenkins做持续集成,实验环境还是上面的centos,jdk1.7 、svn server,关闭iptabls和selinux,IP 192.168.1.110
3.1 首先安装jenkins,很简单,增加一个jenkins的YUM源,然后yum -y install jenkins,修改端口为8080、启动 service jenkins start,修改为开机自启动, 访问 http://192.168.1.110:8080,输入admin和密码(由于我不知道默认密码,做了密码重置),显示如下:
3.2 配置svn
1、jenkins中安装svn相关插件
2、创建版本库svnadmin create /root/svnrepos
3、配置用户名密码权限等,不累述
4、将上一节的 eurekaserver整个工程目录加入 svn: svn import /root/eurekaserver/ file:///root/svnrepos/eurekaserver/ -m svneureka.out
5、启动svn svnserve -d -r /root/svn/repos
6、测试一下,在win7上svn客户端上输入地址 svn://192.168.1.110,会自动将centos下eurekaserver工程目录下载到win7中,证明svn OK.
3.3、利用jenkins 实现持续集成eurekaserver工程,每次svn提交代码时就会自动集成和并部署docker微服务。
1、访问http://192.168.1.110:8080 jenkins主页新增一个svn的插件,然后新建任务,选择自由风格,取名为resukaserver,配置源为SVN,这里有一个坑,会报错unable to access to repository,解决方法可参考
http://blog.csdn.net/benkaoya/article/details/48683269 ,大概思路就是在Jenkins所在服务器访问一次SVN版本库并保存身份认证信息。
3.3.1构建中增加svn和 Execute shell内容如下,同时增加自动任务,每次提交代码时候进行集成和部署:
注意:1、默认是jenkins用户,所以需要加上环境变量。 2、docker需要root用户运行。
测试一下,jenkins上点击立刻构建,结果如下:
说明:有个报错,需要将原来的eurekaservicer kill掉再运行新编译的,懒得改了。知道就行。
自动构建和部署完成,访问 http://192.168.1.110:8761 确认微服务启动成功。
至此,只要程序员在svn中commit了新的代码,本程序就会自动编译并运行该微服务并启动对外提供服务。
未完待续………