专栏首页一日一工具容器化配置生成神器

容器化配置生成神器

Derrick 简介

Derrick 是一个可以帮助开发者快速完成应用容器化的工具。Derrick 主要关注的是希望容器化的开发者如何在本地进行开发的问题。开发者可以通过使用 Derrick 加速本地应用容器化迁移的过程。

Derrick 自动生成以下配置

  • Dockerfile
  • .dockerignore
  • docker-compose.yml
  • Jenkinsfile
  • kubernetes-deployment.yaml

安装指南

依赖:

  • Docker(17.06~)
  • Python2.7~python3.6
  • docker-compose
  • minikube in local

Derrick 安装:

# 安装 derrick
$ pip install python-derrick

# 报 fatal error: Python.h: No such file or directory 错误,请安装下面包(CentOS 例子)
$ yum install -y python-devel

Derrick 支持运行平台

  • Linux
  • mac
  • windows

演示

# 下载 derrick-nodejs-demo node 项目
$ git clone https://github.com/ringtail/derrick-nodejs-demo

# 选择需要部署的平台,支持 Kubernetes 和 Swarm
# 因机器上没有安装 Kubernetes,这里选择 Swarm
$ derrick config

? Which Orchestration Engine would you like to choose?  Swarm

# 运行 Derrick
$ derrick init

? Please input image name with tag (such as "registry.com/user/repo:tag"):  yangpeng2468/test:v3

Derrick detect your platform is NodeJs and compile successfully.

# 查看生成的配置
$ git status

# 位于分支 master
# 未跟踪的文件:
#   (使用 "git add <file>..." 以包含要提交的内容)
#
#	.dockerignore
#	Dockerfile
#	Jenkinsfile
#	derrick_conf
#	docker-compose.yml
#	kubernetes-deployment.yaml
提交为空,但是存在尚未跟踪的文件(使用 "git add" 建立跟踪)
# 本地验证容器化结果 
$ derrick up

Swarm is the default Orchestration Engine.
Creating network "derrick-nodejs-demo_default" with the default driver
Building web
Step 1/14 : FROM node:8-alpine AS base
 ---> 26881633664e
Step 2/14 : WORKDIR /app
 ---> Running in 2d1bf9d12f4f
Removing intermediate container 2d1bf9d12f4f
 ---> b123be5925b6
Step 3/14 : COPY package.json .
 ---> ba2c32fa8283
Step 4/14 : RUN npm set progress=false && npm config set depth 0
 ---> Running in 3f20024fd462
Removing intermediate container 3f20024fd462
 ---> f100fe6b5639
Step 5/14 : RUN npm install --only=production --registry=https://registry.npm.taobao.org
 ---> Running in 44660d8e2f98
npm WARN deprecated json3@3.3.2: Please use the native JSON object instead of JSON 3

> ejs@2.7.4 postinstall /app/node_modules/ejs
> node ./postinstall.js

