1 看下项目结构,首先要有dockerfile,
FROM git.we3tu.com:5000/tomcatmaven:latest
RUN apk --update add wget
RUN mkdir -p /usr/src/app
RUN mkdir -p /usr/scripts
RUN mkdir -p /www
WORKDIR /usr/src/app
COPY . /usr/src/app
RUN unzip /usr/src/app/target/visa.war -d /opt/tomcat/webapps/ROOT
RUN cp /usr/src/app/start.sh /usr/scripts
RUN rm -rf /usr/src/app

ENTRYPOINT ["/bin/sh","/usr/scripts/start.sh"]

2 关于应用的配置文件用变量传递下载到测试环境或生产环境
vim start.sh
#! /bin/sh
wget http://$DOMAIN_ENV.config.we3tu.com/$PROJECTNAME/dev/application.properties -O /opt/tomcat/webapps/ROOT/WEB-INF/classes/dev/application.properties 测试环境配置文件路径
wget http://$DOMAIN_ENV.config.we3tu.com/$PROJECTNAME/pro/application.properties -O /opt/tomcat/webapps/ROOT/WEB-INF/classes/pro/application.properties 生产环境配置文件路径
wget http://$DOMAIN_ENV.config.we3tu.com/$PROJECTNAME/applicationContext.xml -O /opt/tomcat/webapps/ROOT/WEB-INF/classes/applicationContext.xml
/opt/tomcat/bin/catalina.sh run
3 vim .gitlab-ci.yml
stages:

  • build
  • deploy

variables:
PROJECT_NAME: visa

build_test_docker:
stage: build
script:

  • mvn package -Dmaven.test.skip=true
  • docker build -f Dockerfile -t $PROJECT_NAME .
  • docker tag $PROJECT_NAME git.we2tu.com:5000/$PROJECT_NAME:$CI_COMMIT_REF_NAME
  • docker push git.we3tu.com:5000/$PROJECT_NAME:$CI_COMMIT_REF_NAME
    tags:
  • cyjavatest
    only:
  • /^release-*/

deploy_test_docker:
stage: deploy
script:

  • docker stack deploy -c deploy/deploy.test.yml visa_service_test
    tags:
  • cyjavatest
    only:
  • /^release-*/

build_master_docker:
stage: build
script:

  • mvn clean package -Dmaven.test.skip=true
  • docker build -f Dockerfile -t $PROJECT_NAME .
  • docker tag $PROJECT_NAME git.we2tu.com:5000/$PROJECT_NAME:$CI_COMMIT_REF_NAME
  • docker tag $PROJECT_NAME git.we2tu.com:5000/$PROJECT_NAME:latest
  • docker push git.we3tu.com:5000/$PROJECT_NAME:$CI_COMMIT_REF_NAME
  • docker push git.we3tu.com:5000/$PROJECT_NAME:latest
    tags:
  • erpjavabuild
    only:
  • master

deploy_prod_docker:
stage: deploy
script:

  • docker stack deploy -c deploy/deploy.prod.yml visa_service
    tags:
  • erpprodshell
    only:
  • master
    4 部署的路径怎么部署:
    vim deploy.test.yml
    version: '3'
    services:
    visa_service_test:
    image: git.we3tu.com:5000/$PROJECT_NAME:$CI_COMMIT_REF_NAME
    environment:

    • "DOMAIN_ENV=test"
    • "PROJECTNAME=visa"
    • "QUARTZ_ENV=noquartz"
      logging:
      driver: syslog
      options:
      syslog-address: "tcp://x.x.x.x:5514"
      tag: $PROJECT_NAME
      ports:
    • 8021:8080
      deploy:
      replicas: 1
      update_config:
      parallelism: 1
      delay: 10s
      restart_policy:
      condition: any
      networks:
    • docker-cy-test
      networks:
      docker-cy-test:
      external: true

5 vim deploy.prod.yml
version: '3'
services:
visa_service:
image: git.we3tu.com:5000/$PROJECT_NAME:$CI_COMMIT_REF_NAME
environment:

  • "DOMAIN_ENV=prod"
  • "PROJECTNAME=visa"
  • "QUARTZ_ENV=noquartz"
    logging:
    driver: json-file
    ports:
  • 8021:8080
    deploy:
    replicas: 2
    update_config:
    parallelism: 1
    delay: 10s
    restart_policy:
    condition: any
    max_attempts: 10
    networks:
  • prod-net
    networks:
    prod-net:
    external: true

这里的配置中心采用nginx 的autoindex on 这个功能

