Docker Compose:从零开始构建一个 Node.js Web 应用程序

阅读时长 4 分钟读完

Docker Compose 是 Docker 生态系统中的一部分,它可以用于定义和运行多个 Docker 容器组成的应用程序。在本文中,我们将介绍如何使用 Docker Compose 构建一个 Node.js Web 应用程序,让您可以快速地搭建一个可靠的开发环境。

基本概念

在开始之前,让我们回顾一下 Docker Compose 中的几个基础概念:

  • Dockerfile: 用于构建 Docker 容器的文本文件。
  • docker-compose.yml: 用于定义多个 Docker 容器的 YAML 文件。
  • docker-compose: 用于构建、启动和管理多个 Docker 容器的命令行工具。

步骤

第一步:创建 Dockerfile

我们首先需要创建一个基于 Node.js 的 Dockerfile,这个文件将用作我们的应用程序的基础镜像。我们可以在 Dockerfile 中使用 FROM 指令从 Node.js 官方镜像构建一个基础镜像。

下面是我们的 Dockerfile 文件的内容:

在这个 Dockerfile 中:

  • 我们从 Node.js 16-alpine 镜像构建基础镜像。
  • 我们创建一个工作目录 /app,并将其设置为默认目录。
  • 在镜像中安装我们的依赖项。
  • 拷贝应用程序文件到容器的文件系统中。
  • 使用 CMD 指令设置应用程序启动命令。

第二步:创建 docker-compose.yml 文件

现在,我们已经有了一个基本的 Dockerfile,我们将创建一个 docker-compose.yml 文件来定义需要用到的 Docker 容器。在这个文件中,我们将定义一个 Node.js 容器和一个 MongoDB 容器。

下面是我们的 docker-compose.yml 文件的内容:

-- -------------------- ---- -------
-------- -----

---------
  ---------
    ------ -
    ------
      - -----------
    -----------
      - -------
    ------------
      - ------------------------------------------
    --------
      - ------

  --------
    ------ -----------
    --------
      - ------------------

在这个 docker-compose.yml 文件中:

  • 我们使用了 Docker Compose v 3.8 的语法。
  • 我们定义了两个服务,node-appmongodb
  • node-app 服务使用了我们前面定义的 Dockerfile 构建。
  • 我们映射 Node.js 应用程序的 3000 端口到宿主机 3000 端口。
  • node-app 服务依赖于 mongodb 服务,并设置环境变量 MONGO_URI
  • 我们挂载了当前目录到容器的 /app 目录。
  • mongodb 服务使用了官方的 mongo:4.4.5 镜像,并将挂载数据目录到 ./data/db

第三步:启动 Docker Compose 应用

现在我们已经完成了 Dockerfile 和 docker-compose.yml 文件的创建,我们现在可以使用 docker-compose up 命令来启动应用程序了。

这个命令将会构建我们的镜像并启动 Docker 容器。当容器启动后,在浏览器中打开 http://localhost:3000,您就会看到我们创建的应用程序正在运行了。

第四步:关于 Docker Compose 的其他命令

除了 docker-compose up 命令之外,Docker Compose 还提供了多个命令,可以用于构建、启动、停止和删除应用程序中的 Docker 容器。

这些命令包括:

  • docker-compose build: 重新构建指定服务的镜像。
  • docker-compose start: 启动指定服务的容器。
  • docker-compose stop: 停止指定服务的容器。
  • docker-compose down: 停止和删除指定服务的容器和网络。

结论

在本文中,我们介绍了如何使用 Docker Compose 构建一个 Node.js Web 应用程序。您现在应该能够了解 Docker Compose 的基本概念,并了解如何编写 Dockerfile 和 docker-compose.yml 文件。

虽然这只是一个简单的示例,但它可供您作为学习和实践 Docker Compose 的入门指南。在未来,我们可能会介绍更高级的 Docker Compose 技术,以帮助您创建更复杂的应用程序。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/66ef80cc6fbf9601972f8e42

纠错
反馈