手把手教你利用Docker+jenkins部署你的网站
- 更新服务器的安装源为阿里的源,参考链接:https://blog.csdn.net/js_xh/article/details/79166655
- 安装docker;
1 更新资源
sudo apt-get update
1.1 安装的时候无法安装,执行删除锁
sudo rm /var/lib/dpkg/lock
2 安装Docker
sudo apt-get install docker
3 安装docker.io。
sudo apt-get install docker.io
4 安装docker-registry。
sudo apt-get install docker-registry
5 开始启动我们的docker
sudo systemctl start docker
6 验证安装
sudo docker run hello-world
- 更换docker源
参考链接:https://blog.csdn.net/jixuju/article/details/80158493
阿里云加速地址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
- docker安装mysql5.7
- docker pull mysql:5.7
- mkdir /root/mysql
- docker run --name mysql -v /root/mysql/conf:/etc/mysql/conf.d -v /root/mysql/data:/var/lib/mysql -v /root/mysql/logs:/var/log/mysql -d -e MYSQL_ROOT_PASSWORD=root -e LANG=C.UTF-8 -p 3306:3306 mysql:5.7
- 注:需要外网访问则需要在云服务哪里设置安全组规则开放3306端口
- docker安装redis
- docker pull redis
- docker run -p 6379:6379 -d redis:latest redis-server
- docker exec -ti d254983afd0b redis-cli 可以用这个来验证是否安装成功了
- 注:需要外网访问则需要在云服务哪里设置安全组规则开放6379端口
- 服务器安装jdk以及maven
- 准备好jdk的包和maven包
- 上传到服务器的指定目录如/root/envi
- tar -zxvf 包名 即可并用mv命令重命名为maven和java
- 配置环境变量
vi /etc/profile
增加java和maven的环境变量
source /etc/profile
使环境变量生效
利用mvn -version和java -version测试
至此这两个环境变量配置完成
- 构建基于自己安装的java环境的jdk镜像(这一步可有可无)
- 在空的目录下编写Dockerfile如/root/images
- 将jdk的未解压的包拷贝到这个目录下
- Dockerfile内容
#基础镜像
FROM ubuntu:18.04
#创建者信息
MAINTAINER chengrongkai
RUN mkdir /usr/local/java
# copy the jdk archive to the image,and it will automaticlly unzip the tar file
ADD jdk-8u161-linux-x64.tar.gz /usr/local/java/
# make a symbol link
RUN ln -s /usr/local/java/jdk1.8.0_161 /usr/local/java/jdk
# set environment variables
ENV JAVA_HOME /usr/local/java/jdk
ENV JRE_HOME ${JAVA_HOME}/jre
ENV CLASSPATH .:${JAVA_HOME}/lib:${JRE_HOME}/lib
ENV PATH ${JAVA_HOME}/bin:$PATH
- 运行命令构建镜像
docker build -t myjava:8 .
docker images查看创建的镜像
docker run -it myjava:8 /bin/bash
java -version
运行结果如下图所示即为正常
- docker安装jenkins中文版
- docker pull jenkinszh/jenkins-zh
这里选择的是中文的镜像
- 创建存储目录并授权(很重要)
mkdir /home/jenkins_home
chown -R 1000 /home/jenkins_home
chmod 777 /var/run/docker.sock
参考链接:https://www.jianshu.com/p/db58d1cfd01b
- 添加权限配置
sudo vi /etc/systemd/system/docker.service
添加内容
[Service] ExecStart= ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
重启docker
sudo systemctl daemon-reload
sudo systemctl restart docker
- 启动jenkins,这里用的是9090端口映射
docker run -d -p 9090:8080 -p 50000:50000 --name myjenkins -v /home/jenkins_home/:/var/jenkins_home -v /usr/bin/git:/usr/bin/git -v /root/envi/java:/usr/local/java -v /root/envi/maven:/usr/local/maven -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker -v /etc/localtime:/etc/localtime:ro -e JAVA_OPTS=-Duser.timezone=Asia/Shanghai -G jenkins jenkinszh/jenkins-zh:latest
- 查看密码-两种方式
1、docker logs -t -f --tail 100 容器ID
容器ID可以用docker ps查看
2、cat /home/jenkins_home/secrets/initialAdminPassword 查看
- 访问ip+9090即可访问jenkins,如果9090端口无法访问,请检查你的云服务器是否开放了9090的入规则
- 之后就傻瓜式配置即可
检查下必要的插件
看下这些插件是否都有,我这边计划用gitee做同步,所以还需要一个gitee的插件
安装最后一个插件时勾选下安装后重启即可,等待重启好了再继续下一步操作
找到系统管理的全局工具管理
填写相应的jdk位置和maven位置、git位置(注意,这个地方填写的是容器里的位置,不是系统对应的位置,就是docker run 命令中-v映射的目录)
新建一个maven任务
源码管理选择git,填写gitee的仓库路径
添加认证
添加构建前的准备步骤,如清理旧的容器和镜像
shell命令参照如下、
#!/bin/bash
echo "stop old docker container"
docker stop cms
echo "delete old docker container"
docker rm cms
echo "delete old docker images:"
docker rmi cms:latest
echo "clean success"
设置maven打包命令
clean package -Dmaven.test.skip=true
添加构建完成的shell命令
shell命令参考
#!/bin/bash
echo "build docker image"
mvn dockerfile:build
echo "current docker images:"
docker images | grep cms
echo "start container----->"
docker run -d -p 8080:8080 --name cms cms
echo "start success!"
至此,基本的工程配置编写完成,保存后点击立即构建
查看相应的输出结果
看到这样的输出,基本就是成功了
利用docker images和docker ps查看启动的服务
看到启动了相应的服务就说明成功了
如果服务访问不了可以用docker logs -f -t --tail 100 容器ID查看日志
别慌,到这还没完,我们还可以添加gitee的webhooks自动触发构建
先在系统设置中配置gitee令牌
添加令牌
在gitee生成令牌
配置数据
在项目里配置gitee
点击生成按钮
复制密码
回到gitee你的项目里,找到webhooks
点击添加,密码填写刚刚复制的密码
url填写,jenkins上面也有给出
这样配置好就行了
下次执行push操作时就会自动触发构建了
本文首发于https://www.bizhibihui.com/blog/article/25
手把手教你利用Docker+jenkins部署你的网站的更多相关文章
- 庐山真面目之十一微服务架构手把手教你搭建基于Jenkins的企业级CI/CD环境
庐山真面目之十一微服务架构手把手教你搭建基于Jenkins的企业级CI/CD环境 一.介绍 说起微服务架构来,有一个环节是少不了的,那就是CI/CD持续集成的环境.当然,搭建CI/CD环境的工具很多, ...
- 利用Docker快速部署Mysql
写在前面 我又来更新了~~~,今天内容较少,主要是利用Docker快速部署Mysql和初始化数据 利用Docker下载Mysql 简洁明了,在命令提示符中输入 docker pull mysql:8. ...
- Jenkins持续集成(下)-Jenkins部署Asp.Net网站自动发布
环境:Windows 2008 R2.Jenkins2.235.1.Visual Studio 2017: 概要 前面写过一篇文章,<自动发布-asp.net自动发布.IIS站点自动发布(集成S ...
- 利用WSGI来部署你的网站
利用WSGI来部署你的网站 当需要部署你的django项目的时候,可以使用apache+python来部署访问你的网站. 由于网上的有关的都是老版本的.所以这里使用apache2.4和python3. ...
- 【转】手把手教你利用Jenkins持续集成iOS项目
前言 众所周知,现在App的竞争已经到了用户体验为王,质量为上的白热化阶段.用户们都是很挑剔的.如果一个公司的推广团队好不容易砸了重金推广了一个APP,好不容易有了一些用户,由于一次线上的bug导致一 ...
- 手把手教你利用Jenkins持续集成iOS项目
前言 众所周知,现在App的竞争已经到了用户体验为王,质量为上的白热化阶段.用户们都是很挑剔的.如果一个公司的推广团队好不容易砸了重金推广了一个APP,好不容易有了一些用户,由于一次线上的bug导致一 ...
- 手把手教你用Docker部署一个MongoDB集群
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中最像关系数据库的.支持类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引 ...
- 手把手教你搭建Docker私有仓库
章节一:centos7 docker安装和使用_入门教程 章节二:使用docker部署Asp.net core web应用程序 有了前面的基础,接下来的操作就比较简单了.先准备两台虚拟机,两台机器上都 ...
- 手把手教你利用微软的Bot Framework,LUIS,QnA Maker做一个简单的对话机器人
最近由于要参加微软亚洲研究院的夏令营,需要利用微软的服务搭建一个对话Bot,以便对俱乐部的情况进行介绍,所以现学了几天,搭建了一个简单的对话Bot,期间参考了大量的资料,尤其是下面的这篇博客: htt ...
随机推荐
- MySql 常用的函数
一.聚合函数 avg(col) 计算平均值 count(col) 计算中非NULL值的个数(这个容易忘) greatest(x1,x2,...,xn) 返回集合中最大的值 ...
- FPGA内部硬件结构简介
我们知道FPGA内部有很多可供用户任意配置的资源,其中包括:可编程逻辑.可编程I/O.互连线.IP核等资源,很多学过数字电路的人都知道与或非门可以构成几乎所有的数字电路,但是FPGA内部最基本的主要单 ...
- 浅谈SIEM
一.概念 SIEM ( Security Information Event Management,安全信息与事件管理) Gartner的定义:安全信息和事件管理(SIEM)技术通过对来自各种事件和上 ...
- Java实现 LeetCode 455 分发饼干
455. 分发饼干 假设你是一位很棒的家长,想要给你的孩子们一些小饼干.但是,每个孩子最多只能给一块饼干.对每个孩子 i ,都有一个胃口值 gi ,这是能让孩子们满足胃口的饼干的最小尺寸:并且每块饼干 ...
- Java实现统计方案
统计方案 题目描述 在一无限大的二维平面中,我们做如下假设: 1.每次只能移动一格: 2.不能向后走(假设你的目的地是"向上",那么你可以向左走,可以向右走,也可以向上走,但是不可 ...
- Java实现 LeetCode 264 丑数 II(二)
264. 丑数 II 编写一个程序,找出第 n 个丑数. 丑数就是只包含质因数 2, 3, 5 的正整数. 示例: 输入: n = 10 输出: 12 解释: 1, 2, 3, 4, 5, 6, 8, ...
- Java实现哥德巴赫猜想
验证哥德巴赫猜想:任何一个大于 6 的偶数,都能分解成两个质数的和.要求输入一个整数,输出这个 数能被分解成哪两个质数的和. eg : 14 14=3+11 14=7+7 public class T ...
- java实现第七届蓝桥杯平方圈怪
平方圈怪 题目描述 如果把一个正整数的每一位都平方后再求和,得到一个新的正整数. 对新产生的正整数再做同样的处理. 如此一来,你会发现,不管开始取的是什么数字, 最终如果不是落入1,就是落入同一个循环 ...
- (十)HTTP.sys远程代码执行
01 漏洞描述 上篇文章介绍了Host头攻击,今天我们讲一讲HTTP.sys远程代码执行漏洞. HTTP.sys是Microsoft Windows处理HTTP请求的内核驱动程序,为了优化IIS服务器 ...
- Mac卸载.net core sdk
NET Core cli提供了卸载脚本 https://github.com/dotnet/cli/tree/master/scripts/obtain/uninstall dotnet-uninst ...