docker安装参考链接
docker官网
jenkins中文官网
我的博客网站已经迁移到了https://johnnyting.github.io/,如果有兴趣的可以关注下。 下面文章格式可能有点乱,可以查看我的博客原文: https://johnnyting.github.io/posts/%E4%BD%BF%E7%94%A8jenkinsdocker%E8%87%AA%E5%8A%A8%E5%8C%96%E9%83%A8%E7%BD%B2rails%E5%BA%94%E7%94%A8/
服务器环境为Ubuntu 16.04.2 LTS
1.卸载旧版本docker
sudo apt-get remove docker \ docker-engine \ docker.io
2.安装docker,使用脚本自动安装
curl -fsSL get.docker.com -o get-docker.sh sudo sh get-docker.sh --mirror Aliyun
3.启动docker
4.安装docker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
5.安装compose bash补全命令
curl -L https://raw.githubusercontent.com/docker/compose/1.8.0/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose
6.如果需要卸载docker-compose,删除可执行文件即可
sudo rm /usr/local/bin/docker-compose
7.配置docker镜像加速
在/etc/docker/daemon.json 中写入如下内容,如果没有此文件新建即可: { "registry-mirrors": [ "https://dockerhub.azk8s.cn", "https://reg-mirror.qiniu.com" ] }
重新启动服务: sudo systemctl daemon-reload sudo systemctl restart docker 检查加速器是否生效: docker info 如果出现下面内容则配置成功 Registry Mirrors: https://dockerhub.azk8s.cn/ https://reg-mirror.qiniu.com/
8.安装jenkins,使用blue ocean镜像,来创建流水线项目
docker run \ --name jenkins \ -u root \ -d \ -p 8090:8080 \ -v /home/oliver/jenkins_home:/var/jenkins_home \ -v /home/oliver/.ssh:/root/.ssh \ --restart=always \ jenkinsci/blueocean
9.查看jenkins日志,获取管理员密码
➜ ~ sudo docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a210c6d643a3 jenkinsci/blueocean "/sbin/tini -- /usr/…" 3 minutes ago Up 3 minutes 50000/tcp, 0.0.0.0:8090->8080/tcp jenkins
看到密码后复制,或者进入容器内的/var/jenkins_home/secrets/initialAdminPassword 查看,因为jenkins容器目录挂载到了/home/oliver/jenkins_home下,所以也可以查看
/home/oliver/jenkins_home/secrets/initialAdminPassword 文件中的内容。
10.选择安装推荐插件就行
11.然后等待安装完成,如果安装失败就重新安装。
12.然后下一步提示创建一个管理员账号,填写完就进入jenkins首页。
13.配置凭据
添加全局凭据:
添加ssh私钥,在/home/oliver/.ssh/id_rsa中
14.在本地rails项目中添加 Jenkinsfile:
pipeline { agent any stages { stage('start') { steps { echo 'jenkins构建开始...' } } stage('build') { steps { sh 'sh ssh.sh' } } } post { success { echo 'jenkins构建成功' } failure { echo 'jenkins构建失败' } } }
15.连接应用部署服务器ssh.sh(jenkins所在服务器与应用部署服务器区分开):
#! /bin/bash branch=$(git symbolic-ref --short -q HEAD) echo "分支: ${branch}" ssh root@xxxx 'bash -s' < deploy.sh ${branch}
16.根据部署脚本deploy.sh启动容器:
#! /bin/bash app=$1 cd /root/workspace/ if [ ! -d "${app}" ];then echo "克隆项目${app}" git clone -b $app git@xxxx/xxxx.git $app cd ${app} else cd ${app} echo "拉取项目${app}" git pull origin $app fi branch=${app//-/} echo ${branch} web=$(docker-compose ps | grep $branch | awk '{print $1}') if [ -z $web ];then echo "构建容器: ${web}" docker-compose up -d else echo "重启容器: ${web}" docker-compose restart fi
17.构建所需要的Dockerfile:
FROM ruby:2.5.3 RUN apt-get update -qq && apt-get install -y curl netcat && \ curl -sL https://deb.nodesource.com/setup_10.x | bash - && \ apt-get install -y nodejs postgresql-client openjdk-8-jdk && \ npm install -g yarn --registry=https://registry.npm.taobao.org &&\ yarn config set registry https://registry.npm.taobao.org -g &&\ yarn config set sass_binary_site http://cdn.npm.taobao.org/dist/node-sass -g && \ apt-get purge -y --auto-remove curl && apt-get clean && \ rm -rf /var/lib/apt/lists/* ENV LANG=C.UTF-8 RAILS_ROOT=/myapp WORKDIR $RAILS_ROOT VOLUME $RAILS_ROOT COPY entrypoint.sh /usr/bin/ RUN chmod +x /usr/bin/entrypoint.sh ENTRYPOINT ["entrypoint.sh"] EXPOSE 3000
18.入口点entrypoint.sh
#!/bin/bash
19.docker-compose.yml
version: '3' services: web: build: . volumes: - .:/myapp ports: - "3000:3000" restart: always
20.然后创建jenkins项目,打开blue ocean
21.选择git代码仓库,填入git地址
填入地址后根据提示需要将你的ssh公钥key配置到git服务器上,然后创建流水线。创建后多分支项目根目录有Jenkinsfile的自动构建。
22.在项目配置中,选择扫描项目的时间间隔,分支有改动自动触发构建
这里设置每五分钟扫描一次git仓库
之后就是每次推送了代码,jenkins发现代码有改动就会触发构建并使用docker部署到指定的服务器上,可以在jenkins后台查看构建过程,也可以在部署服务器查看容器日志。
整个自动化部署rails应用流程就结束了,大家可以尝试一下。
|
请发表评论