[关闭]
@GEEKO 2018-12-12T09:15:18.000000Z 字数 5663 阅读 737

Jenkins 部署Docker站点

部署


创建Docker镜像

创建Dockerfile文件

注意事项
* 用root用户替换默认的Jenkins用户
* 切换为国内源,加快构建速度
* 在镜像里面安装docker-compose
* curl 命令无法再Dockerfile文件里执行,需要在docker run的镜像里执行,这个后续看怎么解决

  1. FROM jenkins
  2. USER root
  3. #清除了基础镜像设置的源,切换成腾讯云的jessie源
  4. #使用非腾讯云环境的需要将 aliyun 改为 aliyun
  5. RUN echo '' > /etc/apt/sources.list.d/jessie-backports.list \
  6. && echo "deb http://mirrors.aliyun.com/debian jessie main contrib non-free" > /etc/apt/sources.list \
  7. && echo "deb http://mirrors.aliyun.com/debian jessie-updates main contrib non-free" >> /etc/apt/sources.list \
  8. && echo "deb http://mirrors.aliyun.com/debian-security jessie/updates main contrib non-free" >> /etc/apt/sources.list
  9. #更新源并安装缺少的包
  10. RUN apt-get update && apt-get install -y libltdl7 && apt-get update
  11. ARG dockerGid=999
  12. RUN echo "docker:x:${dockerGid}:jenkins" >> /etc/group
  13. # 安装 docker-compose 因为等下构建环境的需要
  14. curl -L "https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  15. RUN chmod +x /usr/local/bin/docker-compose
  16. # 测试docker-compose安装是否成功
  17. # docker-compose --version

生成镜像、安装镜像

  1. # 构建
  2. docker build -t mkm-jenkins .
  3. #创建容器
  4. docker run --name jenkins -p 8085:8080 -p 50000:50000 \
  5. -v /var/run/docker.sock:/var/run/docker.sock \
  6. -v /usr/bin/docker:/usr/bin/docker \
  7. -v /wdc/docker/jenkins/jenkins_home:/var/jenkins_home \
  8. -d d1cf34ad7a7f

jekins安装部署

安装gitee插件

参考文档:https://gitee.com/help/articles/4193

docker构建shell命令

  1. down 命令详解
  2. Usage: down [options]
  3. Options:
  4. --rmi type 删除镜像,类型必须是:
  5. 'all': 删除compose文件中定义的所以镜像.
  6. 'local': 删除镜像名为空的镜像
  7. --volumes 删除卷
  8. attached to containers.
  9. --remove-orphans Remove containers for services not defined in the
  10. file
  11. 停止和删除容器、网络、卷、镜像,这些内容是通过docker-compose up命令创建的. 默认值删除 容器 网络,可以通过指定 rmi volumes参数删除镜像和卷
  1. # Tweb 测试环境
  2. # !/bin/bash
  3. # 获取短版本号
  4. GITHASH=`git rev-parse --short HEAD`
  5. echo ---------------Remove-Orphans------------------
  6. docker-compose -f ./docker-compose.yml -f ./docker-compose.override.yml -p ${GITHASH} down --rmi local --remove-orphans
  7. echo ---------------Publishing...------------------
  8. docker-compose -f "./docker-compose.yml" -f "./docker-compose.override.yml" -p ${GITHASH} up -d --build
  9. echo ----------------Clear-Images...------------------
  10. docker rmi $(docker images -f "dangling=true" -q)
  1. # Proc 测试环境
  2. # !/bin/bash
  3. # 获取短版本号
  4. GITHASH=`git rev-parse --short HEAD`
  5. echo ---------------Remove-Orphans------------------
  6. docker-compose -f ./docker-compose.yml -p ${GITHASH} down --rmi local --remove-orphans
  7. echo ---------------Publishing... override是里面是针对测试环境 ------------------
  8. docker-compose -f "./docker-compose.yml" -f -p ${GITHASH} up -d --build
  9. echo ----------------Clear-Images...------------------
  10. docker rmi $(docker images -f "dangling=true" -q)

Docker-compose命令详解
http://www.cnblogs.com/liubin0509/p/6178351.html

Docker Compose 之进阶篇
http://www.cnblogs.com/sparkdev/p/9803554.html

