1. 更新服务器的安装源为阿里的源,参考链接:https://blog.csdn.net/js_xh/article/details/79166655
  2. 安装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

  1. 更换docker源

参考链接:https://blog.csdn.net/jixuju/article/details/80158493

阿里云加速地址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

  1. 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端口
  1. docker安装redis
  • docker pull redis
  • docker run -p 6379:6379 -d redis:latest redis-server
  • docker exec -ti d254983afd0b redis-cli 可以用这个来验证是否安装成功了
  • 注:需要外网访问则需要在云服务哪里设置安全组规则开放6379端口
  1. 服务器安装jdk以及maven
  • 准备好jdk的包和maven包
  • 上传到服务器的指定目录如/root/envi
  • tar -zxvf 包名 即可并用mv命令重命名为maven和java
  • 配置环境变量

vi /etc/profile

增加java和maven的环境变量

source /etc/profile

使环境变量生效

利用mvn -version和java -version测试

至此这两个环境变量配置完成

  1. 构建基于自己安装的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

运行结果如下图所示即为正常

  1. 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部署你的网站的更多相关文章

  1. 庐山真面目之十一微服务架构手把手教你搭建基于Jenkins的企业级CI/CD环境

    庐山真面目之十一微服务架构手把手教你搭建基于Jenkins的企业级CI/CD环境 一.介绍 说起微服务架构来,有一个环节是少不了的,那就是CI/CD持续集成的环境.当然,搭建CI/CD环境的工具很多, ...

  2. 利用Docker快速部署Mysql

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

  3. Jenkins持续集成(下)-Jenkins部署Asp.Net网站自动发布

    环境:Windows 2008 R2.Jenkins2.235.1.Visual Studio 2017: 概要 前面写过一篇文章,<自动发布-asp.net自动发布.IIS站点自动发布(集成S ...

  4. 利用WSGI来部署你的网站

    利用WSGI来部署你的网站 当需要部署你的django项目的时候,可以使用apache+python来部署访问你的网站. 由于网上的有关的都是老版本的.所以这里使用apache2.4和python3. ...

  5. 【转】手把手教你利用Jenkins持续集成iOS项目

    前言 众所周知,现在App的竞争已经到了用户体验为王,质量为上的白热化阶段.用户们都是很挑剔的.如果一个公司的推广团队好不容易砸了重金推广了一个APP,好不容易有了一些用户,由于一次线上的bug导致一 ...

  6. 手把手教你利用Jenkins持续集成iOS项目

    前言 众所周知,现在App的竞争已经到了用户体验为王,质量为上的白热化阶段.用户们都是很挑剔的.如果一个公司的推广团队好不容易砸了重金推广了一个APP,好不容易有了一些用户,由于一次线上的bug导致一 ...

  7. 手把手教你用Docker部署一个MongoDB集群

    MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中最像关系数据库的.支持类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引 ...

  8. 手把手教你搭建Docker私有仓库

    章节一:centos7 docker安装和使用_入门教程 章节二:使用docker部署Asp.net core web应用程序 有了前面的基础,接下来的操作就比较简单了.先准备两台虚拟机,两台机器上都 ...

  9. 手把手教你利用微软的Bot Framework,LUIS,QnA Maker做一个简单的对话机器人

    最近由于要参加微软亚洲研究院的夏令营,需要利用微软的服务搭建一个对话Bot,以便对俱乐部的情况进行介绍,所以现学了几天,搭建了一个简单的对话Bot,期间参考了大量的资料,尤其是下面的这篇博客: htt ...

随机推荐

  1. MyBatis中的命名空间namespace的作用

    1.定义mapper接口,面向接口编程. 2.在大型项目中,可能存在大量的SQL语句,这时候为每个SQL语句起一个唯一的标识(ID)就变得并不容易了.为了解决这个问题,在MyBatis中,可以为每个映 ...

  2. 那些面试官必问的JAVA多线程和并发面试题及回答

    Java多线程面试问题 1. 进程和线程之间有什么不同? 一个进程是一个独立(self contained)的运行环境,它可以被看作一个程序或者一个应用.而线程是在进程中执行的一个任务.Java运行环 ...

  3. 【C++】赋值过程中类型转换

    注意:以下内容摘自文献[1],修改了部分内容. 1.赋值过程中的类型转换 如果赋值运算符两侧的类型不一致,但都是数值型或字符型时,在赋值时自动进行类型转换. (1) 将浮点型数据(包括单.双精度)赋给 ...

  4. MySQL 5.7.30 的安装/升级(所有可能的坑都在这里)

    楔子 由于之前电脑上安装的MySQL版本是比较老的了,大概是5.1的版本,不支持JSON字段功能.而最新开发部门开发的的编辑器产品,使用到了JSON字段的功能. 因此需要升级MySQL版本,升级的目标 ...

  5. eatwhatApp开发实战(十二)

    上次我们介绍了跳转activity并且实现传值的功能,今天我们来实现双击返回键退出app的功能,上代码: 这里我们有两种方式去实现点击事件: 第一种方式: /** * 返回键的监听(系统提供的) */ ...

  6. [Objective-C] 015_Delegate(委托代理)

    Delegate在iOS开发中随处可见,Delegate是一种功能强大的软件架构设计理念,它的功能是程序中一个对象代表另一个对象,或者一个对象与另外一个对象协同工作(如小明喜欢一个女孩如花,却苦于没有 ...

  7. [批处理教程之MySQL]001.MySQL 常用命令大全

    连接MySQL 格式: mysql -h主机地址 -u用户名 -p用户密码 1.连接到本机上的MySQL 首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql -u root -p ...

  8. JSP指令 & 中文乱码问题

    1. JSP 指令: JSP指令(directive)是为JSP引擎而设计的,     它们并不直接产生任何可见输出, 而只是告诉引擎如何处理JSP页面中的其余部分. 2. 在JSP 2.0中,定义了 ...

  9. Java实现 LeetCode 429 N叉树的层序遍历

    429. N叉树的层序遍历 给定一个 N 叉树,返回其节点值的层序遍历. (即从左到右,逐层遍历). 例如,给定一个 3叉树 : 返回其层序遍历: [ [1], [3,2,4], [5,6] ] 说明 ...

  10. Java实现 LeetCode 73 矩阵置零

    73. 矩阵置零 给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0.请使用原地算法. 示例 1: 输入: [ [1,1,1], [1,0,1], [1,1,1] ...