前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在你的浏览器中构建和共享开发人员环境

在你的浏览器中构建和共享开发人员环境

作者头像
厚厚墩儿
发布2018-01-15 10:34:15
4.4K0
发布2018-01-15 10:34:15

近年来,我们看到了技术的惊人进步,这些进步旨在简化开发人员的生活。即使针对创建,配置和共享开发人员环境有出色的解决方案,但仍然可能会非常混乱。Vagrant + VirtualBox解决方案使开发人员环境的虚拟化变得简单,而且几乎没有麻烦,与此同时,Docker的出现极大地影响了IT世界。

在一个独立的容器中拥有一个预配置环境,这个想法吸引了全球领先的技术公司和数百万用户。然而,上述方法仍然需要用户下载软件、图像,以及管理桌面。我们在Codenvy上更进了一步。如何点击一个按钮,并在一个预先配置的开发环境找到自己,动动手指就可以让IDE拥有丰富的编辑工具和项目资源?如何在本地开发,但在云中编译和运行项目?好的,第一件事情是首要的。

将桌面连接到云

Codenvy已经发布了CLI工具,该工具可以从桌面管理远程的Codenvy工作区。首先,这是触发远程编译和运行进程的能力。你可以使用便宜的笔记本电脑来编译和运行需要JDK 7,Maven和Mongo的复杂Java项目,来访问开发运行日志或查看正在运行的应用程序。Codenvy工作区中的每项服务都是一种RESTful服务,就像“在外面”暴露使用。CLI要求用特定的API方法来调用云中的对应进程。简而言之,你甚至可能无法打开您的远程Codenvy工作区来使用云IDE。让你享受最喜爱的本地IDE的同时消费云资源。

你可能还想在Web端和本地客户端之间同步您的项目。简而言之,先离线处理项目,然后将更改推回到远程Codenvy工作区是可能的,反之亦然,如果是先在云中处理项目,则在本地执行更改。这使得使用Codenvy与桌面IDE非常方便。一般工作流程可能如下所示:

拉一个项目>在本地IDE中进行更改>将更改推回到云>触发远程编译或运行

将你的桌面与云结合使用,而不是代替你的桌面。如果你是Eclipse爱好者,你可能想看看 Codenvy Eclipse Plugin

任何环境。任何语言

好吧,几乎任何可以在Linux上安装和运行的东西,都可以在Codenvy中安装和运行。Docker给了我们这个能力。Codenvy提供了20多个预先准备好的,可以使用的环境(此外,所有的基础镜像总是在Docker缓存中,所以你不需要等待基本镜像的拖动)。是的,拥有Codenvy工作空间的真正能力是能够构建自己的Docker镜像,也就是你自己定义环境,而无需安装Docker。这已经呈现给你了。必要的时候,用户可以根据需要构建自定义的配置或多个Docker文件。运行菜单选项使得选择要加载的运行时系统变得可能。在Codenvy中构建Dockerfile与在本地构建Dockerfile没有区别——都是相同的指令,相同的规则,相同的输出。还有几个特定的Codenvy功能,如项目源注入到映像。以下是基于预先安装了JDK7的映像创建Grails环境的示例:

代码语言:javascript
复制
从codenvy / jdk7
#下载Grails发行版,将其解压到/ home / user / $ GRAILS_HOME
RUN wget -q -P / home / user / http://dist.springframework.org.s3.amazonaws.com/release/GRAILS/grails-2.4.4.zip && \
  unzip -q /home/user/grails-2.4.4.zip -d / home / user / && rm -rf /home/user/grails-2.4.4.zip
#设置env变量并将它们导出到.bashrc
ENV GRAILS_HOME /home/user/grails-2.4.4
RUN echo'export GRAILS_HOME = $ GRAILS_HOME'>> /home/user/.bashrc
ENV PATH $ GRAILS_HOME / bin:$ PATH
RUN echo“export PATH = $ PATH”>> /home/user/.bashrc
#将您的应用程序源添加到Docker镜像
运行mkdir / home / user / app
ADD $ app $ / home / user / app /

就是这样。添加了附加源代码后,你可以执行grails命令,打包应用程序并使用servlet容器部署工件(你可以下载Tomcat或使用我们的基本映像中最常用的servlet容器安装)。这很简单。当然,你将需要花更多的时间来构建一个更复杂的环境,理想情况下,当你完成后,你就在本地建立了一个映像,把这个映像推送到Docker Hub,并在Codenvy中将其作为基础映像,这样生成的Dockerfile只包含3条指令:FROM,ADD和CMD(实际上,必要时你可以在基础映像中指定CMD,并在Dockerfile中覆盖它)。

