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

在您的浏览器中构建和共享开发者环境

作者头像
Techeek
发布2018-01-12 15:04:25
1.8K0
发布2018-01-12 15:04:25
举报
文章被收录于专栏:云计算

近年来,我们见证了旨在简化开发者生活的技术的惊人进步。即使有出色的解决方案,创建、配置和共享开发者环境可能是一件非常令人头疼的事。Vagrant + VirtualBox解决方案使开发者环境的虚拟化变得简单,而Docker的出现则极大地影响了IT世界。

在一个孤立的容器中搭载一个预配置环境的想法吸引了全球领先的技术公司和数百万用户。然而,上述方法仍然需要用户下载软件和镜像,以及管理桌面。而我们在Codenvy中则已经有更为先进的方式。只需点击一个按钮,就能身处于在一个预先配置的开发环境中,而且IDE中丰富的编辑工具和项目资源尽在指尖,是不是很不错呢?在本地开发,但在云中构建和运行项目,又是怎样的一种体验呢?好的,我们一点一点来说吧。

将桌面连接到云

Codenvy已经发布了其CLI(命令行)工具,可以从您的本地桌面管理远程Codenvy工作空间。首先,这是一个触发远程构建和运行进程的能力。您可以使用一台便宜的笔记本电脑来构建和运行依赖JDK 7,Maven和Mongo的复杂Java项目,访问构建和运行日志或是查看正在运行的应用程序。Codenvy工作区中的每项服务都是RESTful风格,可以直接从“外部”使用。CLI调用特定的API方法来调用云中的特定进程。简而言之,您甚至不用打开您的远程Codenvy工作区即可使用云IDE,享受最喜爱的本地IDE的同时就能消费云资源。

您可能还想在Web端和本地客户端之间同步您的项目。简而言之,离线处理项目然后将更改推送(push)回远程Codenvy工作区,或是在云端工作然后在本地拉取(pull)更改。这使得Codenvy与桌面IDE的协同工作非常方便。一般工作流程可能如下所示:

拉取一个项目>在本地IDE中进行更改>将更改推送回云端>触发远程构建或运行

使用云搭配您的桌面,而不是取代它。如果你是Eclipse爱好者,你可能想看看 Codenvy Eclipse Plugin

任何环境,任何语言

好吧,差不多任何可以在Linux上安装和运行的东西都可以在Codenvy中安装和运行。Docker给了我们这个能力。Codenvy提供了20多个预配置环境(而且,所有的基本镜像总是在Docker缓存中,所以你不需要等待基本镜像的拉取)。是的,Codenvy工作空间的真正力量是构建您自己的Docker镜像的能力,也就是您自己的自定义开发环境——而无需安装Docker。它已经为您准备好了。用户可以构建自己的配置方式,或者如果有必要的话,使用多个Dockerfile。运行菜单选项可以选择需要加载的运行时环境。在Codenvy中构建Dockerfile与在本地构建Dockerfile没有什么区别 - 相同的指令,相同的规则,相同的输出。有几个Codenvy特定的功能,如注入项目源到图像。这里有一个基于预安装JDK7的镜像搭建Grails环境的例子:

代码语言:docker
复制
FROM 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
#配置环境变量并将它们导出到.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镜像
RUN 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)。您的项目、其自定义环境(自定义Dockerfiles)以及配置,将被编码成一个可与其他人共享的短网址。它可以只是一个URL或一个不错的按钮,默认的或是您自己的logo。最有趣的是另一个用户点击这个URL的时刻。下面就是一个这样的按钮。点击它,然后我会解释幕后发生的事情。

首先是一系列REST API方法被调用。然后系统获取创建临时工作区的请求,并将该项目克隆到工作空间中。正如之前提到的,项目克隆了所有的元数据和自定义环境。最后,您将获得具有相同设置和环境的源项目副本。这个项目的源文件可以编辑,项目也可以构建和运行。用户也可以更改环境,即编辑现有的Docker文件或创建自己的配置。原来的项目和工作空间依然不会受到影响,而临时工作空间在几个小时内就被销毁了。用户可以将项目保存到其持有的Codenvy帐户中,或者注册并跟进项目。好处是什么?那就是,不用写一个关于“如何试用一个特定框架”的长篇指南和教程,而只用发布这样一个Factory按钮。你的用户只需要一个浏览器。不用下载。不用安装。也不用设置环境偏好。

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

例如,上述PetClinic项目的预先需求不会很多,但仍然有用户需要预装JDK,Gradle和Eclipse(或任何其他IDE)。点击Factory按钮后,用户就可以在10秒内享受到这样的环境,这取决于源项目的大小。更复杂的项目呢?如果需要安装10个或者更多工具和软件,该怎么办?我们最近在GitHub上接触了clojuredocs这个项目,该项目为http://clojuredocs.org/托管代码并运行脚本。要在本地运行此项目,您需要安装相当多的东西 - Leiningen,MongoDB,Less以及Foreman。请注意,Less是通过npm安装的,而Foreman是一个Ruby gem包。通过这种方式尝试一个新的技术和/或项目不是一个矫枉过正的事情吗?你需要多少时间来安装所有这些东西,从而真正地运行项目?如果你知道如何配置MongoDB以安装Leiningen,而且不需要经常翻阅他们的文档,那应该需要1个小时。点击下面这个按钮,就能身处于专门为这个特定项目建立的环境中。运行该项目,打包应用程序,然后在5000端口上运行:

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

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

或者玩玩MongoDB:

——你所需要的一切只是一个浏览器。繁重的工作都能在云端完成。试验新技术和项目将会前所未有地容易。

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