Thank you for installing EJS: built with the Jake JavaScript build tool (https://jakejs.com/)

npm notice created a lockfile as package-lock.json. You should commit this file.
added 59 packages from 43 contributors in 2.481s
Removing intermediate container 44660d8e2f98
 ---> 950daf993e48
Step 6/14 : RUN cp -R node_modules prod_node_modules
 ---> Running in c306e49790f3
Removing intermediate container c306e49790f3
 ---> 822c75e9a625
Step 7/14 : RUN npm install --registry=https://registry.npm.taobao.org
 ---> Running in d0c4ee623cd0
added 34 packages from 291 contributors in 4.053s
Removing intermediate container d0c4ee623cd0
 ---> 2fdc9f38bb35
Step 8/14 : FROM base As test
 ---> 2fdc9f38bb35
Step 9/14 : COPY . /app
 ---> aa81f12f20c1
Step 10/14 : RUN npm test
 ---> Running in 5202ce0a6f9d

> derrick-nodejs-generator@0.0.0 test /app
> node_modules/mocha/bin/mocha



  Array
    #indexOf()
      ✓ should return -1 when the value is not present


  1 passing (6ms)

Removing intermediate container 5202ce0a6f9d
 ---> 9ea003d029a4
Step 11/14 : FROM base AS release
 ---> 2fdc9f38bb35
Step 12/14 : COPY --from=base /app/prod_node_modules /app/node_modules
 ---> 74e76976eb8f
Step 13/14 : COPY . /app
 ---> 9fd22d80079a
Step 14/14 : CMD ["npm","start"]
 ---> Running in 18a736e9b63f
Removing intermediate container 18a736e9b63f
 ---> 1e9cda2d6697
Successfully built 1e9cda2d6697
Successfully tagged yangpeng2468/test:v3
Creating derrick-nodejs-demo_web_1 ... done
Your application has been up to running! You can run `docker ps` to get exposed ports.
# 查看运行容器

$ docker-compose ps

          Name                         Command               State            Ports
--------------------------------------------------------------------------------------------
derrick-nodejs-demo_web_1   docker-entrypoint.sh npm start   Up      0.0.0.0:32769->3000/tcp

浏览器访问 172.17.0.6:32769,展示如下页面

查看生成的配置

# 查看 k8s deployment 配置
$ cat kubernetes-deployment.yaml
---
apiVersion: v1
kind: Service
metadata:
  annotations:
    derrick.service.type: nodeport
    derrick.version: 0.0.24
  labels:
    derrick.service: derrick-nodejs-demo
  name: derrick-nodejs-demo
spec:
  ports:
  - name: "3000"
    port: 3000
    targetPort: 3000
  selector:
    derrick.service: derrick-nodejs-demo
  type: NodePort
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  annotations:
    derrick.version: 0.0.24
  labels:
    derrick.service: derrick-nodejs-demo
  name: derrick-nodejs-demo
spec:
  replicas: 1
  template:
    metadata:
      labels:
        derrick.service: derrick-nodejs-demo
    spec:
      containers:
      - image: yangpeng2468/test:v3
        name: web
        ports:
        - containerPort: 3000
# 查看 jenkinsfile配置
$ cat Jenkinsfile
pipeline {
   environment {
     REGISTRY_ENDPOINT = "https://yangpeng2468/v2/"
     IMAGE_WITH_TAG = "yangpeng2468/test:v3"
     REGISTRY_CERTS = "registry"
   }
  agent {
    node {
      label 'nodejs'
    }

  }
  stages {
    stage('Build') {
      steps {
        sh 'npm install --registry=https://registry.npm.taobao.org'
      }
    }
    stage('Test') {
      steps {
        sh 'npm test '
      }
    }
    stage('Code Quality') {
      steps {
        script {
          try{
            checkstyle canComputeNew: false, defaultEncoding: '', healthy: '', pattern: '', unHealthy: ''
          }catch(e){
            echo e
          }
        }

      }
    }
    stage('Image Build&Publish') {
      steps {
        echo 'Build Images'
        script {
          docker.withRegistry("${REGISTRY_ENDPOINT}", "${REGISTRY_CERTS}") {
            sh 'docker build -t ${IMAGE_WITH_TAG} .'
            sh 'docker push ${IMAGE_WITH_TAG}'
          }
        }

      }
    }
  }
  triggers {
    pollSCM('* * * * *')
  }
}

项目地址

  • https://github.com/alibaba/derrick

本文分享自微信公众号 - 追马Linux(zhuima_k8s)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-07-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 容器化配置生成神器

    Derrick 是一个可以帮助开发者快速完成应用容器化的工具。Derrick 主要关注的是希望容器化的开发者如何在本地进行开发的问题。开发者可以通过使用 Der...

    山月
  • 容器化配置生成神器

    Derrick 是一个可以帮助开发者快速完成应用容器化的工具。Derrick 主要关注的是希望容器化的开发者如何在本地进行开发的问题。开发者可以通过使用 Der...

    YP小站
  • Nginx 配置生成神器

    YP小站
  • 强大!Nginx 配置在线一键生成“神器”

    Nginx作为一个轻量级的HTTP服务器,相比Apache优势也是比较明显的,在性能上它占用资源少,能支持更高更多的并发连接,从而达到提高访问效率;在功能上它是...

    民工哥
  • 容器化生产环境集成apollo配置中心与skywalking全链路追踪

    3.制作apollo-skywalking-docker-image镜像注意sk-plugin选择

    千里行走
  • 容器与云|使用 Ansible 配置 Podman 容器

    在复杂的IT基础设施中,有许多重复性任务。成功运行这些任务并不容易。运行失败大多数是人为错误引发。在Ansible帮助下,你可以通过远程主机来执行所有任务,这些...

    用户8710643
  • Spring Boot Server容器配置

    参数配置容器 server.xx开头的是所有servlet容器通用的配置,server.tomcat.xx开头的是tomcat特有的参数,其它类似。 所有参数绑...

    Java技术栈
  • grafana&prometheus生产级容器化监控-1:生产级容器化

    prometheus是时序数据库,相比传统数据库更适合存储监控类数据;是一套开源的系统监控报警框架。它启发于 Google 的 borgmon 监控系统;同时也...

    Criss@陈磊
  • grafana&prometheus生产级容器化监控-1:生产级容器化

    prometheus是时序数据库,相比传统数据库更适合存储监控类数据;是一套开源的系统监控报警框架。它启发于 Google 的 borgmon 监控系统;同时也...

    千里行走
  • 开发神器Vim配置

    1.在用户根目录建立文件.vimrc【点击下载完整.vimrc】 “.vimrc文件内容如下 set hlsearch                  “高亮...

    苦咖啡
  • 推荐一个 Nginx 可视化配置神器

    Nginx 是前后端开发工程师必须掌握的神器。该神器有很多使用场景,比如反向代理、负载均衡、动静分离、跨域等等。

    程序员追风
  • 字典生成神器Crunch

    Crunch是一种自定义创建密码字典工具,按照指定的规则生成密码字典,可以针对性的生成字典文件,这在渗透测试过程中就特别有用,用来社工和进行暴力破解攻击其效果尤...

    轩辕小子
  • MyBatis-19MyBatis代码生成器-XML配置详解

    这个文件头中的mybatis-generator-config_1_0.dtd用于定义该配置文件中所有标签和属性的用法及限制。

    小小工匠
  • 配置嵌入式Servlet容器

    用户1112962
  • Docker容器端口配置 原

    上面的-p 80,将在docker主机上随机打开一个端口(可利用docker port命令查看,或者docker ps也能看到,这里是32768)映射到容器中的...

    拓荒者
  • Spring Boot-4.servlet容器配置

    Spring Boot默认Tomcat为Servlet容器,以Tomcat为例进行说明,Tomcat,Jetty,Undertow都是通用的。

    悠扬前奏
  • 容器化系列 - Zookeeper启动和配置 on Docker

    3个zookeeper服务器容器将以swarm的复制模式启动 。端口2181-2183将对外暴露。

    羽客
  • 容器化系列 - GitLab启动和配置 on Docker

    注意:如果要使用宿主机的22和443端口,需要修改宿主机的ssh和https的默认端口。例如修改ssh端口为1022

    羽客
  • 详解:PHP加速器配置神器opcache

    当解释器完成对脚本代码的分析后,便将它们生成可以直接运行的中间代码,也称为操作码(Operate Code,opcode)。Opcode cache的目地是避免...

    用户4988085

扫码关注云+社区

领取腾讯云代金券