安装docker
使用 Docker 仓库进行安装
安装所需的软件包
sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
设置稳定的仓库
阿里云的数据源
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装特定版本的 Docker Engine-Community
列出并排序您存储库中可用的版本
yum list docker-ce --showduplicates | sort -r
通过其完整的软件包名称安装特定版本,该软件包名称是软件包名称(docker-ce)加上版本字符串(第二列),从第一个冒号(:)一直到第一个连字符,并用连字符(-)分隔。例如:docker-ce-18.09.1。
sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
启动 Docker。
sudo systemctl start docker
创建一个自定义网桥
docker network create --subnet 172.19.0.0/16 --gateway 172.19.0.1 mynetwork
查看网络名称
docker network ls
安装nacos
nacos下载地址
解压
tar -xvf nacos-server-$version.tar.gz
进入bin目录
cd nacos/bin
单例模式启动
sh startup.sh -m standalone
nohup sh startup.sh -m standalone &
访问一下地址:8848/nacos是否启动成功,默认用户密码都是nacos
安装jenkins
需要安装好jdk
添加Jenkins库到yum库,Jenkins将从这里下载安装。
wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
yum install -y jenkins
配置文件
vi /etc/sysconfig/jenkins
启动
service jenkins start
在Jenkins创建item
- 在全局工具配置中配置好jdk,git,maven
- 新建一个自由风格的任务
- 添加任务描述
- 添加git源码管理(这里其实推荐配置使用SSH免密,我这边多次配置之后各种连不上,放弃治疗了,就直接用账密登录了,点击添加,Domain选择全局凭据,类型选择Username with password。)
- 选择分支
构建环境
通过shell完成备份编译打包
第一步,执行maven打包命令,这一步会在你的jenkins容器内完成,然后把你的源码打成jar包,路径如下:
/var/jenkins_home/workspace/back_test_docker-day2/target/xxx.jar
其中back_test_docker-day2为你的任务名,如果你改了的话,这个目录也会改
第二步,执行shell脚本
因为我的Jenkins和docker容器在一台服务器上,这里就不需要SSH Server了
#!/bin/bash
# 上面这个东西不加,会报空间不足异常
# 注意:所有镜像,容器和应用的命名,最好不要有大写字母
# docker镜像/容器名字
SERVER_NAME=nacos-config
# 操作/项目路径(Dockerfile和Jar存放的路径)
BASE_PATH=/var/lib/jenkins/docker/project/$SERVER_NAME
# 备份目录
BACKUP_PATH=/var/lib/jenkins/docker/project/backup
# jar名字
JAR_NAME=$SERVER_NAME-1.0-SNAPSHOT.jar
# 源jar路径(注:更新任务名需要同步更新这个路径,例:back_test_docker-day2)
SOURCE_PATH=/var/lib/jenkins/workspace/nacos-study/nacos-config/target/$JAR_NAME
# 当前日期时间
DATE=`date +%Y%m%d-%H%M%S`
# 备份
function backup(){
if [ ! -d $BACKUP_PATH ]; then
mkdir $BACKUP_PATH
else
echo "备份文件夹已存在"
fi
if [ -f "$BASE_PATH/$JAR_NAME" ]; then
echo "$JAR_NAME 备份..."
cp $BASE_PATH/$JAR_NAME $BACKUP_PATH/$SERVER_NAME-$DATE.jar
echo "备份 $JAR_NAME 完成"
else
echo "$BASE_PATH/$JAR_NAME不存在,跳过备份"
fi
}
# 迁移,构建好的Jar包,复制到DockerFile一起
function transfer(){
echo "迁移代码开始"
rm -rf $BASE_PATH
mkdir -p $BASE_PATH
echo "最新构建代码 $SOURCE_PATH 迁移至 $BASE_PATH ...."
cp $SOURCE_PATH $BASE_PATH
echo "迁移完成"
}
# 生成Dockerfile文件
function dockerfile(){
echo "开始生成Dockerfile文件"
echo """
FROM java:8
ADD $JAR_NAME $JAR_NAME
#更改容器时区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 容器启动后执行的操作
CMD java -jar $JAR_NAME org.mgb.ProductApplication
""" > $BASE_PATH/Dockerfile
echo "生成Dockerfile文件成功"
}
#入口
backup # 1:备份
transfer # 2:迁移
dockerfile # 3:生成dockerfile
#!/bin/bash
# 上面这个东西不加,会报空间不足异常
# 注意:所有镜像,容器和应用的命名,最好不要有大写字母
# docker镜像/容器名字
SERVER_NAME=nacos-config
# 操作/项目路径(Dockerfile和Jar存放的路径)
BASE_PATH=/var/lib/jenkins/docker/project/$SERVER_NAME
# 端口号
APP_PORT=9001 #应用的端口
E_PORT=9001 #服务暴露给外部调用的端口
# 容器id
CID=$(docker ps -a | grep "$SERVER_NAME" | awk '{print $1}')
# 镜像id
IID=$(docker images | grep "$SERVER_NAME" | awk '{print $3}')
function dockerBuild(){
if [ -n "$CID" ]; then
echo "存在$SERVER_NAME容器,CID=$CID,删除容器 ..."
docker rm -f $CID
echo "$SERVER_NAME容器删除完成..."
else
echo "不存在$SERVER_NAME容器..."
fi
if [ -n "$IID" ]; then
echo "存在$SERVER_NAME镜像,IID=$IID"
docker rmi -f $IID
echo "镜像删除完成"
cd $BASE_PATH
docker build -t $SERVER_NAME .
echo "镜像构建完成"
else
echo "不存在$SERVER_NAME镜像,开始构建镜像"
cd $BASE_PATH
docker build -t $SERVER_NAME .
echo "镜像构建完成"
fi
echo "启动容器..."
docker run --name $SERVER_NAME -d --network=mynet -p $E_PORT:$APP_PORT $SERVER_NAME
echo "容器启动完成"
}
dockerBuild # 4:停止->删除旧容器,删除旧镜像,重建镜像,run容器
配置好之后,点击立即构建
然后docker ps看一下容器是否启动成功
参考了这位大神的帖子
仅供个人学习,有什么不对的地方欢迎指正,后续继续添加有关springcloud的学习
问题
安装jenkins时命令需要加 sudo