整理一、

  1. # !/bin/bash
  2. # 获取短版本号
  3. GITHASH=`git rev-parse --short HEAD`
  4. # 新的镜像名称
  5. containerName='jinri.gateway.weixin.dev'
  6. # 备份当前正在运行的容器
  7. bakcontainerName='jinri.gateway.weixin.dev.bak'
  8. echo ---------------stop and rename container------------------
  9. docker stop ${containerName}
  10. # 判断当前停止和重命名的容器是否存在,如果不存在抛出异常,则对异常进行处理,然后继续下面的操作
  11. catch=$?
  12. echo $catch
  13. echo $catch -eq 0
  14. isCatch=false
  15. if [ $catch -eq 0 ]
  16. then
  17. # 重命名老的容器名称,docker container rename CONTAINER NEW_NAME
  18. docker rename ${containerName} ${bakcontainerName}
  19. echo ${containerName} container has stopped and has rename: ${bakcontainerName}
  20. else
  21. isCatch=true
  22. echo ${containerName} container does not exist,No deletion and renaming
  23. fi
  24. # 执行docker-compose 生成并运行镜像
  25. echo ---------------Remove-Orphans------------------
  26. docker-compose -f ./docker-compose.yml -f ./docker-compose.override.yml -p ${GITHASH} down --rmi local --remove-orphans
  27. echo ---------------Publishing...------------------
  28. docker-compose -f ./docker-compose.yml -f docker-compose.override.yml -p ${GITHASH} up -d --build
  29. # 清除None 无用镜像
  30. echo ----------------Clear-Images...------------------
  31. docker rmi $(docker images -f "dangling=true" -q)
  32. if [ $? -eq 1 ]
  33. then
  34. echo 'current images has no None image'
  35. fi
  36. # 如果之前停止的容器存在,则删除备份容器
  37. if [ $isCatch == false ]
  38. then
  39. docker rm ${bakcontainerName}
  40. echo ---------------the old back container ${bakcontainerName} has deleted------------------
  41. fi

整理二、

  1. # !/bin/sh
  2. # 获取git短版本号
  3. GITHASH=`git rev-parse --short HEAD`
  4. # 环境变量
  5. #environment='Development'
  6. environment='Production'
  7. # 是否推送镜像到远程仓储服务器
  8. isPush=false
  9. local_image='jinri.gateway.weixin'
  10. remote_image='jinri.gateway.weixin:1.0'
  11. # 远程仓储信息
  12. registry_url='registry.jinri.cn:5000'
  13. registry_username='guda'
  14. registry_password='guda@123'
  15. echo '----------git short:' ${GITHASH}
  16. if [ $environment == 'Development' ]
  17. then
  18. echo '--------Current Environment: Development--------'
  19. echo '--------Remove-Orphans---------'
  20. docker-compose -f ./docker-compose.yml -f ./docker-compose.override.yml -p ${GITHASH} down --rmi local --remove-orphans
  21. echo '--------Publishing---------'
  22. docker-compose -f ./docker-compose.yml -f ./docker-compose.override.yml -p ${GITHASH} up -d --build
  23. echo ----------------Clear None Images...------------------
  24. docker rmi $(docker images -f "dangling=true" -q)
  25. elif [ $environment == 'Production' ]
  26. then
  27. echo '--------Current Environment: Production--------'
  28. # git 拉取最新代码
  29. echo 'start git pull code from remote registry'
  30. git pull origin master
  31. echo '--------the last push info---------'
  32. git log -2 --pretty=format:"%h %an %d %s" --graph
  33. echo '--------Remove-Orphans---------'
  34. docker-compose -f ./docker-compose.yml -f ./docker-compose-proc.yml -p ${GITHASH} down --rmi local --remove-orphans
  35. echo '--------Publishing---------'
  36. docker-compose -f ./docker-compose.yml -f ./docker-compose-proc.yml -p ${GITHASH} up -d --build
  37. echo ----------------Clear None Images...------------------
  38. docker rmi $(docker images -f "dangling=true" -q)
  39. if [ $isPush == true ]
  40. then
  41. echo '-----------image start pushing....-------------'
  42. echo '-----------login remote docker registry-------------'
  43. docker login --username=$registry_username --password=$registry_password $registry_url
  44. echo '-----------update image tag-------------'
  45. docker tag ${local_image} $registry_url/${remote_image}
  46. echo '-----------push to remote docker registry-------------'
  47. docker push $registry_url/${remote_image}
  48. echo '-----------image pushed-------------'
  49. fi
  50. else
  51. echo 'None of the Environment'
  52. fi
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注