什么是Docker撰写?何时以及如何使用它?
#javascript #docker #组成 #mongodb

Docker可帮助您快速设置机器上的开发环境。整个过程几乎不需要几分钟。但是,让我们假设您是在一个项目上分配的,该项目需要在运行状态下至少需要10种不同的服务才能运行您的项目。假设您的项目需要Java 8,节点14,MySQL,MongoDB,Ruby on Rails,Rabbitmq等。理想情况下,情况并非如此,但这只是一个假设。在这种情况下,您必须将所有这些图像分别从Docker中拉出,然后将它们全部从容器中启动。在某个时候,一个过程可能取决于另一个过程。因此,您必须订购它们。如果这是一个一次过程,那将是很好的。但是,不仅每天,每当您开始从事项目时,都必须启动所有这些服务。

这是一个乏味的过程吗?

要克服这个Docker,引入了一个称为多容器(Docker组成)的概念。在了解Docker撰写之前,让我们快速学习如何在Docker中启动数据库主机。在本教程的示例部分中,我们将一个nodejs容器和mongoDB容器一起旋转。一开始就了解MongoDB将为您提供良好的理解。

让S将本教程分为两个部分。

  1. 如何将Docker用作数据库主机(MongoDB)
  2. docker与示例(nodejs&mongodb)组成

如何将Docker用作数据库主机

如果您在后端开发方面有经验,则可能有机会处理多个数据库。诸如MySQL/Postres之类的数据库处理关系数据和Cassandra/MongoDB处理非结构化数据。

您知道一个秘密吗,我们可以在当地机器上安装数据库的情况下进行后端开发。是的,我们可以将Docker用作数据库主机。默认情况下,它具有特定映像文件中的所有依赖项。

为什么我们需要在Docker而不是本地使用数据库?

正如我在旧博客中已经提到的那样,Docker帮助我们在平台和环境中保持一致的版本。让我考虑到您的团队中有一群人在MongoDB版本5.0上工作。如果新的技术人员加入了您的团队,他/她需要手动设置相同的版本。如果他们安装了最新版本的MongoDB(6.0),这将导致一些冲突。如果它传播到每个人的设备,这将是噩梦。

为了克服这一点,我们可以使用自定义配置在Docker中使用MongoDB,然后将MongoDB图像推向内部座台。如果有新人进来,他们可以提取图像并在没有任何手动配置的情况下启动实现。

让我们迅速进入使用Docker中使用数据库的优势。

  1. 通过使用此实现,我们可以确保团队中的每个人都使用确切的运行时间和配置,而无需任何外部资源。
  2. 它很容易设置,我们可以使用Docker桌面快速启动/停止服务器

如何使用Docker设置MongoDB

希望您知道Docker Hub。如果没有,这里是简短的介绍。 Docker Hub是一个平台,我们可以在公共或私人中共享Docker图像。它与github / gitlab更相似。简而言之,它是Docker图像的存储库。

第一步是从Docker Hub中提取官方的Docker图像。

MongoDB image in Docker Hub

docker pull mongo:latest

Pull MongoDB image from Docker

一旦您拿起蒙哥图像,打开码头桌面,您就可以在那里看到它。

Docker Desktop Dashboard

让我们使用Docker Run命令运行MongoDB图像。

docker run -d -p 27017:27017 --name mongo-server-local mongo: latest

Run the docker image

我们成功运行了Docker映像。现在,我们可以看到在Docker桌面上运行的容器。

Docker Desktop Container Dashboard

因此,MongoDB服务器在您的计算机上运行。让我们在浏览器中确保这一点。在浏览器上点击http://localhost:27017,您应该能够看到屏幕截图中所示的消息。

Output from MongoDB when accessing via HTTP

有趣吗?

我们可以在需要时使用Docker停止/启动MongoDB服务器。

重要的提示

  1. 不建议将Docker用作生产数据库
  2. 请勿将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

Run all images in a single compose command

很好,我们很好。容器正在启动并运行。让我们检查容器列表。

docker compose ps

Status of running docker containers

Hurray,我们可以看到有两个容器同时运行。

Testing NodeJS

Testing MongoDB

要查看MongoDB中的数据,您必须安装MongoDB指南针。

这是它的屏幕截图。

MongoDB Compass

结论

在本文中,您已经了解了Docker组成的示例。使用此多个容器,您可以旋转任何类型的服务,例如RabbitMQ,Apache Kafka并以单个服务来源运行。希望您喜欢阅读这篇文章。

如果您喜欢博客并评论您的反馈和建议,请点击Like

如果您想了解有关Docker的更多信息,请在我的sitehttps://5minslearn.gogosoon.com)上订阅我的文章。它还包含我所有博客的合并列表。

欢呼!