在上一篇中,咱们达成了安装Eclipse和定义自定义指令等。虽然这一切很好,但咱们但愿这个工做是可扩展的,也就是说能够和咱们的朋友或者同事分享这个环境。幸运的是,这个能够经过在che里面定义一个Stack
来实现。Stack某种意义上像一个workspace的蓝图。若是你熟悉面向对象技术的话,stack能够比喻为一个java类,而一个类的实例被称为workspace。Che的Dashboard UI支持stack的定义。咱们不须要本身写代码来完成这个工做。技术上说,一个Che的stack基于一或多个Docker文件。若是咱们想提供一个实现装好Eclipse modeling Edition
的stack,咱们须要提供一个实际包含这个stack的docker image。java
不管什么时候,若是你想建立本身的docker image做为Stack的话,最好是使用一个Che的image做为你的base。这样,你不须要维护一些如Java之类的先决条件。在咱们的例子中,咱们将使用Java stack的base image。这里是咱们使用的Docker文件,如你所见它很小。咱们加了一些注释,使其可让人理解。linux
FROM codenvy/ubuntu_jdk8 MAINTAINER Mathias Hansen mhansen@eclipsesource.com USER root # Install Eclipse Modeling Tools RUN echo "Installing eclipse..." cd / wget -q -O - https://ftp.fau.de/eclipse/technology/epp/downloads/release/neon/1/eclipse-modeling-neon-1-linux-gtk-x86_64.tar.gz | tar zx # Reset to the default user USER user
在你写完这段dockerfile以后,你须要build它。使用以下指令:docker
docker build -t eclipsesource/emfneon_jdk8
最后,你能够将你的新image推送进注册表或者储存库,好比Docker Hub
。如今咱们能够根据新的Docker镜像设置Che stack。经过Che的UI里面的按键添加新的stack。以下图编程
如你所见,你能够给你的Stack命一个以后方便寻找的名字,定义你想启动的machine(好比default)以及要使用的docker镜像。除此以外,你能够添加命令(好比上一篇的Run EMF Code Generator
)。最后,选择罗列Stack的目录。若是你滑到屏幕低端,你能够用json格式编辑你的Stack的配置。若是,你想将你的Stack的配置分享给好友的话,能够复制发送就好了。咱们EMF stack的Json文件以下,你能够复制进去试试看。json
{ "name": "EMF", "description": "EMF Stack", "scope": "advanced", "tags": [ "Java 1.8", "EMF" ], "components": [ { "name": "Eclipse Modeling Edition", "version": "Neon.2" } ], "source": { "type": "image", "origin": "codenvy/ubuntu_jdk8" }, "workspaceConfig": { "environments": { "EMF": { "machines": { "dev-machine": { "agents": [ "org.eclipse.che.terminal", "org.eclipse.che.ws-agent", "org.eclipse.che.ssh" ], "servers": {}, "attributes": { "memoryLimitBytes": "2147483648" } }, "EMF": { "agents": [ "org.eclipse.che.terminal", "org.eclipse.che.ssh" ], "servers": {}, "attributes": {} } }, "recipe": { "content": "services:\n dev-machine:\n image: codenvy/ubuntu_jdk8\n EMF:\n image: eclipsesource/emfneon_jdk8\n mem_limit: 2147483648\n", "contentType": "application/x-yaml", "type": "compose" } } }, "name": "default", "defaultEnv": "EMF", "description": null, "commands": [ { "name": "Run EMF Code Generator", "type": "custom", "commandLine": "/eclipse/eclipse -noSplash -data ${current.project.path} -application org.eclipse.emf.codegen.ecore.Generator -model -edit ${current.project.path}/org.eclipse.emf.ecp.makeithappen.model/model/task.genmodel ", "attributes": {} } ] } }
如今,咱们就能够和其余的编程者共享咱们的开发环境了。咱们的工具已经捆绑进了一个Che的工做空间。你惟一须要的就是一个json文件。ubuntu
将Tooling装进Che的workspace是很简单的,利用强大又轻巧的扩展机制。基本上,每个在Docker容器里面能够运行的工具均可以使用。经过这个咱们能够扩展Che而不须要任何代码。可是,这里咱们除了添加命令,尚未扩展过IDE。这将在下一篇中介绍。app