k8s那点事儿Docker容器「中级篇」docker践行devOps理念

『中级篇』docker之CI/CD持续集成-CD演示(74)

2018-09-27  本文已影响34人  IT人故事会

原创文章,欢迎转载。转载请注明:转载自IT人故事会,谢谢!
原文链接地址:『中级篇』docker之CI/CD持续集成-CD演示(74)

这次主要看下CICD中的CD功能。源码:https://github.com/limingios/docker/tree/master/No.11

从gitlab中flask-demo下载代码到本地。

通过git clone 克隆到本地

修改.gitlab-ci.yml 增加部署代码

stages:
  - style
  - test
  - deploy

pep8:
  stage: style
  script:
    - pip install tox
    - tox -e pep8
  tags:
    - python2.7
    
unittest-py27:
   stage: test
   script:
     - pip install tox
     - tox -e py27
   tags:
     - python2.7

unittest-py34:
   stage: test
   script:
     - pip install tox
     - tox -e py34
   tags:
     - python3/4
     
docker-deploy:
   stage: deploy
   script:
     - docker build -t flask-demo .
     - docker run -d -p 5000:5000 flask-demo
   tags:
     - demo

想想一下场景

gitlab-ci.yml是否有问题,假如有人修改代码,提交代码,重新CICD的时候

#执行这句没问题
docker build -t flask-demo .

#执行这句就有问题了,之前已经有一个了之前的端口号就是5000,部署肯定报错的,解决方案,可以先将之前的remove掉,在起一个新的。可以写一些简单的脚本。
docker run -d -p 5000:5000 flask-demo
 sudo docker ps
sudo docker rm -f 容器名称

.gitlab-ci.yml 然后commit push到服务器上

stages:
  - style
  - test
  - deploy

pep8:
  stage: style
  script:
    - pip install tox
    - tox -e pep8
  tags:
    - python2.7
    
unittest-py27:
   stage: test
   script:
     - pip install tox
     - tox -e py27
   tags:
     - python2.7

unittest-py34:
   stage: test
   script:
     - pip install tox
     - tox -e py34
   tags:
     - python3/4
     
docker-deploy:
   stage: deploy
   script:
     - docker build -t flask-demo .
     - if [ $( docker ps -aq --filter name=web) ]; then docker rm -f web;fi
     - docker run -d -p 5000:5000 --name web flask-demo
   tags:
     - test1

PS:基本的流程就是开发人员提交代码,自动构建,然后可以在ci服务器上访问,整个流程基本就是这样。


往期精彩
  1. docker导学(一)
  2. 容器的技术概述(二)
  3. docker的魅力初体验-5分钟安装wordpress不走弯路(三)
  4. docker官网介绍(四)
  5. 如何在mac上安装docker(五)
  6. 如何在window上安装docker(六)
  7. 如何在mac上通过vagrant安装虚拟机(七)
  8. 如何在window上通过vagrant安装虚拟机(八)
  9. docker-Machine的本地使用(九)
  10. docker-Machine的本地使用(十)
  11. 在linux/mac下通过Docker-Machine在阿里云上的使用(11)
  12. docker架构和底层技术(12)
  13. docker Image概述(13)
  14. 手动建立一个base Image(14)
  15. 什么是Container(15)
  16. 构建自己的Docker镜像(16)
  17. Dockerfile详解(17)
  18. 镜像的发布(18)
  19. Dockerfile实战(19)
  20. 容器的操作(20)
  21. Dockerfile实战CMD和ENTRTYPOINT的配合(21)
  22. 容器的资源限制(22)
  23. docker网络(23)
  24. docker学习必会网络基础(24)
  25. Linux网络命名空间(25)
  26. Docker Bridge详解(26)
  27. 容器之间的Link(27)
  28. 容器的端口映射(28)
  29. 容器网络之host和none(29)
  30. 多容器复杂应用的部署(30)
  31. overlay网络和etcd实现多机的容器通信(31)
  32. docker的数据持久化存储和数据共享(32)
  33. windows下vagrant 通过SecureCRT连接centos7(33)
  34. 数据持久化之Data Volume(34)
  35. 数据持久化之bind Mounting(35)
  36. docker 使用bind Mounting实战(36)
  37. docker容器安装wordpress(37)
  38. docker Compose到底是什么(38)
  39. Docker Compose的安装和基本使用(39)
  40. Docker 水平扩展和负载均衡(40)
  41. Docker compose 部署一个复杂的应用(41)
  42. 容器编排Docker Swarm介绍(42)
  43. docker-swarm创建一个多节点集群(43)
  44. play with docker 的使用(44)
  45. docker-swarm中的Service创建维护和水平扩展(45)
  46. 在docker-swarm集群里通过serivce部署wordpress(46)
  47. 集群服务间通信之RoutingMesh(47)
  48. RoutingMesh之Ingress负载均衡(48)
  49. Docker-Stack部署wordpress(49)
  50. Docker-Stack部署投票应用(50)
  51. Docker-Secret管理和使用(51)
  52. Docker service更新(52)
  53. Docker的收费模式(53)
  54. Docker-cloud介绍(54)
  55. Docker Cloud自动构建 Docker image(55)
  56. Docker企业版的在线免费体验(56)
  57. docker企业版本地安装之UCP(57)
  58. docker体验阿里云的容器服务(58)
  59. 阿里云安装Docker企业版UCP和DTR(59)
  60. Kubenetes简介(60)
  61. Minikube快速搭建K8S单节点环境(61)
  62. K8S最小调度单位Pod(62)
  63. K8S横向扩展功能ReplicaSet和ReplicationController(63)
  64. k8s重要的Deployment(64)
  65. Vagrant在本地搭建多节点K8S集群(65)
  66. k8s基础网络Cluster Network(66)
  67. k8s的Service简介和演示(67)
  68. k8s的NodePort类型Service以及Label的简单实用(68)
  69. CI/CD持续集成/持续部署(69)
  70. docker之CI/CD持续集成-gitlab安装(70)
  71. docker之CI/CD持续集成—GitLab CI服务器(71)
  72. docker之CI/CD持续集成—真实Python项目的CI演示(72)
  73. docker之CI/CD持续集成—真实JAVA-Maven项目的CI演示(73)
上一篇 下一篇

猜你喜欢

热点阅读