1. 安装Docker(略过)

2. 编写docker-compose.yaml

version: '2'

services:
drone-server:
image: drone/drone:0.8 ports:
- 81:8000
- 9000
volumes:
- /home/drone-image:/var/lib/drone/
restart: always
environment:
- DRONE_OPEN=true
- DRONE_HOST=http://10.0.0.8
- DRONE_GITHUB=false
- DRONE_GOGS=true
- DRONE_GOGS_URL=http://10.0.0.8:10080
- DRONE_GOGS_GIT_USERNAME=Kevin.Gu
- DRONE_GOGS_GIT_PASSWORD=Ftit654321
- DRONE_GOGS_SKIP_VERIFY=true
- DRONE_SECRET=Ftit654321 drone-agent:
image: drone/agent:0.8 command: agent
restart: always
depends_on:
- drone-server
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
- DRONE_SERVER=drone-server:9000
- DRONE_SECRET=Ftit654321

3. 运行docker-compose up

4. 浏览器中打开10.0.0.8:81,将自己的项目活动开关打开,这时应该可以监控到代码的变化了

5. 在自己的项目中编写.drone.yml文件

workspace:
base: /home
path: commission pipeline:
build:
image: java:openjdk-8
environment:
- GRADLE_USER_HOME=~/.gradle
commands:
- pwd
- wget http://mirrors.163.com/.help/sources.list.jessie -O /etc/apt/sources.list
- apt-get update
- apt-get install ftp
- ./gradlew test
- ./gradlew war
- ftp -n < ftp_command.txt ssh-deploy:
image: appleboy/drone-ssh
pull: true
host: 10.0.0.8
user: root
password: M@nager
port: 22
command_timeout: 180
script:
- cd /home/commission
- mv /home/ftpuser/commission.war .
- mv /home/ftpuser/Dockerfile .
- mv /home/ftpuser/deploy.sh .
- mv /home/ftpuser/start.sh .
- sh deploy.sh
when:
branch: [master]
event: [push]

6. Build成功后,会调用FTP将相关文件拷贝到服务器上,ftp_command.txt内容如下:

open 10.0.0.8
user ftpuser 111111
put build/libs/commission-1.0.war commission.war
put Dockerfile Dockerfile
put start.sh start.sh
put deploy.sh deploy.sh
bye

7. ssh-deploy会登录服务器,将刚刚FTP上传的文件移到对应发布目录中,随后调用deploy.sh文件,做Docker发布。

deploy.sh文件内容如下:

#!/bin/sh

now=`date +%Y%m%d%H%M%S`

echo building commission instance...
docker ps | grep commission | awk '{print $1}' | xargs --no-run-if-empty docker stop
docker ps -a | grep commission | awk '{print $1}' | xargs --no-run-if-empty docker rm
docker build -t commission .
echo built commission instance done... export current_ip=$(ip route get 1 | awk '{print $NF;exit}')
docker run -it -v /home/fast_price_security:/app/security -v /home/commission_template:/app/template -v /home/commission_file:/app/file -p $current_ip:8085:8080 -d commission
Dockerfile文件内容如下: FROM tomcat:9-alpine MAINTAINER K.g "ytll21@gmail.com" RUN cat /etc/issue # RUN apt-get update && \
# apt-get install -y git build-essential curl wget software-properties-common # RUN echo deb http://http.debian.net/debian jessie-backports main >> /etc/apt/sources.list
# RUN apt-get update && apt-get install -y openjdk-8-jdk
# RUN update-alternatives --config java # ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64 # Adjust time zone
# RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime WORKDIR /app # Bundle app source
COPY . /app/ EXPOSE 8080 RUN chmod +x start.sh CMD ./start.sh

8. Dockerfile文件最后会调用start.sh文件,做Tomcat发布,内容如下:

cp /app/commission.war /usr/local/tomcat/webapps/ROOT.war

rm -rf /usr/local/tomcat/webapps/ROOT

cd /usr/local/tomcat/bin

./catalina.sh run

  

以上

