赞
踩
# 下载 jenkins 镜像
docker pull jenkins/jenkins
# 查看镜像对应的 Jenkins 版本
docker image inspect jenkins/jenkins:latest | grep JENKINS_VERSION
# 启动 jenkins 容器实例
docker run -d -p 7050:8080 -p 50000:50000 -v jenkins:/var/jenkins_home -v /etc/localtime:/etc/localtime --name jenkins docker.io/jenkins/jenkins
# 查看容器实例是否启动成功
docker ps
# 进入 jenkins 容器
docker exec -it jenkins bash
# 获取 admin 账户的初始化密码(在容器内执行)
cat /var/jenkins_home/secrets/initialAdminPassword
# 浏览器端访问, 输入 admin 账户的初始化密码
http://119.29.XXX.XXX:7050/login?from=%2Fjenkins
# 输入密码后, 进入 [安装推荐的插件] & [选择插件来安装], 初学者建议[安装推荐的插件]
# 创建第一个管理员用户, 可跳过此步骤, 继续使用默认的admin账户
-d
后台运行镜像-p 7050:8080
将镜像的8080端口映射到服务器的7050端口-p 50000:50000
将镜像的50000端口映射到服务器的50000端口-v jenkins:/var/jenkins_home
/var/jenkins_home
目录为jenkins工作目录,将容器内的 /var/jenkins_home 目录挂载到宿主机上的 jenkins 目录下, jenkins 目录在宿主机上的实际目录为/var/lib/docker/volumes/jenkins
-v /etc/localtime:/etc/localtime
让容器使用和服务器同样的时间设置。--name jenkins
给容器起一个别名
# jenkins - 系统管理 - 插件管理 - 可选插件 - 勾选对应的复选框 - 点击左下角[直接安装]
# 在[新建任务]中找不到[构建一个 maven 项目]栏目
Maven Integration
# 将成功编译的War/Jar包部署到远程的应用服务器上
Deploy to container
# 在[系统管理-系统设置]中找不到配置SSH
Publish Over SSH
Jenkins 容器内免密登录到 服务器B(192.168.170.1)
# 进入 Jenkins 容器内部
docker exec -it jenkins bash
# 生成密钥(在 Jenkins 容器内执行)
ssh-keygen -t rsa -P ''
# 复制生成的公钥(在 Jenkins 容器内执行)
cat ~/.ssh/id_rsa.pub
# 将上一步复制的公钥粘贴到 authorized_keys 文件中(在 B 服务器上执行)
vim ~/.ssh/authorized_keys
# 测试免密登录到服务器B, 登录账户 ubuntu(在 Jenkins 容器内执行)
ssh ubuntu@192.168.170.1
# 公共密钥(id_rsa.pub 文件内容)填充到一个远程机器上(10.XXX.XXX.XXX)的 authorized_keys 文件中
# sudo ssh-copy-id -i ~/.ssh/id_rsa.pub 10.XXX.XXX.XXX
容器内部已经安装了的工具直接找到对应的安装路径填写即可, 未安装的工具填写工具名称并在
自动安装复选框
上勾选, 最后保存即可.
以下子步骤 2-7 进入方法: [我的视图] -> [任务名称, eg: xn-sub-interface] -> [配置]
General
> 项目 URL
填写 SSH 地址
或 http 地址
均可
源码管理
Responsitory URL
填写SSH 地址
或http 地址
均可
3.1 添加凭证提供者
4. Build
5. Post Steps
6. 构建设置
7. 构建后操作
8. 项目构建情况
# 清理掉没有容器使用的挂载目录
docker volume prune
# 进入 Jenkins 容器内部
docker exec -it jenkins bash
# 打印 Jenkins 内部 JAVA_HOME 环境变量
echo $JAVA_HOME
# Jenkins 容器内部自动安装的 maven 的仓库路径, 项目中需要的jar包都会下载到此目录下
ls ~/.m2/repository/
# vim docker-compose.yaml
version: '2'
services:
# MySQL 服务
com.answer.mysql:
container_name: mysql.aal
hostname: mysql
image: mysql
environment:
- HOSTNAME=mysql
- MYSQL_ROOT_PASSWORD=answer123456
working_dir: /home/answer
# MySQL 在容器启动时会自动执行 /usr/local/bin/docker-entrypoint.sh 该脚本, 并自动执行 /docker-entrypoint-initdb.d 目录下的脚本
# command: /bin/bash -c './script.sh;'
volumes:
- ./data/datadir:/usr/data
- ./data/conf:/etc/mysql
- ./auto-script/mysql:/docker-entrypoint-initdb.d
- ./data/mysql-files:/var/lib/mysql-files/
ports:
- 3301:3306
logging:
driver: "json-file"
options:
max-size: "200M"
max-file: "5"
初始化脚本存放在 docker-compose.yaml 文件同级目录下的 auto-script/mysql/***.sql
- 初始化MySQL用户脚本: init_account.sql
- 初始化项目表结构脚本: init_table.sql
启动 MySQL 容器实例:
docker-compose -f docker-compose.yaml up -d
init_account.sql
use mysql;
create user 'answer'@'%' identified by 'answer123456';
grant all privileges on xsi.* to 'answer'@'%';
flush privileges;
init_table.sql
SET FOREIGN_KEY_CHECKS=0;
CREATE DATABASE IF NOT EXISTS xsi default charset utf8 COLLATE utf8_general_ci;
use xsi;
CREATE TABLE `tm_user` (
`id` bigint(18) NOT NULL AUTO_INCREMENT,
`name` varchar(25) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
############################################################
# 构建后操作 - Send build artifacts over SSH
############################################################
# 选个一个你在系统设置里配置的配置的名字. 如: SERVER_B
SSH Server Name
# 需要上传的文件(注意:相对于工作区的路径. 看后面的配置可以填写多个, 默认用,分隔). 如: target/***.jar
Transfer Set Source files
# 移除目录(只能指定Transfer Set Source files中的目录). 如: target
Remove prefix
# 远程目录, 默认会继承系统配置. 如: xn-sub-interface/
# 由于[系统设置 - Publish over SSH - Remote Directory] 设置了值 `/home/ubuntu`
# 所以最终的路径是 `/home/ubuntu/xn-sub-interface/`
Remote directory
############################################################
# 系统管理 - 系统设置 - Publish over SSH
############################################################
# 密码(key的密码,如果你设置了), 没设置填空即可
Passphrase
# ssh 证书私钥文件存放路径. 如: /var/jenkins_home/.ssh/id_rsa(Jenkins 容器内部)
Path to key
# ssh服务名称. 如: SERVER_B
SSH Servers - SSH Server Name
# 部署服务器地址. 如: 10.XXX.XXX.XXX
SSH Servers - HostName
# 部署服务器(B)的登录用户
SSH Servers - Username
# 部署服务器(B)的目录
SSH Servers - Remote Directory
出现这个情况时,是因为Jenkins的默认更新镜像用的国外的镜像,把更新镜像改成国内的即可。
vim $JENKINS_HOME/hudson.model.UpdateCenter.xml
# 将
<url>https://updates.jenkins.io/update-center.json</url>
# 修改成
<url>http://mirror.xmission.com/jenkins/updates/update-center.json</url>
# 重启jenkins即可
# 由于docker容器内没有vim命令, 在宿主机映射目录下修改即可
sudo vim /var/lib/docker/volumes/jenkins/_data/hudson.model.UpdateCenter.xml
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。