写一个dockerfile: docker-compose.yml
nginx:
image: nginx
privileged: false
restart: always
ports:

  • 80:80
  • 1001:1001
  • 1002:1002
  • 1003:1003
  • 1004:1004
  • 1005:1005
  • 1006:1006
  • 1007:1007
    volumes:
  • ./data/conf.d:/etc/nginx/conf.d
  • ./data/html:/usr/share/nginx/html

转载于:https://blog.51cto.com/study2008/2173799

微服务小范围发布影响小相关推荐

  1. 基于 GateWay 和 Nacos 实现微服务架构灰度发布方案

    一.灰度发布 灰度发布(又名金丝雀发布)是指在黑与白之间,能够平滑过渡的一种发布方式.在其上可以进行A/B testing,即让一部分用户继续用产品特性A,一部分用户开始用产品特性B,如果用户对B没有 ...

  2. Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单。

    Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单. 前方: 开源地址:GitHub - cyq1162/Taurus.MVC: Taurus.mvc i ...

  3. 微服务实践:全栈小团队“洪荒之力”改造阿里服务CRM技术体系

    本文不重点介绍业务系统,更偏重于经验分享.首先进行了业务介绍,接着和大家简单分享了微服务,着重和大家讲述了微服务的实践,包括微服务技术实践.微服务团队实践.DT下的微服务. 以下为内容整理: 作为全球 ...

  4. JeecgBoot 2.4 微服务正式版发布,基于SpringBoot的低代码平台

    项目介绍 JeecgBoot 是一款基于代码生成器的低代码平台!前后端分离架构 SpringBoot2.x,SpringCloud,Ant Design&Vue,Mybatis-plus,Sh ...

  5. 11.落地:微服务架构灰度发布方案

    前置知识 1.nacos 服务注册与发现 2.本地负载均衡器算法 3.gateway 网关 4.ThreadLocal 1.什么是灰度发布? 2.什么是灰度策略? 3.灰度发布落地方案有哪些 4.灰度 ...

  6. Spring Cloud微服务版本灰度发布新神器

    项目地址:https://github.com/Nepxion/Discovery 强烈建议stra.fork该项目,该项目可以作为学习改造Spring Cloud组件的案例项目. Nepxion D ...

  7. 【使用Spring Cloud Gateway构建微服务网关】—— 每天一点小知识

    ·

  8. Game On Serverless:SAE 助力广州小迈提升微服务研发效能

    作者:洛浩 小迈于 2015 年 1 月成立,是一家致力以数字化领先为优势,实现业务高质量自增长的移动互联网科技公司.始终坚持以用户价值为中心,以数据为驱动,为用户开发丰富的工具应用.休闲游戏.益智. ...

  9. 小项目不适合微服务?别扯犊子了!

    只有不适合微服务的公司,没有不适合微服务的项目.防止孤岛应用.防止孤岛数据.聚合服务能力.节省公司资源. 1.什么是微服务 微服务是一些协同工作的小而自治的服务.服务适当的小点,让他只做好一件事就可以 ...

最新文章

  1. CleanMyMac扩展管理功能
  2. python读写文件函数_Python读写文件
  3. 用脚本实现“修复连接”的功能
  4. python序列类型-python序列类型种类详解
  5. EF Code First 学习笔记:关系(转)
  6. 一个励志PM小哥哥的Java转型之路
  7. C语言简单的练习题目——牛生牛
  8. 【Java】Java 反射 object is not an instance of declaring class
  9. 全局变量中断原子操作_操作系统导论02-06章
  10. 在Tomcat中通过JOTM支持JTA
  11. ------更快的搜索储存结构-----平衡二叉树-----------------
  12. Springboot中常用的注解
  13. Java:关于负数的向上转型
  14. 船舶远程监测系统的物联网解决方案
  15. DLNA Samba wifi等名词的初步了解
  16. 赵小楼《天道》《遥远的救世主》深度解析(36)丁元英为什么参加芮小丹组的那场文化人的饭局?
  17. 在word中,“⑩”后面的顺序符号,如圈11、圈12等如何输入?
  18. 直销银行和网上银行区别
  19. 2018年终总结(兼个人详历) | 2018 与我的技术之路
  20. 华为云发布实时音视频行业加速器,为企业解决技术与商业双重难题

热门文章

  1. Numpy生成二项分布随机数
  2. 新手探索NLP(十一)——知识图谱
  3. 21个让React 开发更高效更有趣的工具
  4. C++ multimap的用法
  5. matlab中的科学记数法变成小数形式
  6. 主流机器学习[xgb, lgb, Keras, LR]
  7. A - Supercentral Point CodeForces - 165A
  8. Java中的基本类型变量储存方式
  9. MongoDB 条件操作符
  10. centos 安装cacti监控