GitPod与Eclipse/Che的使用差异点
簡言之
-
開発をコンテナ 1 個で軽量に行いたいなら GitPod
- 開発をコンテナ 1 個で軽量に行いたいなら GitPod
- バックエンド DB など複数コンテナが要るなら Eclipse/Che。1
两者的差异为了那些不满意仅含有结论的人们的,我只需要一个选项。
不违反的地方两者都将Eclipse/Theia作为IDE或编辑器UI,并在容器虚拟化环境中运行。虽然GitPod与GitHub的兼容性更好,但通过使用Che与VSCode的插件共用,也可以在IDE内管理拉取请求等。
以前,人们经常提到 GitPod 不是开源软件,这被视为一个负面因素。但现在 GitPod 已经开源化了,所以在这方面也没有差异了。
也许可以这样说,也不能完全排除似乎无所谓的感觉。在思想上存在差异。而这体现得最明显的是容器的数量。
在启动设置文件中查看的差异让我们来看一下GitPod的启动配置文件。通常会在.gitpod.yml文件中进行定义。
# The Docker image to run your workspace in. Defaults to gitpod/workspace-full
image: <your-workspace-image>
# Command to start on workspace startup (optional)
tasks:
- init: yarn install
command: yarn build
# Ports to expose on workspace startup (optional)
ports:
- port: 8000
onOpen: open-preview
# The Docker image to run your workspace in. Defaults to gitpod/workspace-full
image: <your-workspace-image>
# Command to start on workspace startup (optional)
tasks:
- init: yarn install
command: yarn build
# Ports to expose on workspace startup (optional)
ports:
- port: 8000
onOpen: open-preview
我从官方网页上拉过来了样品。
从这里可以看出,工作区只需要一个镜像,并且可以指定任务设置和开放的端口,非常简单。
好吧,让我们来看看Eclipse/Che的启动配置文件。通常会在devfile.yaml文件中定义。
我从GitHub上拉取了公开的内容。这是使用Node和yarn,并与GitPod类似的内容。因为很长,所以请跳过这段,直接看下一句话。
---
apiVersion: 1.0.0
metadata:
generateName: nodejs-mongo-
projects:
-
name: nodejs-mongodb-sample
source:
type: git
location: "https://github.com/che-samples/nodejs-mongodb-sample"
components:
-
type: chePlugin
id: che-incubator/typescript/latest
memoryLimit: 512Mi
-
type: chePlugin
id: ms-vscode/node-debug2/latest
-
type: dockerimage
alias: nodejs
image: quay.io/eclipse/che-nodejs10-ubi:nightly
env:
# The values below are used to set up the environment for running the application
- name: SECRET
value: 220fd770-c028-480d-8f95-f84353c7d55a
- name: NODE_ENV
value: production
memoryLimit: 512Mi
endpoints:
- name: 'nodejs'
port: 8080
mountSources: true
-
type: dockerimage
alias: mongo
image: docker.io/centos/mongodb-36-centos7
memoryLimit: 512Mi
env:
- name: MONGODB_USER
value: user
- name: MONGODB_PASSWORD
value: password
- name: MONGODB_DATABASE
value: guestbook
- name: MONGODB_ADMIN_PASSWORD
value: password
volumes:
- name: mongo-storage
containerPath: /var/lib/mongodb/data
endpoints:
- name: mongodb
port: 27017
attributes:
discoverable: 'true'
public: 'false'
commands:
-
name: run the application
actions:
- type: exec
component: nodejs
command: npm install && node --inspect=9229 app.js
workdir: ${CHE_PROJECTS_ROOT}/nodejs-mongodb-sample
-
name: Debug remote node application
actions:
- type: vscode-launch
referenceContent: |
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"name": "Debug (Attach) - Remote",
"request": "attach",
"port": 9229
}]
}
你会发现与GitPod相比,有以下方面的显著差异。
-
- 使うプラグインが指定されています。(上記では che-incubator/typescript/latest と ms-vscode/node-debug2/latest )
-
- 2 つの docker イメージが (nodejs と mongo) が指定されています。
-
- マウントボリュームが指定されています。
- どの git リポジトリからソースコードを引っ張ってくるのかが明示されています。
由于许多组件是数组,因此可以推断出可以支持更多的插件和Docker镜像。
没有优劣之分,需要灵活运用。
単一の Git リポジトリで済み、外部のデータベース等を使わないケースでは、GitPod が向きます。
しかし、上記のような、イミュータブルな外部データベース(上記の例では MongoDB)を絡めた開発を行いたい場合には、 Eclipse/Che が向きます。
如果需要在多人开发等情况下实现开发环境的完全统一,包括插件在内,那么Eclipse/Che是合适的选择。
相反地,如果是个人开发,并且对于开发环境的可复制性并不是非常感兴趣的话,那么GitPod是合适的选择。
これは、Docker における、docker コマンドのみの身軽さを採るか、docker-compose を使った環境再現性を採るかに、似ている選択かもしれません。
总结这两者都是对 GitHub Codespaces 的强大开源替代品。(虽然 GitHub Codespaces 也很方便)
巧妙地使用,以减少开发环境设置的工作量。
其实,Eclipse/Che有一种非常调皮的技巧,可以将其它编辑器变成Theia。在本文中,我们假设Che也会乖乖地使用默认的Theia编辑器。 ↩
实际上可以做到。 ↩