用于基于 Docker 的项目的基于云的 IDE?

ste*_*esu 5 ide cloud development-environment docker

我想开始将我现有的一些项目转换为使用 Docker - 主要是为了提高新开发人员在部署到生产时开始工作的便利性并减少与环境相关的错误(我曾经遇到过代码在开发中完美运行的问题)并且只是为了发现生产有一个过时的 MySQL 版本)

问题是我喜欢使用基于云的 IDE。我目前使用 Cloud9,尽管我最近开始查看 CodeAnywhere 和 Codenvy,看看它们是否能满足我的需求(到目前为止:不确定)

我遇到的问题是 Docker 似乎不能很好地与许多基于云的 IDE 配合使用。

  • 在 Cloud9 上,您的项目(和关联的存储库)驻留在“工作区”中。一个工作空间是一个以非特权模式运行的 Docker 容器,因此您不能在工作空间内运行 Docker。这意味着任何环境依赖项(Python、PHP、MySQL 等)都必须直接安装到工作区操作系统
  • CodeAnywhere 类似地创建了一个“容器”——一个 Docker 容器,您的代码在其中运行,而您不能在其中运行 Docker
  • Codenvy似乎有点接近我想要的东西,在一个“工作区”可以由多个“机器”的。这让我想起了一个docker-compose.yml文件。您的工作区可能包含一台数据库机、一台 redis 缓存机和一台 PHP 机。然而,他们的层次结构将“项目”(和相关的存储库)作为“工作区”的子项——而不是环境定义(和docker-compose.yml文件)作为项目的子项

前两个都支持一些“SSH 工作空间”的概念——您可以启动一个 VM 并直接连接到它,而不是连接到它们托管的容器。虽然这可以让我运行 Docker,但乍一看它会遇到两个严重问题之一:

  1. 每个项目都驻留在一个“工作区”中——这使得 IDE 很难将工作分开
  2. 每个项目都有自己的“工作区”,这意味着每个项目都有自己的虚拟机——导致每月成本很高

是否有其他一些基于云的 IDE 可以解决我的问题,或者是否有其他方法可以使用这三种基于云的 IDE 中的一种对我有用?

ste*_*esu 3

我在几个不同的地方问过这个问题,而不仅仅是在这里。几个月后,还没有完整的答案,但我获得了更多信息,我想将这些信息传递给任何偶然发现同一问题的人。

1. 关于Cloud9和CodeAnywhere

启动新的 SSH 工作区时,您不仅可以指定主机,还可以指定工作区的根文件夹。这意味着您可以在单个虚拟机上创建多个工作区,并使所有内容保持良好且独立的状态。

有一些注意事项:

  • 为了真正保持工作区独立,您必须为每个工作区创建一个新用户。否则有人workspaceA可以编辑../workspaceB/file
  • 所有工作区都将共享相同的磁盘空间,因此在一个工作区中工作的人员可能会填满硬盘驱动器并导致所有其他工作区出现问题
  • 没有简单的方法来启动新的工作空间。您必须以管理用户身份登录虚拟机,创建新用户,为工作区创建目录,分配权限,然后设置新的 SSH 工作区。不过,这其中很大一部分是可以自动化的

2. 具体关于CodeAnywhere

CodeAnywhere 承诺在 2018 年第四季度提供全面的 Docker 支持。我一直在等待,但还没有看到。保持手指交叉。

3.替代服务

截至 2018 年,已有超过 50 个基于云的 IDE。每个人和他们的母亲都在做“我也是”的生意。所以按理说,至少其中之一会起作用。虽然我没有尝试全部,但我确实听说OpenShift支持 Docker。