Docker可帮助您快速设置机器上的开发环境。整个过程几乎不需要几分钟。但是,让我们假设您是在一个项目上分配的,该项目需要在运行状态下至少需要10种不同的服务才能运行您的项目。假设您的项目需要Java 8,节点14,MySQL,MongoDB,Ruby on Rails,Rabbitmq等。理想情况下,情况并非如此,但这只是一个假设。在这种情况下,您必须将所有这些图像分别从Docker中拉出,然后将它们全部从容器中启动。在某个时候,一个过程可能取决于另一个过程。因此,您必须订购它们。如果这是一个一次过程,那将是很好的。但是,不仅每天,每当您开始从事项目时,都必须启动所有这些服务。
这是一个乏味的过程吗?
要克服这个Docker,引入了一个称为多容器(Docker组成)的概念。在了解Docker撰写之前,让我们快速学习如何在Docker中启动数据库主机。在本教程的示例部分中,我们将一个nodejs容器和mongoDB容器一起旋转。一开始就了解MongoDB将为您提供良好的理解。
让S将本教程分为两个部分。
- 如何将Docker用作数据库主机(MongoDB)
- docker与示例(nodejs&mongodb)组成
如何将Docker用作数据库主机
如果您在后端开发方面有经验,则可能有机会处理多个数据库。诸如MySQL/Postres之类的数据库处理关系数据和Cassandra/MongoDB处理非结构化数据。
您知道一个秘密吗,我们可以在当地机器上安装数据库的情况下进行后端开发。是的,我们可以将Docker用作数据库主机。默认情况下,它具有特定映像文件中的所有依赖项。
为什么我们需要在Docker而不是本地使用数据库?
正如我在旧博客中已经提到的那样,Docker帮助我们在平台和环境中保持一致的版本。让我考虑到您的团队中有一群人在MongoDB版本5.0上工作。如果新的技术人员加入了您的团队,他/她需要手动设置相同的版本。如果他们安装了最新版本的MongoDB(6.0),这将导致一些冲突。如果它传播到每个人的设备,这将是噩梦。
为了克服这一点,我们可以使用自定义配置在Docker中使用MongoDB,然后将MongoDB图像推向内部座台。如果有新人进来,他们可以提取图像并在没有任何手动配置的情况下启动实现。
让我们迅速进入使用Docker中使用数据库的优势。
- 通过使用此实现,我们可以确保团队中的每个人都使用确切的运行时间和配置,而无需任何外部资源。
- 它很容易设置,我们可以使用Docker桌面快速启动/停止服务器
如何使用Docker设置MongoDB
希望您知道Docker Hub。如果没有,这里是简短的介绍。 Docker Hub是一个平台,我们可以在公共或私人中共享Docker图像。它与github / gitlab更相似。简而言之,它是Docker图像的存储库。
第一步是从Docker Hub中提取官方的Docker图像。
docker pull mongo:latest
一旦您拿起蒙哥图像,打开码头桌面,您就可以在那里看到它。
让我们使用Docker Run命令运行MongoDB图像。
docker run -d -p 27017:27017 --name mongo-server-local mongo: latest
我们成功运行了Docker映像。现在,我们可以看到在Docker桌面上运行的容器。
因此,MongoDB服务器在您的计算机上运行。让我们在浏览器中确保这一点。在浏览器上点击http://localhost:27017,您应该能够看到屏幕截图中所示的消息。
有趣吗?
我们可以在需要时使用Docker停止/启动MongoDB服务器。
重要的提示
- 不建议将Docker用作生产数据库
- 请勿将Docker数据库用于大型应用程序
什么是Docker-Compose
让我们回到Docker-Compose。
Docker Compose是一种用于定义和共享多范围应用程序的工具。这意味着我们可以使用单个源运行一个带有多个容器的项目。
例如,假设您一起使用nodejs和mongodb构建一个项目。我们可以创建一个启动两个容器作为服务的单个图像,您不需要单独启动。
有趣吗?这解决了我在本文开始时提出的问题。
要实现此目的,我们需要定义一个docker-compose.yml
。
docker-compose.yml
组合文件是一个YML文件,定义了Docker容器的服务,网络和量。有几个版本的撰写文件格式可用。1、2、2.x和3.x。
在进一步进行之前,这里是Docker Compose team的重要说明。
从2023年6月底开始,将不再支持V1,并且将从所有Docker桌面版本中删除。
我们在本文中使用版本3。
version: '3'
services:
app:
image: node:latest
container_name: app_main
restart: always
command: sh -c "yarn install && yarn start"
ports:
- 8000:8000
working_dir: /app
volumes:
- ./:/app
environment:
MYSQL_HOST: localhost
MYSQL_USER: root
MYSQL_PASSWORD:
MYSQL_DB: test
mongo:
image: mongo
container_name: app_mongo
restart: always
ports:
- 27017:27017
volumes:
- ~/mongo:/data/db
volumes:
mongodb:
让我们拆除上述代码并一一理解。
version
指的是Docker-Compose版本(最新3)
services
定义我们需要运行的服务
app
- 一个容器之一的自定义名称
image
图像,我们必须拉。在这里,我们正在使用节点:最新和mongo。
container_name
每个容器的名称
restart
启动/重新启动服务容器
port
定义自定义端口以运行容器
working_dir
- 服务容器的当前工作目录
environment
定义环境变量,例如DB凭据等
command
命令运行服务
如何运行多国?
我们需要使用Docker Build构建它。
docker compose build
成功构建后,我们可以使用UP命令运行容器。
docker compose up
如果要以独立模式运行容器,只需使用-d
标志。
docker compose up -d
很好,我们很好。容器正在启动并运行。让我们检查容器列表。
docker compose ps
Hurray,我们可以看到有两个容器同时运行。
要查看MongoDB中的数据,您必须安装MongoDB指南针。
这是它的屏幕截图。
结论
在本文中,您已经了解了Docker组成的示例。使用此多个容器,您可以旋转任何类型的服务,例如RabbitMQ,Apache Kafka并以单个服务来源运行。希望您喜欢阅读这篇文章。
如果您喜欢博客并评论您的反馈和建议,请点击Like
。
如果您想了解有关Docker的更多信息,请在我的site(https://5minslearn.gogosoon.com)上订阅我的文章。它还包含我所有博客的合并列表。
欢呼!