这是构建自定义环境的一种方式——即使用Codenvy基础映像并在其上安装东西。如果你想拥有一个你很熟悉的环境,这个方法就行得通,因为这是你建立的。否则,你可以直接前往DockerHub,在那里找到一个合适的映像(花费一些时间选择最好的映像),并将其用作自定义配置中的基础映像。幸运的是,有许多官方的映像是轻量级的,没有不必要的软件和工具。你可以为相同的应用程序创建多个配置,例如一个用于编译和运行,另一个用于PaaS部署。是的,自定义的运行时系统可以充当应用程序的部署环境。你只需安装所选的PaaS提供方的CLI或SDK,并使用CLI命令部署应用程序。

Docker使Codenvy运行变得灵活,并且移除了和运行“内容”与特性有关的所有限制。缺少PHP模块吗?没问题,安装它。在默认环境中缺少Ruby gem吗?自己添加!这是你的项目和环境。所以,每次用户点击运行按钮,Docker脚本都会被执行。这仅仅是Dockerfile的使用问题 -——不管是Codenvy还是你自己的项目。

共享开发人员环境

要是只有这个标题,我们不会做出太大的反应。Docker和Vagrant + VirtualBox的目标是使共享开发人员环境变得简单。你分享一个映像或映像加Vagrantfile,别人通过运行一些命令来下载这些资源。

记住,我们答应了详细地阐述通过点击就能共享和使用开发者环境?这不仅仅是一个营销噱头。想象一下,你已经为你的Grails项目构建自定义的运行时系统,并希望其他人使用它。针对这个问题来说,邀请别人到你的工作区不是一个解决办法,尤其是如果你并不认识他们中的任何一个。这样说吧,你想将你的项目分享给博客粉丝。在Codenvy中有一个创建项目克隆的机制,我们称之为Factories。你的项目,包括自定义的环境(自定义的Docker文件)和设置将被编码到一个可与其他人共享的URL上。它可以只是一个URL,或是一个友好的按钮,这个按钮可以由系统提供,也可以带有你的标志。最有趣的是另一个用户点击这个URL的瞬间。这个按钮是这样的,通过点击它,就能看到我想在这个场景之后解释的事情。

调用一系列REST API方法后,系统获取创建临时工作区的请求,并将该项目克隆到工作区中。如上所述,项目克隆了所有的元数据和自定义环境。最后,您将获得具有相同设置和环境的源项目副本。这个项目的源文件可以编辑,并且该项目也可以编译和运行。用户也可以使用环境,即编辑现有的Docker文件或创建自己的Docker文件。原来的项目和工作空间依然没有受到影响,并且临时工作空间在几个小时内就被清除了。用户可以将项目保存到持续的Codenvy帐户中,或者注册并持续使用项目。好处是什么?好吧,通过发布这样一个Factory按钮,取代了编写关于“如何试用一个特定框架”的冗长指导和教程的工作。你所有的用户需要的是一个浏览器。不需要下载,不需要安装,不用设置环境变量。

一个项目,复杂的环境,简单解决方案

例如,虽然上述PetClinic项目的预准备不会很多,但用户需要安装JDK,Gradle和Eclipse(或任何其他的IDE)。点击Factory按钮后,用户可以在10秒内享受这样的环境,实际的速度取决于源项目的大小。那更复杂的项目呢?如果需要安装10个工具和软件,该怎么办?我们最近在GitHub上运行了https://github.com/zk/clojuredocs项目,该项目托管了源代码并为http://clojuredocs.org/运行脚本。如果要在本地运行此项目,你需要安装相当多的东西 -—— Leiningen,MongoDB,Less和Foreman。请注意,Less通过npm安装,而Foreman需要Ruby。对于尝试一个新的技术或项目来说,这不是矫枉过正吗?你需要多少时间来安装所有东西,并且真正地运行项目?如果你知道如何配置MongoDB,并安装Leiningen,而不需要经常查看他们的文档,那应该只需要1个小时。针对特定项目的环境,点击此按钮可以在其中找到自己的项目。运行该项目,打包app,在5000端口上运行:

Android工厂
Android工厂

每次单击“Factory”按钮,都会创建一个新的临时工作区。每个用户都将独立处理项目。项目和环境保持不变。有很多方法来配置一个工厂,并且施加访问和行为限制,指定加载后的动作,如在创建一个临时工作区后打开README文件,引入一个项目并引导用户完成编译和运行的过程,提供默认的运行时系统环境(这里可以有不止一个与项目相关的Docker脚本)或推荐项目所需的RAM数量。如果要使用Gradle构建Android 应用程序并在模拟器中运行它,那么这一点很重要:

Android工厂
Android工厂

或使用GAE SDK运行和部署Java GAE项目:

或者使用MongoDB:

Android工厂
Android工厂

- 你所需要的只是一个浏览器。艰难的工作已经在云端完成了。尝试新技术和项目比以前更容易。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 MongoDB
腾讯云数据库 MongoDB(TencentDB for MongoDB)是腾讯云基于全球广受欢迎的 MongoDB 打造的高性能 NoSQL 数据库,100%完全兼容 MongoDB 协议,支持跨文档事务,提供稳定丰富的监控管理,弹性可扩展、自动容灾,适用于文档型数据库场景,您无需自建灾备体系及控制管理系统。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档