在上一篇中,咱們達成了安裝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