curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
systemctl start docker systemctl enable docker
docker run hello-world
sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version
總體目錄結構以下html
app └── data ├── deploy │ └── jenkins │ ├── config │ ├── docker-composer.yml │ └── Dockerfile └── jenkins ├── certs └── data
# 存放docker-compose相關配置文件 mkdir -p /app/data/deploy/jenkins # 存放Jenkins證書相關文件 mkdir -p /app/data/jenkins/certs # 存放Jenkins數據文件 mkdir -p /app/data/jenkins/data # 修改權限 cd /app/data chmod 775 -R jenkins/ chown -R 1000:1000 jenkins/
cd /app/data/deploy/jenkins/
version: "2" services: jenkins-blueocean: build: context: . container_name: jenkins-blueocean network_mode: bridge ports: - 8088:8080 # - 50000:50000 environment: # - DOCKER_HOST=tcp://docker:2376 # - DOCKER_CERT_PATH=/certs/client # - DOCKER_TLS_VERIFY=1 - TZ=Asia/Shanghai - JENKINS_UC="https://mirrors.tuna.tsinghua.edu.cn/jenkins/" - JENKINS_UC_DOWNLOAD="https://mirrors.tuna.tsinghua.edu.cn/jenkins/" - JENKINS_OPTS="-Dhudson.model.UpdateCenter.updateCenterUrl=https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json" volumes: - /app/data/jenkins/certs:/certs/client:ro - /app/data/jenkins/data:/var/jenkins_home depends_on: - jenkins-docker links: - jenkins-docker:docker jenkins-docker: image: docker:19.03.14-dind container_name: jenkins-docker privileged: true network_mode: bridge command: --config-file /etc/docker/daemon.json ports: - 2376:2376 environment: - DOCKER_TLS_CERTDIR=/certs volumes: - ./config/daemon.json:/etc/docker/daemon.json:ro - /app/data/jenkins/certs:/certs/client - /app/data/jenkins/data:/var/jenkins_home
FROM jenkins/jenkins:2.263.1-lts-slim USER root COPY config/sources.list /etc/apt/sources.list RUN apt-get update && apt-get install -y apt-transport-https \ ca-certificates curl gnupg2 \ software-properties-common \ vim \ rsync \ tree \ default-mysql-client RUN curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add - RUN apt-key fingerprint 0EBFCD88 RUN add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/debian \ $(lsb_release -cs) stable" RUN apt-get update && apt-get install -y docker-ce-cli USER jenkins # RUN jenkins-plugin-cli --plugins blueocean:1.24.3
{ "registry-mirrors": [ # 阿里雲鏡像加速地址 "https://xxxx.mirror.aliyuncs.com" ], "log-opts": { "max-size": "100m", "max-file": "3" }, "live-restore": true }
deb http://mirrors.aliyun.com/debian/ buster main non-free contrib deb-src http://mirrors.aliyun.com/debian/ buster main non-free contrib deb http://mirrors.aliyun.com/debian-security buster/updates main deb-src http://mirrors.aliyun.com/debian-security buster/updates main deb http://mirrors.aliyun.com/debian/ buster-updates main non-free contrib deb-src http://mirrors.aliyun.com/debian/ buster-updates main non-free contrib deb http://mirrors.aliyun.com/debian/ buster-backports main non-free contrib deb-src http://mirrors.aliyun.com/debian/ buster-backports main non-free contrib
#構建鏡像 docker-compose -f docker-composer.yml build #啓動服務 docker-compose -f docker-composer.yml up -d #查看日誌獲取首次登陸密碼 docker logs -f jenkins-blueocean
Jenkins徹底啓動時會打印一條Jenkins is fully up and running日誌,看到此日誌就能夠開始配置Jenkins了。
node
輸入剛纔在日誌中獲得的密碼來激活Jenkinsmysql
等待插件自動安裝完成,若因網絡問題安裝失敗則重試便可linux
郵箱能夠隨便填寫
git
URL會被用來作Webhook等用途等地址
github
Jenkins自動化部署依賴一系列插件的協做,因此咱們要提早安裝好。sql
Manage Jenkins
->Manage Plugins
->高級
docker
#開源鏡像 https://mirrors.huaweicloud.com/jenkins/updates/update-center.json #開源地址 https://jenkins-zh.cn/tutorial/management/plugin/update-center/
可選插件
下搜索如下插件並安裝apache
Blue Ocean (可選,若是想用Blue Ocean視圖的話) SSH Pipeline Steps Pipeline Utility Steps NodeJS ansiColor
插件安裝完成的時候重啓Jenkinsjson
# ssh進入Jenkins服務器 # 進入Jenkins容器 docker exec -it jenkins-blueocean bash # 進入用戶主目錄,用戶主目錄中的內容被掛載到數據盤上,能夠把安裝程序放心放入其中 cd ~ mkdir -p tools && cd tools # 下載安裝包 curl https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.zip -o apache-maven-3.6.3-bin.zip # 解壓 unzip apache-maven-3.6.3-bin.zip # 刪除安裝包 rm apache-maven-3.6.3-bin.zip # 配置maven settings.xml cd ~ mkdir -p .m2 # 將項目中maven配置文件settings.xml文件內容寫入.m2/settings.xml文件中
在Jenkins Server Web界面上系統管理
->全局工具配置
->Maven
->新增maven安裝
自動安裝複選框
/var/jenkins_home/tools/apache-maven-3.6.3
保存
。上述安裝Jenkins插件過程當中已經安裝了NodeJS插件,由於NodeJS有不少版本,因此咱們須要手動配置NodeJS安裝,這樣才能夠在流水線中使用它。
在Jenkins Server Web界面上系統管理
->全局工具配置
->NodeJS
->新增NodeJS安裝
NODEJS10
(名稱很重要,咱們的流水線配置中須要使用這個名字)NodeJS10.23.0
(能夠根據須要選擇)保存
。Jenkins提供憑據管理的功能來幫助咱們存放涉密帳號密碼、私鑰等信息,在配置Pipeline前咱們須要建立好相關憑據。
# ssh進入Jenkins服務器 # 進入Jenkins容器 docker exec -it jenkins-blueocean bash # 進入主目錄 cd ~ # 生成RSA密鑰對 ssh-keygen -m PEM -t rsa
在Jenkins界面上系統管理->
管理憑據`中建立如下全局ssh密鑰對憑據,填寫好ID、描述、用戶名和私鑰信息
爲了Jenkins能正常執行部署任務,各個應用服務器運維帳號要信任上述生成的密鑰對。
可參考該文章[https://www.cnblogs.com/wangyang0210/archive/2004/01/13/9722922.html]
Jenkins Pipeline支持共享類庫來減小冗餘代碼,咱們經過這種方法來複用代碼而且管理部署相關配置。
系統管理
->系統配置
->Global Pipeline Libraries
中點擊新增來建立共享類庫,其基本信息以下:
系統管理
->全局安全配置
->項目矩陣受權策略
根據本身需求進行受權就行了
這裏只是作一個記錄,上方的步驟均已經是修改成正確的步驟。
ERROR: Can't find a suitable configuration file in this directory or any parent. Are you in the right directory? Supported filenames: docker-compose.yml, docker-compose.yaml # 解決錯誤 1. docker服務沒有啓動 2. 使用-f指定配置文件
[root@localhost jenkins]# docker logs -f jenkins-blueocean touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions? touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions? # 解決錯誤 1. 目錄權限錯誤(chown -R 1000:1000 <本地映射目錄>)