本文将为您提供关于dockercomponse装jenkins的详细介绍,同时,我们还将为您提供关于DockerCompose安装Jenkins、DockerCompose安装部署Jenkins、Do
本文将为您提供关于docker componse装jenkins的详细介绍,同时,我们还将为您提供关于Docker Compose 安装 Jenkins、Docker Compose安装部署Jenkins、Docker Compose构建Jenkins的实现、Docker 安装Jenkins的实用信息。
本文目录一览:- docker componse装jenkins
- Docker Compose 安装 Jenkins
- Docker Compose安装部署Jenkins
- Docker Compose构建Jenkins的实现
- Docker 安装Jenkins
docker componse装jenkins
前言
最近项目人变多了,代码也变多了,于是需要搞一个自动化部署的东西,就装了jenkins。
其实是因为之前每个人都可以root上线上kubernetes环境,前几天不知道是谁删掉了线上的docker,幸亏只是一台节点没什么事,为了防止这种情况所以把服务器权限收起来了
开始装
docker大法好,https://github.com/jenkinsci/docker。
docker-compnse.yml:
version: '3'
services:
jenkins:
image: 'jenkins/jenkins:lts'
container_name: jenkins
restart: always
environment:
- TZ=Asia/Shanghai
ports:
- '9999:8080'
- '50000:50000'
volumes:
- '/etc/localtime:/etc/localtime'
- '/home/jenkins/data:/var/jenkins_home'
- '/var/run/docker.sock:/var/run/docker.sock'
- '/vat/bin/docker:/usr/bin/docker'
上dockerhub搜搜jenkins镜像就可以,排名第一的jenkins镜像已经停更了,第二个官方的就是lts这个,/home/jenkins/data是物理机的文件地址,用镜像务必要挂载配置出来。
启动,然后访问网页,因为前面已经把文件挂载出来了,所以可以直接去看:
cat secrets/initialAdminPassword
然后复制登录进去,选左边自动装配插件就算完了。
配置镜像源
装完以后要配置镜像源,不然太慢,Manage Jenkins
-> Manage Plugins
-> Advanced,如下
这个URL改成https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json,然后来到挂载的文件夹下的updates/default.json文件修改里面的内容,我直接用sed写的:
sed -i 's#https://updates.jenkins.io/download#https://mirrors.tuna.tsinghua.edu.cn/jenkins#g' default.json && sed -i 's#http://www.google.com#https://www.baidu.com#g' default.json
改完以后:
docker restart jenkins
重启容器,进入下一步。
升级
进入jenkins以后会被提示升级,在页面上下载那个war包以后扔到挂载出来的data目录下后用root进入容器:
docker exec -it -u root jenkins /bin/bash
进入容器后执行:
cd /usr/share/jenkins/
cp /var/jenkins_home/jenkins.war ./
用刚才扔到挂载目录下的war包覆盖share/jenkins下的war包,然后退出容器并重启:
docker restart jenkins
再次从网页进入jenkins会发现升级完了。
Docker Compose 安装 Jenkins
前言
上回我们已经安装好了 Docker,这篇我们利用 Compose,通过配置 docker-compose.yml 安装 jenkins。之所以使用 Compose,是因为后续如果有更多容器,能够更为方便直观的管理。本文翻译了部分 Docker 官方文档,并且参考了简书及掘金上一些博主的文章,如果我写的有些不太清楚的点,可以点击文末链接查看原文。
安装 Docker Compose
Docker Compose 依赖于 Docker,在安装 Docker Compose 前,需要确保已经安装了 Docker。
如果你在 Mac 和 Windows 安装了 Docker Desktop,则不需要另行安装,Docker Compose 已经包括在内。如果想要在 Linux 上安装 Docker Compose,则需要先安装 Docker,详细步骤可参考我的上篇博文《CentOS7 Docker CE 安装》。
在 Linux 系统上安装 Compose
-
运行下列命令下载当前的 Docker Compose 稳定版本:
sudo curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
-
添加可执行权限
sudo chmod +x /usr/local/bin/docker-compose
-
查看是否安装成功
docker-compose --version
卸载 Compose
因为我们是采用 curl 方式安装,卸载只需要运行以下命令:
sudo rm /usr/local/bin/docker-compose
安装 Jenkins
配置 docker-compose.yml 文件
- 创建 Jenkins 文件夹,并新建
docker-compose.yml
文件
version: ''3'' # 定义版本,不指定默认为版本 1,新版本功能更多
services: # 容器
jenkins:
image: ''jenkins/jenkins:lts'' # 镜像
container_name: jenkins # 容器名称
restart: always # 同 --restart 参数
ports: # 端口映射,同 -p 参数,本地端口:容器端口
- ''8080:8080''
- ''50000:50000''
volumes: # 数据卷,本地文件夹:容器文件夹
- ''/data/docker/jenkins:/var/jenkins_home''
如果服务器 8080 端口被占用,可将 services-jenkins-ports
中的 8080:8080 改为 xxxx:8080,其中 xxxx 对应你自己的端口。
ps:记得将 xxxx 端口开放。
创建映射文件夹,并启动 jenkins
-
创建映射文件夹,将 Docker 中的 /var/jenkins_home 目录映射到本地目录。若本地目录和本文不一致,则需要修改上述 docker-compose.yml 中的
services-jenkins-volumes
字段中的/data/docker/jenkins
为你自己的目录mkdir -p /data/docker/jenkins chown -R 1000:1000 /var/jenkins_home # 把当前目录的权限分配给 uid 1000
-
启动 jenkins 容器
docker-compose up -d # -d 参数表示后台启动
-
接下来只需要访问
http://server_ip:8080
,运行下列命令获取密钥,即可登录 Jenkins 啦docker logs -f jenkins
如果之后忘记了密钥,也可以通过下列指令找回:
cat /data/docker/jenkins/secrets/initialAdminPassword
参考文献
Install Docker Compose - Docker官网文档
Docker Compose 零基础入门
Docker:Docker Compose 详解
docker-compose 安装 jenkins
Docker Compose安装部署Jenkins
流水线可以让项目发布流程更加清晰,docker可以大大减少Jenkins配置。
1、前言
- 数据卷挂载到
/var
磁盘目录下,因为该磁盘空间较大,后面需要挂载容器数据卷,以防内存吃紧。 - 为了可以留存启动
Jenkins
服务的配置以及启停Jenkins方便,我采用Docker Compose
部署(没有用到Compose的核心功能、没有关联容器,纯粹个人喜好,大佬们有更好的方式烦请指点一二,感谢)
先简单介绍一下 Docker Compose
2、Docker Compose
Docker Compose 是 Docker 官方编排(Orchestration)项目之一,负责快速在集群中部署分布式应用。
Dockerfile 可以让用户管理一个单独的应用容器;而 Compose 则允许用户在一个模板(YAML 格式)中定义一组相关联的应用容器(被称为一个 project,即项目),例如一个 Web 服务容器再加上后端的数据库服务容器等。
该项目由 Python 编写,实际上调用了 Docker 提供的 API 来实现。
首先介绍几个术语。
- 服务(service):一个应用容器,实际上可以运行多个相同镜像的实例。
- 项目(project):由一组关联的应用容器组成的一个完整业务单元。
可见,一个项目可以由多个服务(容器)关联而成,Compose 面向项目进行管理。
下面演示单机部署Jenkins
这里忘记说怎么安装使用 Docker Compose 了,所以补了一篇 Docker Compose之容器编排开发初探,快来看看吧
3、通过docker-compoes来部署容器
- 创建 docker_jenkins_compose 文件夹
- docker_jenkins_compose 目录下创建 docker-compose.yml 文件
- 编写
docker-compose.yml
# docker-compose.yml
version: ''3''
services: # 集合
docker_jenkins:
user: root # 为了避免一些权限问题 在这我使用了root
restart: always # 重启方式
image: jenkins/jenkins:lts # 指定服务所使用的镜像 在这里我选择了 LTS (长期支持)
container_name: jenkins # 容器名称
ports: # 对外暴露的端口定义
- 8082:8080 # 访问Jenkins服务端口
- 50000:50000
volumes: # 卷挂载路径
- /var/vol_dockers/jenkins_home/:/var/jenkins_home # 这是我们一开始创建的目录挂载到容器内的jenkins_home目录
- /var/run/docker.sock:/var/run/docker.sock
- /usr/bin/docker:/usr/bin/docker # 这是为了我们可以在容器内使用docker命令
- /usr/local/bin/docker-compose:/usr/local/bin/docker-compose
- 创建启停脚本文件: restart , start, stop, 并修改文件权限
创建文件
# restart docker-compose restart
# start docker-compose up -d
# stop docker-compose stop
- 修改文件权限
chmod 777 restart start stop // 可读可写可执行
4、启动容器
./start
5、查看容器日志
docker logs ''ContainerId''
生成Jenkins登录初始密码,一会登录的时候要用
docker logs -f jenkins
查看实时日志
查看Jenkins状态
ps -ef | grep jenkins
6、宿主机访问jenkins主目录
# 容器内/var/jenkins_home挂载目录
/var/vol_dockers/jenkins_home
7、登录Jenkins
浏览器打开 http://主机ip:8082
8、启动问题及处理
宿主机里访问 localhost:8082
curl localhost:8082
Authentication required
防火墙要开放 50000
和8082
端口,同时也要配置阿里云安全组规则
。
防火墙相关的可以参考掘金文章
本篇完,以后启停Jenkins服务可以直接执行上面配置的可执行文件即可,比较方便。后面接着开始创建jenkins用户,配置Jenkins。
持续更文,关注我,你会发现一个踏实努力的宝藏前端,让我们一起学习,共同成长吧。
喜欢的小伙伴记得点赞关注收藏哟,回看不迷路
欢迎大家评论交流, 蟹蟹
Docker Compose构建Jenkins的实现
Jenkins
创建目标文件夹
$ cd /usr/local $ mkdir docker $ cd docker $ mkdir jenkins $ cd jenkins $ vi docker-compose.yml
创建docker-compose.yml
内容如下:
version: ''3.1'' services: jenkins: restart: always image: jenkins/jenkins container_name: jenkins ports: # 发布端口 - 8080:8080 # 基于 JNLP 的 Jenkins 代理通过 TCP 端口 50000 与 Jenkins master 进行通信 - 50000:50000 environment: TZ: Asia/Shanghai volumes: - ./data:/var/jenkins_home
安装过程中会出现数据卷目录权限问题,用以下命令解决:
chown -R 1000 /usr/local/docker/jenkins/data
启动容器
docker-compose up -d
启动完成后访问:http://ip:8080
。
解锁 Jenkins
Jenkins
第一次启动时需要输入一个初始密码用以解锁安装流程,使用 docker logs jenkins
即可方便的查看到初始密码。也可以根据提示在容器中查看/var/jenkins_home/secrets/initialAdminPassword
文件。
docker logs -f jenkins
*************************************************************
*************************************************************
*************************************************************Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:67b9966bc4334a17ad7a7daef043bac8
This may also be found at: /var/jenkins_home/secrets/initialAdminPassword
*************************************************************
*************************************************************
*************************************************************
插件安装
插件是 Jenkins
的核心,其丰富的插件可以满足不同人群的不同需求。
Jenkins
官网插件地址:https://plugins.jenkins.io/
输入初始密码后,选择自选方式安装插件。
注意:除了默认勾选的插件外,一定要勾选 Publish over SSH
插件,这是我们实现持续交付的重点插件。
点击安装后,根据网络情况,安装时间不一样,耐性等待即可。
出现部分插件安装失败时,点击重试按钮,多次重试,如果还是无法安装,记住这些插件的名字,稍后可以手动安装。
安装成功效果图 创建管理员账号
进入首页
Jenkins手动安装插件
如下例子为安装中文插件
Manage Jenkins
-> Manage Plugins
-> Avaliable
右上角搜索框查找想要安装的插件,选中,点击Download now and install after restart
。
下载好后,重启Jenkins
。
docker-compose down docker-compose up -d
配置 JDK & Maven
上传 JDK
和 Maven
的 tar
包到服务器(容器数据卷目录),进行解压缩。
Manage Jenkins
-> Global Tool Configuration
(系统管理
->全局工具配置
)。
安装 JDK
/var/jenkins_home/jdk1.8.0_152
安装Maven
点击保存
安装动态参数插件
该插件的主要目的是为了方便我们后面在做项目构建时可以按照版本进行构建(支持一键回滚)
Manage Jenkins
->Manage Plugins
->Avaliable
- 搜索
Extended Choice Parameter
- 点击
Download now and install after restart
。
配置 Jenkins 的 GitLab SSH 免密登录
交互式进入 Jenkins
容器
docker exec -it jenkins /bin/bash
生成 SSH KEY
ssh-keygen -t rsa -C "your_email@example.com"
查看公钥
cat /var/jenkins_home/.ssh/id_rsa.pub
复制公钥到 GitLab
手动克隆一次项目,该步骤的主要作用是为了生成和服务器的验证信息
jenkins@730898bc8b96:~$ git clone ssh://git@192.168.50.131:2222/test/test.git Cloning into ''test''... The authenticity of host ''[192.168.50.131]:2222 ([192.168.50.131]:2222)'' can''t be established. ECDSA key fingerprint is SHA256:x21ujjNoJ+7wXGszSI7s70szbK0/+7mTOeDP5h0saMs. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added ''[192.168.50.131]:2222'' (ECDSA) to the list of known hosts. remote: Counting objects: 3, done. remote: Total 3 (delta 0), reused 0 (delta 0) Receiving objects: 100% (3/3), done. jenkins@730898bc8b96:~$
查看生成文件
jenkins@730898bc8b96:~$ cd .ssh/ jenkins@730898bc8b96:~/.ssh$ ls -al total 20 drwx------ 2 jenkins jenkins 4096 Apr 9 19:03 . drwxr-xr-x 16 jenkins root 4096 Apr 9 19:03 .. -rw------- 1 jenkins jenkins 2602 Apr 9 18:57 id_rsa -rw-r--r-- 1 jenkins jenkins 572 Apr 9 18:57 id_rsa.pub -rw-r--r-- 1 jenkins jenkins 222 Apr 9 19:03 known_hosts jenkins@730898bc8b96:~/.ssh$
配置 Publish over SSH
系统管理
-> 系统设置
-> Publish over SSH
点击新增,其中 Remote Directory
是指 Jenkins
可以在目标服务器操作的目录,选择 Use password
, 输入目标服务器密码
测试能否正常通信
点击保存
持续交付 Maven 项目
为项目创建标签
在 GitLab
中为项目创建标签
在 Jenkins 中创建 Maven Project
在 Jenkins
中创建一个基于 Maven
的任务
这里没有Maven
项目选项,需要安装插件 Maven Integration
、Pipeline Maven Integration
配置第一次构建
构建项目
查看构建日志
配置正式构建
增加参数化构建过程
这里使用了 Groovy 脚本来查询最近的 tags 版本,代码如下:
def ver_keys = [ ''bash'', ''-c'', ''cd /var/jenkins_home/workspace/myshop-dependencies;git pull>/dev/null; git remote prune origin >/dev/null; git tag -l|sort -r |head -10 '' ] ver_keys.execute().text.tokenize(''\n'')
关闭源码管理
增加构建步骤
shell
脚本代码如下:
echo $RELEASE_VERSION cd /var/jenkins_home/workspace/myshop-dependencies git checkout $RELEASE_VERSION git pull origin $RELEASE_VERSION mvn clean package
使用参数化构建项目
批准 groovy
脚本
再次点击参数化构建
查看构建日志
发送文件或执行远程命令
Source files
:需要传输到远程目标服务器的文件
**/*.jar,docker/**
Remove prefix
:删除前缀。比如传输 **/*.jar
,我们打包的 .jar
文件是在 target
目录下的,传输时会一并创建 target
目录,如果不希望创建 target
目录,则可以使用该参数屏蔽掉这些前缀文件夹。
Remote directory
:在远程目标服务器创建操作目录
myapp
Exec command
:在远程目标服务器执行控制台命令
cd /usr/local/jenkins/myapp cp target/myapp-1.0.0-SNAPSHOT.jar docker cd docker docker build -t 192.168.50.128:5000/myapp:v1.0.0 . docker push 192.168.50.128:5000/myapp:v1.0.0 docker-compose down docker-compose up -d docker image prune -f
到此这篇关于Docker Compose构建Jenkins的实现的文章就介绍到这了,更多相关Docker Compose构建Jenkins内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
Docker 安装Jenkins
Jenkins官方网址:https://jenkins.io/
dockerHub官方网址:https://hub.docker.com/
Jenkins社区版镜像:https://github.com/jenkinsci/docker/blob/master/README.md
一、使用docker search命令搜索Jenkins镜像
localhost:~ piao$ docker search jenkins
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
jenkins Official Jenkins Docker image 4768 [OK]
jenkins/jenkins The leading open source automation server 2035
jenkinsci/blueocean https://jenkins.io/projects/blueocean 516
jenkinsci/jenkins Jenkins Continuous Integration and Delivery … 382
jenkins/jnlp-slave a Jenkins agent which can connect to Jenkins… 127 [OK]
jenkinsci/jnlp-slave A Jenkins slave using JNLP to establish conn… 124 [OK]
jenkinsci/slave Base Jenkins slave docker image 64 [OK]
jenkins/slave base image for a Jenkins Agent, which includ… 41 [OK]
jenkinsci/ssh-slave A Jenkins SSH Slave docker image 40 [OK]
cloudbees/jenkins-enterprise CloudBees Jenkins Enterprise (Rolling releas… 34 [OK]
jenkins/ssh-slave A Jenkins slave using SSH to establish conne… 29 [OK]
h1kkan/jenkins-docker Extended Jenkins docker image, bundled wi… 26
xmartlabs/jenkins-android Jenkins image for Android development. 26 [OK]
bitnami/jenkins Bitnami Docker Image for Jenkins 24 [OK]
openshift/jenkins-2-centos7 A Centos7 based Jenkins v2.x image for use w… 22
cloudbees/jenkins-operations-center CloudBees Jenkins Operation Center (Rolling … 14 [OK]
vfarcic/jenkins-swarm-agent Jenkins agent based on the Swarm plugin 8 [OK]
openshift/jenkins-slave-base-centos7 A Jenkins slave base image. DEPRECATED: see … 7
trion/jenkins-docker-client Jenkins CI server with docker client 5 [OK]
publicisworldwide/jenkins-slave Jenkins Slave based on Oracle Linux 5 [OK]
openshift/jenkins-1-centos7 DEPRECATED: A Centos7 based Jenkins v1.x ima… 4
ansibleplaybookbundle/jenkins-apb An APB which deploys Jenkins CI 1 [OK]
jameseckersall/jenkins docker-jenkins (based on openshift jenkins 2… 0 [OK]
mashape/jenkins Just a jenkins image with the AWS cli added … 0 [OK]
amazeeio/jenkins-slave A jenkins slave that connects to a master vi… 0 [OK]
这里需要注意,搜索到的第一个镜像jenkins是官方镜像,已经停止运维了,最新的都是2年前的。
我们这里使用第二个镜像jenkins/jenkins,这是jenkins社区版镜像,更新到现在。
二、docker pull拉取Jenkins镜像
localhost:~ piao$ docker pull jenkins/jenkins:lts
这里我们拉取的lts的版本,LTS (长期支持) 版本每12周从常规版本流中选择,作为该时间段的稳定版本。
三、docker run运行jenkins镜像
我们可以先输入docker images查看一下本地镜像库
localhost:~ piao$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
jenkins/jenkins lts 5307ff34e221 13 days ago 648MB
这个时候我们看到本地有jenkins/jenkins:lts这个镜像文件,现在我们要运行它。
localhost:~ piao$ docker run -d -p 8086:8080 -p 50000:50000 -v /home/jenkins/data:/var/jenkins_home jenkins/jenkins:lts
-d 是指在后台运行
-p 是映射到宿主机的端口
-v 是数据卷挂载,因为容器销毁里面的数据会消失,所以我们在使用镜像的时候,都会把重要的数据挂载到宿主机上。
最后就是镜像名称。
运行成功后,我们会看到一长串的容器ID。
然后我们输入Jenkins访问地址:http://127.0.0.1:8086/
看到这个页面我们Jenkins就启动成了,接着我们就等待一段时间。
四、解锁Jenkins
这个时候我们可以使用docker命令进入Jenkins容器里面
localhost:~ piao$ docker exec -it c41c0fce6fdd /bin/bash
在Jenkins容器里面,我们需要根据Jenkins Web提示的内容输入以下命令查看密码。
jenkins@c41c0fce6fdd:/$ cat /var/jenkins_home/secrets/initialAdminPassword
f3bddd1bdc7e4be4ac4b4af4ac9b2068
复制密码f3bddd1bdc7e4be4ac4b4af4ac9b2068到网页上,点击继续然后等待一段时间。
五、下载推荐插件
这里我们选择安装推荐的插件就可以了。但是在点击之前我们需要注意!!!!
因为部分插件被墙了,需要FQ,所以我们这里需要设置国内的下载源。
关于下载Jenkins插件很慢请看这边文章:解决下载Jenkins插件很慢
现在系统正在下载插件,我们等待一会就好了。
六、设置Jenkins基础配置
最后我们看到这个页面安装完成了。
关于docker componse装jenkins的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于Docker Compose 安装 Jenkins、Docker Compose安装部署Jenkins、Docker Compose构建Jenkins的实现、Docker 安装Jenkins等相关知识的信息别忘了在本站进行查找喔。
本文标签: