• docker 的使用必要性求建议 at 2017年11月26日

    这倒是一个很好的建议! 我之前没有想到,基于这组基础镜像写dockerfile

  • docker 的使用必要性求建议 at 2017年11月25日

    谢谢。我也知道dockerfile绝对是更好的方式,但是我们这种好像没办法用dockerfile来搞。因为没办法去制作单独的容器镜像,只能通过ambari界面化的ui部署工具,一体化地部署一堆组件,让ambari去处理各个组件之间的依赖关系。。。也考虑到commit的方式会让容器的体积越发庞大,所以我们只能基于此制定了一套镜像升级规范来约束镜像升级操作

  • docker 的使用必要性求建议 at 2017年11月24日

    我最近也用docker将我们整个大数据环境迁移到了docker容器里。不过我不是将每个服务制作成一个镜像,然后去用k8s编排。主要是因为大数据的服务组件实在太多,而大数据有自身的部署工具ambari,我是借助了ambari,先启用一堆基础容器(debian),利用ambari在这些容器内部署各个大数据组件,然后将各个容器commit成镜像,出来一套容器镜像套件。然后用了Swarm去做容器跨主机的调度,监控用的是Rancher。这些工作都是一个人在搞,不知道飞哥能不能给我这种方式一些点评和指导。

    目前整个集群也是支持多环境的并行,利用的是swarm的label来区分不同环境。各个环境利用docker的跨主机通信机制,搭建自己的私有overlay网络。

  • 支持李赫😀

  • 看了眼git,if else嵌套感觉多了点。。

  • 问一下楼主,我现在用的应该还是jenkins1.0,也可以通过在一个job配置里添加”构建后操作”,来触发下一个job的执行,同时可以创建pipeline视图来查看多个job的组织拓扑。请问使用效果上跟2.0的pipeline as code有什么区别?

  • 最近刚好在学习docker,楼主,貌似bridge模式下是可以给容器分配固定ip的,只要自己创建私有网络,不要用默认的docker0。另外楼主说的none模式,让跨宿主机的网络互联,这个后续要好好实践下,我们现在都是把服务全部部在一台宿主机上。

  • def screenshot_error(param,*args,**kwargs):
        def decorate(func):
            def _screenshot_error(self,*args,**kwargs):
                try:
                    func(self,*args,**kwargs)
                except Exception as e:
                    self.driver.get_screenshot_as_file("error.png")
                    raise e
            return _screenshot_error
        return decorate
    

    你这段代码第一行的def screenshot_error(param,args,kwargs) 里面的 args跟kwargs根本不会起作用的。try里面的语句func(self,*args,kwargs)用到的args和kwargs使用的是最内层的 def _screenshot_error(self,*args,*kwargs)里定义的参数。

    我知道装饰器是可以带自身参数,你可以把你的代码改成:

    def screenshot_error(param, *ag, **kw):
        def decorate(func):
            @functools.wraps(func)
            def wrapper(self,*args,**kwargs):
                try:
                    func(self,*args,**kwargs)
                except Exception as e:
                    self.driver.get_screenshot_as_file("error.png")
                    raise e
            return wrapper
        return decorate
    

    然而楼主的问题不在于要多加一层

  • bridge? not briage

  • 你首先要想一下为什么要使用代理模式,它的使用场景是什么。通过这种代理,你可以在invoke方法中除了调用原方法外,可以再插入其它的操作,比如记录时间、日志,在方法调用前后检查端口、数据库等等,是一种面向切面的思想,类似python中的装饰器。当很多个方法有这些共有的操作的时候,你可以将方法抽象出来,然后将这些操作都放入invoke方法中,通过代理可以让多个被代理的方法都有同样的操作。

一枚爱写代码的测试工程师。