GVKun编程网logo

docker componse装jenkins

14

本文将为您提供关于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 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 安装 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

  1. 运行下列命令下载当前的 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
  2. 添加可执行权限

    sudo chmod +x /usr/local/bin/docker-compose
  3. 查看是否安装成功

    docker-compose --version

卸载 Compose

因为我们是采用 curl 方式安装,卸载只需要运行以下命令:

sudo rm /usr/local/bin/docker-compose

安装 Jenkins

配置 docker-compose.yml 文件

  1. 创建 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

  1. 创建映射文件夹,将 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
  2. 启动 jenkins 容器

    docker-compose up -d    # -d 参数表示后台启动
  3. 接下来只需要访问 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 Compose安装部署Jenkins

流水线可以让项目发布流程更加清晰,docker可以大大减少Jenkins配置。

1、前言

  1. 数据卷挂载到 /var 磁盘目录下,因为该磁盘空间较大,后面需要挂载容器数据卷,以防内存吃紧。
  2. 为了可以留存启动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来部署容器

  1. 创建 docker_jenkins_compose 文件夹
  2. docker_jenkins_compose 目录下创建 docker-compose.yml 文件
  3. 编写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
  1. 创建启停脚本文件: restart , start, stop, 并修改文件权限
  • 创建文件

    # restart
    docker-compose restart
    # start
    docker-compose up -d
    # stop
    docker-compose stop
  • 修改文件权限
chmod 777 restart start stop // 可读可写可执行

4、启动容器

./start

5、查看容器日志

  1. docker logs ''ContainerId''

生成Jenkins登录初始密码,一会登录的时候要用

  1. 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

防火墙要开放 500008082 端口,同时也要配置阿里云安全组规则

防火墙相关的可以参考掘金文章

本篇完,以后启停Jenkins服务可以直接执行上面配置的可执行文件即可,比较方便。后面接着开始创建jenkins用户,配置Jenkins。

持续更文,关注我,你会发现一个踏实努力的宝藏前端,让我们一起学习,共同成长吧。

喜欢的小伙伴记得点赞关注收藏哟,回看不迷路

欢迎大家评论交流, 蟹蟹

Docker Compose构建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

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等相关知识的信息别忘了在本站进行查找喔。

本文标签: