我听说过人们在开发环境中维护Docker容器,但是我不确定如何实现。
假设您正在一个包含React webapp的存储库中工作。我们选择的IDE是IntelliJ。如果一个新的开发人员只是得到一个装有所有必要的开发人员容器的容器,那就太好了。
我该如何实现?
#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,您需要弄清楚您喜欢的其他语言。
希望这会有所帮助
评论
几乎与虚拟机相同。有很多关于在VM中创建开发环境的指南。尝试搜索Google / SO并提出更多具体问题吗?当您说要开发环境时,意味着要在容器中使用React应用。而已?您要安装的“所有必要的开发人员”具体是什么?