Docker+Drone做Java/Tomcat的CI服务的更多相关文章

  1. docker搭建基础的tomcat应用

    tomcat server是眼下比較流行的开源中间件server,以下介绍怎样使用 docker 来做一个 tomcat 数据库服务.官方的仓里没有标 OFFICIAL 的 tomcat 的镜像,只是 ...

  2. Docker学习笔记之一,搭建一个JAVA Tomcat运行环境

    Docker学习笔记之一,搭建一个JAVA Tomcat运行环境 前言 Docker旨在提供一种应用程序的自动化部署解决方案,在 Linux 系统上迅速创建一个容器(轻量级虚拟机)并部署和运行应用程序 ...

  3. docker的简单搭建(java/tomcat 环境)

    1.一副图简单了解下docker的布局,它是虚拟的,docker分为私服.镜像.容器三个模块 一般从私服pull镜像,镜像run一个容器,我们把容器作为一个虚拟服务,里面可以独立运行进程有独立的内网I ...

  4. Docker学习笔记之二,基于Dockerfile搭建JAVA Tomcat运行环境

    前言 在第一篇文字中,我们完全人工方式,一个命令一个命令输入,实现一个 java tomcat运行环境,虽然也初见成效,但很累人.如果依靠依靠脚本构建一个Tomcat容器实例,一个命令可以搞定,何乐而 ...

  5. 为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?

    今年我一直在思考web开发里的前后端分离的问题,到了现在也颇有点心得了,随着这个问题的深入,再加以现在公司很多web项目的控制层的技术框架由struts2迁移到springMVC,我突然有了一个新的疑 ...

  6. 如何启动免安装版Tomcat并将Tomcat添加到服务中

    1.安装jdk,并配置环境变量 (1)在Path中添加 F:\Program Files\Java\jdk1.8.0_25\bin (2)添加一个JAVA_HOME变量,变量值为F:\Program ...

  7. BAE3.0上的java+tomcat代码发布

    ---------------------------------2016/01/25更新-------------------------------------- 最近两天去百度开放云,发现它再也 ...

  8. 160809、tomcat中配置多个域名及将tomcat配置成系统服务

    本地测试用的(注意红色部分) 第一步.自己的windows电脑,在c盘中有个hosts文件(搜索一下),做以下修改(其中127.0.0.1是本机地址,192.1638.10.139是我虚拟机中linu ...

  9. 转: 为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?

    from: https://github.com/RubyLouvre/agate/issues/8 今年我一直在思考web开发里的前后端分离的问题,到了现在也颇有点心得了,随着这个问题的深入,再加以 ...

随机推荐

  1. Three.js模型隐藏或显示

    材质属性.visible查看Three.js文档的基类Material,可以知道材质属性.visible的作用就是控制绑定该材质的模型对象是否可见,默认值是true,LineBasicMaterial ...

  2. JavaScript设计模式基础之面向对象的JavaScript(二)

    多态 多态的实际含义:同一操作作用与不同的对象上面,可以产生不同的解释和不同的执行结果,就是说,给不同的对象发送同一个消息 的时候,这些对象会根据这个消息分别给出不同的反馈 代码如下: class D ...

  3. [模板] 动态ST表

    ST表本身是不可修改的. 如果考虑增加一个数,可以把ST表反过来写,即f[i][j]表示i往前1<<j个数,一个数最多影响logn个数,常数非常小. #include<iostrea ...

  4. [模板] LIS

    树状数组优化LIS到nlogn,网上找了好多,感觉讲得都不是很明白,正好自己复习整理一下. 基本的DP方程 f[i]=max(f[i],f[j]+1) (j<i且a[j]<a[i]) 定义 ...

  5. DBLINK引起的SQL性能问题

    最近发现报表系统上有一存储过程越来越慢,在数据库中查询后,发现有以下条SQL --优化前:耗时>1h select c.policyno, c.endorseno, r.item_code, s ...

  6. 笔记本无法从DHCP服务器获取地址怎么解决?

    首先,开始/运行,输入 cmd,再输入ipconfig,看看你的IP地址是不是正常的,假如不是,就是获取不到IP地址.如果得到的IP是:169.254.x.x 表示客户机无法得到DHCP的响应.(如果 ...

  7. ubuntu14.04 configure: error: xml2-config not found. Please check your libxml2 installation错误解决

    今天在ubuntu14.04上安装php7时 执行:./configure命令时 一直报configure: error: xml2-config not found. Please check yo ...

  8. 如何将已经安装从chrome扩展程序导出备份为.CRX文件?

    之前介绍过CRX Extractor可以从chrome应用商店下载备份扩展程序,有读者朋友问说:如果 Google Chrome扩展程序已经从 Chrome应用商店下架,还有没有方法下载呢?通常网路上 ...

  9. Android 图片设置圆角

    Android中经常会遇到对图片进行二次处理,例如加圆角,或者显示圆形图片 方法一: 通过第三方框架Glide实现图片显示有圆角,有三种写法如下: 1.1,第一种实现: RequestOptions ...

  10. 数据结构( Pyhon 语言描述 ) — — 第4章:数据和链表结构

    数据结构是表示一个集合中包含的数据的一个对象 数组数据结构 数组是一个数据结构 支持按照位置对某一项的随机访问,且这种访问的时间是常数 在创建数组时,给定了用于存储数据的位置的一个数目,并且数组的长度 ...