每当我加入团队中的新成员时,我都必须按照相同的程序进行安装,确定自上次加入某人以来发生了什么变化等。很有趣。

我听说过人们在开发环境中维护Docker容器,但是我不确定如何实现。

假设您正在一个包含React webapp的存储库中工作。我们选择的IDE是IntelliJ。如果一个新的开发人员只是得到一个装有所有必要的开发人员容器的容器,那就太好了。

我该如何实现?

评论

几乎与虚拟机相同。有很多关于在VM中创建开发环境的指南。尝试搜索Google / SO并提出更多具体问题吗?

当您说要开发环境时,意味着要在容器中使用React应用。而已?您要安装的“所有必要的开发人员”具体是什么?

#1 楼

入门经验应该几乎就像告诉您的新开发人员只是克隆存储库并运行docker-compose up一样简单。就个人而言,我不会担心IDE集成,因为人们可能更喜欢使用不同的IDE。

每个项目/应用程序(如果有多个)都应该能够独立运行,并且每个项目/应用程序都应该具有它是自己的代码库。这是十二要素应用程序方法的概念。

在每个项目的根目录中添加一个Dockerfile和一个docker-compose.yml文件。


注意:我创建了Craft Kits,您可以使用它们使用一个命令(例如mason craft nodejs)为正在使用的框架/语言自动生成这些文件,甚至不需要要了解Docker。


Dockerfile会将您的应用程序构建为映像,安装和运行应用程序所需的依赖项。此图像是运行您的应用程序的图像。

FROM node:8.8-alpine

# Set our workdir
WORKDIR /app

# Install and cache app dependencies
COPY package.json /app
RUN npm install 

# Add project files
COPY . /app

# start app
CMD [ "npm", "start" ]


docker-compose.yml文件将启动您的环境。它将定义Docker应该为您的应用程序启动的所有服务

version: '2'
services:
  web:
    build: .
    volumes:
      - ./:/app
    ports:
      - "3000:3000"

  mongodb:
    image: mongodb
    volumes:
      - ./storage/data/mongodb:/data/db
    ports:
      - "27017:27017"


当您加入新开发人员时,您可以告诉他们git clone您的仓库并启动他们的仓库通过运行以下开发环境:
docker-compose up -d 


在本地开发时,此方法的优势是,运行docker-compose up会将代码作为卷安装。

然后,当您要部署时,在构建Dockerfile时,它将把您的代码复制到您的映像中,因此所有内容都打包好并且可以轻松地移动。

我们使用Codemason上的应用程序使用相同的方法,这是我用于构建,管理和扩展基于容器的应用程序的服务。当您推送新代码时,我们会自动从您的Dockerfile构建映像。由于该映像包含您的应用程序需要运行的所有内容,因此可以轻松地在任何服务器上启动该映像,并可以在多个服务器之间进行放大/缩小。

#2 楼

如果您愿意尝试使用IntelliJ以外的其他工具,例如可以在容器中运行的Eclipse Che。理想情况下,将为DevOps工具链的其他组件提供插件。

#3 楼


有多种方法可以实现它,具体取决于您喜欢哪种方法。
最简单,最简单的方法是,获取docker映像并在其中创建环境,然后保存以供以后使用,加入后,您只需要启动该映像即可创建整个环境
FYI:用于dev的Docker
或Dev环境

注意:这些链接适用于PHP,您需要弄清楚您喜欢的其他语言。
希望这会有所帮助