参考连接:http://www.macrozheng.com/#/reference/linux_installhtml
tipsjava
公司服务器配置(1T机械+256固态+i7的u) 须要咱们把系统,环境(java,mysql,redis,docker等)装到固态上(速度快),咱们的代码放到机械上。分区状况以下图
自行百度,此处无坑mysql
安装jdk1.8 和 maven 时尽可能采用压缩包解压的方式,采用 yum
有坑。个人安装路径linux
配置环境 vim /etc/profile
,配置结果如图web
#java,maven环境配置 #用':'分割不一样的配置 export JAVA_HOME=/mydata/java/jdk MAVEN_HOME=/mydata/java/maven export PATH=$JAVA_HOME/bin:$PATH:${MAVEN_HOME}/bin export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
centos7安装mysql5.7,参考连接:
https://www.cnblogs.com/helf/p/11244711.htmlredis
下载 Jenkins
的 docker
镜像:sql
docker pull jenkins/jenkins:lts
docker
在 Docker
容器中运行 Jenkins
:shell
//此处由于java和maven是在linux上直接装的而Jenkins在docker上装的因此必须挂载jdk和maven(坑) //-v命令进行挂载,其中冒号前面的是本机的目录; //必须将本机的javahome和mavenhome的路径,挂载到Jenkins容器上 //冒号后面是容器上的目录,能够写跟本机目录相同。 docker run -p 8080:8080 -p 50000:5000 --name jenkins \ -u root \ -v /mydata/java/jdk/bin/java:/mydata/java/jdk/bin/java \ -v /mydata/java/jdk:/mydata/java/jdk \ -v /mydata/java/maven:/mydata/java/maven \ -v /mydata/jenkins_home:/var/jenkins_home \ -d jenkins/jenkins:lts
忘记 Jenkins
初始化密码,使用 docker logs jenkins
查看日志vim
配置如图
参考连接:https://www.cnblogs.com/zhangheliang/p/8724605.html
Jenkins
的配置
还有一种没有去掉勾的方式,我获取 crumb 值的时候报404,为解决,有须要自行百度
svn
的配置
在生成的 post-commit
中加入下面的代码
curl -X post -v -u admin:117f598cc5f81226faaac0ceff40b367da http://ip:8080/jenkins/job/jenkinsdemo/build?token=APPLE_TOKEN
#!/bin/bash #操做/项目路径(Dockerfile存放的路径),每一个项目都有对应的dockerfile DOCKERFILE_PATH=/mydata/jenkins_home/workspace/jenkinsdemo/src/main/docker #jenkins工做空间 SOURCE_PATH=/mydata/jenkins_home/workspace #docker 镜像/容器名字或者jar名字 这里都命名为这个 SERVER_NAME=jenkinsdemo JAR_NAME=demo-0.0.1-SNAPSHOT #获取容器id CID=$(docker ps | grep "${SERVER_NAME}" | awk '{print $1}') #获取镜像id IID=$(docker images | grep "${SERVER_NAME}" | awk '{print $3}') DATE=`date +%Y%m%d%H%M` # 备份 function backup(){ if [ -f "${DOCKERFILE_PATH}/${SERVER_NAME}.jar" ]; then echo "${SERVER_NAME}.jar 备份..." cp ${DOCKERFILE_PATH}/${JAR_NAME}.jar ${DOCKERFILE_PATH}/backup/${SERVER_NAME}-$DATE.jar echo "备份 ${JAR_NAME}.jar 完成" else echo "${DOCKERFILE_PATH}/${JAR_NAME}.jar不存在,跳过备份" fi } # 最新构建代码 移动到项目环境 # 把最新构建的jar包放到和dockerfile同级的目录 function transfer(){ echo "啦啦啦 ${DOCKERFILE_PATH}" echo "最新构建代码 ${SOURCE_PATH}/${SERVER_NAME}/target/${JAR_NAME}.jar 迁移至 ${DOCKERFILE_PATH}" cp ${SOURCE_PATH}/${SERVER_NAME}/target/${JAR_NAME}.jar ${DOCKERFILE_PATH}/ echo "迁移完成" } # 修改访问权限 function changemod(){ echo "修改 ${DOCKERFILE_PATH}/${JAR_NAME}.jar 的访问权限" cd ${DOCKERFILE_PATH} chmod 777 ${JAR_NAME}.jar echo "修改访问权限完成" } # 构建docker镜像 function build(){ if [ -n "$IID" ]; then echo "存在${SERVER_NAME}镜像,IID=$IID" echo "中止容器docker stop $CID" docker stop $CID echo "删除容器 docker rm $CID" docker rm $CID echo "删除镜像 docker rmi ${SERVER_NAME}" docker rmi ${SERVER_NAME} echo "构建镜像 docker build -t "${SERVER_NAME}" ." cd ${DOCKERFILE_PATH} docker build -t="${SERVER_NAME}" . else echo "不存在${SERVER_NAME}镜像,开始构建镜像 docker build -t ${SERVER_NAME} . " cd ${DOCKERFILE_PATH} docker build -t="${SERVER_NAME}" . fi } # 运行docker容器 function run(){ backup transfer changemod build echo "docker run建立容器... docker run -d --name=${SERVER_NAME} -p 8002:8082 -v ${DOCKERFILE_PATH}:${DOCKERFILE_PATH} jenkinsdemo:latest" docker run -d --name=${SERVER_NAME} -p 8002:8002 -v ${DOCKERFILE_PATH}:${DOCKERFILE_PATH} jenkinsdemo:latest echo "${SERVER_NAME}容器建立完成" } #入口 run
# 该镜像须要依赖的基础镜像 FROM java:8 # 将当前目录下的jar包复制到docker容器的/目录下 ADD demo-0.0.1-SNAPSHOT.jar /jenkinsdemo.jar # 运行过程当中建立一个mall-tiny-docker-file.jar文件 RUN bash -c 'touch /jenkinsdemo.jar' # 声明服务运行在8083端口 EXPOSE 8083 # 指定docker容器启动时运行jar包 ENTRYPOINT ["java", "-jar","/jenkinsdemo.jar"] # 指定维护者的名字 MAINTAINER zhaoguozhen
参考连接:https://my.oschina.net/zhengqingya/blog/3066410
docker
是经过 dockerfile
来说代码打包成 docker
镜像并运行的,多个子工程(微服务)也可使用Docker Compose
来部署(这个东西相似于批处理,使用一个命令部署配置的全部服务)
shell
脚本中的变量打印不出来考虑换个名称
好比:BASE_PATH
换成 DOCKERFILE_PATH
,shell 脚本就能够执行成功
访问连接打不开,考虑是否打开防火墙和权限
#打开防火墙 firewall-cmd --zone=public --add-port=9000/tcp --permanent #从新加载 firewall-cmd --reload #查看开放的端口 firewall-cmd --list-ports
大白话理解 CI CD
把代码打包成容器叫CI,把容器部署到服务器是CD
自动化部署平台理解
上面只是横向弄好了,竖向还没弄好。下面须要弄个docker管理器,将打包好的代码镜像人工选择放到docker集群中的某个docker上