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/
1.卸载旧版本dockernode
sudo apt-get remove docker \
docker-engine \
docker.io
2.安装docker,使用脚本自动安装git
curl -fsSL get.docker.com -o get-docker.sh
sudo sh get-docker.sh --mirror Aliyun
3.启动dockergithub
# 设置开启自启动
sudo systemctl enable docker
# 启动docker
sudo systemctl start docker
# 查看版本
docker -v # docker --version
Docker version 18.09.5, build e8ff056
4.安装docker-composeweb
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
# 添加执行权限
sudo chmod +x /usr/local/bin/docker-compose
# 查看版本
docker-compose -v # docker-compose --version
5.安装compose bash补全命令sql
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,删除可执行文件便可docker
sudo rm /usr/local/bin/docker-compose
7.配置docker镜像加速shell
在/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镜像,来建立流水线项目npm
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
# 将jenkins的数据目录挂载出来,防止数据丢失
# 这里把.ssh目录挂载出来的缘由是:
# 1.以后须要将rails应用部署到其余服务器上,须要经过ssh认证来远程部署应用,因此主机host须要保证和部署服务器连通。
# 2.须要将ssh公钥传入到git服务器上,保证能正常拉取代码
json
➜ ~ 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
# 查看jenkins日志
➜ ~ sudo docker logs -f --tail=50 a210c6d643a3
看到密码后复制,或者进入容器内的/var/jenkins_home/secrets/initialAdminPassword 查看,由于jenkins容器目录挂载到了/home/oliver/jenkins_home下,因此也能够查看 sass
/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所在服务器与应用部署服务器区分开):
16.根据部署脚本deploy.sh启动容器:
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
# Start the main process.
CMD ["rails", "server", "-b", "0.0.0.0"]
18.入口点entrypoint.sh
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后台查看构建过程,也能够在部署服务器查看容器日志。