Docker 和 Docker Compose 在 Windows 下入门

阅读时长 9 分钟读完

简介

Docker 是一个流行的容器化平台,能够让开发者在不同的环境中运行其应用程序。使用 Docker,你可以创建轻量级的、可移植的容器,这些容器可以运行在任何机器上,无论是开发环境还是生产环境。Docker Compose 是 Docker 的一个工具,可以让你定义并运行多个 Docker 容器。

本文将介绍如何在 Windows 系统下使用 Docker 和 Docker Compose,并提供详细的步骤和示例代码。如果你是一个前端开发者,想要学习如何使用 Docker 来简化你的开发流程,那么这篇文章对你来说将是非常有帮助的。

安装 Docker 和 Docker Compose

在开始之前,你需要确保已经安装了 Docker 和 Docker Compose。如果你还没有安装,可以按照以下步骤进行安装:

安装 Docker

  1. 首先,你需要在 Docker 官网上下载 Docker Desktop for Windows 安装包。你可以在 https://www.docker.com/products/docker-desktop 下载。

  2. 下载完成后,双击启动安装程序,并按照提示完成安装即可。

安装 Docker Compose

  1. 打开一个命令行终端,并输入以下命令以下载 Docker Compose:

  2. 接着,你需要为 Docker Compose 设置执行权限。在命令行终端输入以下命令:

  3. 最后,你可以输入以下命令来测试 Docker Compose 是否已经安装成功,请确保显示出 Docker Compose 的版本号:

使用 Docker

启动一个 Nginx 容器

为了演示 Docker 的基本用法,我们将启动一个 Nginx 容器,并将其映射到本地端口 8080:

  1. 首先,你需要创建一个新的目录,并在其中创建一个名为 index.html 的文件。这个文件将会作为 Nginx 服务器的默认首页。

  2. 使用以下命令来启动一个新的 Nginx 容器,并将其映射到本地端口 8080:

    这个命令指定了使用 Nginx 镜像(nginx),并将容器的 80 端口映射到本地端口 8080。-v $(pwd):/usr/share/nginx/html 指定了将本地的当前目录,映射到容器内的 /usr/share/nginx/html 路径。

  3. 现在你可以访问 http://localhost:8080,查看刚刚启动的 Nginx 容器是否正常工作。

构建一个 Node.js 应用程序

在上面的示例中,我们启动了一个 Nginx 服务器,但是这个服务器只能提供静态内容。实际上,在前端开发中,我们可能需要更加强大的功能,比如使用 Node.js 编写后端服务 API。

接下来,我们将演示如何使用 Docker 构建一个基于 Node.js 的应用程序,该应用程序将会作为一个简单的 API 服务器。

  1. 首先,你需要创建一个新的目录,用来存放这个应用程序:

  2. 接着,你需要创建一个名为 package.json 的文件,其中包含了你的 Node.js 应用程序的依赖关系:

    -- -------------------- ---- -------
    -
      ------- -------------
      ---------- --------
      -------------- -- ------ --- --------
      ------- -----------
      --------------- -
        ---------- ---------
      --
      ---------- -
        -------- ----- ---------
      -
    -
    展开代码

    在这个示例中,我们使用了 Express.js 作为我们的 Web 框架。

  3. 接着,你需要创建一个名为 index.js 的文件,其中包含了你的程序代码。这个示例代码非常简单,只是返回一个字符串:“Hello, World!”

    -- -------------------- ---- -------
    ----- ------- - -------------------
    
    ----- --- - ----------
    
    ------------ ----- ---- -- -
      ---------------- ---------
    ---
    
    ---------------- -- -- -
      ---------------- --------- -- ---- --------
    ---
    展开代码
  4. 现在,你需要创建一个名为 Dockerfile 的文件,其中包含了构建这个应用程序的 Docker 镜像所需的指令:

    在这个 Dockerfile 中,我们使用了 Node.js 的官方 Docker 镜像,然后在 /usr/src/app 目录下创建了工作目录。接着,我们将 package*.json 文件复制到工作目录中,并运行 npm install 命令来安装应用程序的依赖关系。最后,我们将应用程序的代码复制到工作目录中,并使用 EXPOSE 命令指定了容器将使用的端口。在最后的 CMD 命令中,我们指定了在容器启动时运行的命令。

  5. 接下来,你需要使用以下命令构建 Docker 镜像。请确保在 sample-api 目录下执行以下命令。

    这个命令将会在你本地的 Docker 环境中构建一个名为 sample-api 的镜像。. 表示使用当前目录的内容作为构建上下文。

  6. 最后,你可以使用以下命令启动一个新的容器,运行这个应用程序。

    这个命令指定了使用刚刚构建好的 sample-api 镜像,并将容器的 3000 端口映射到本地端口 3000。你可以访问 http://localhost:3000 来查看应用程序是否正常工作。

使用 Docker Compose

Docker Compose 是一个非常有用的工具,可以让你管理多个 Docker 容器,并使它们之间互相协作。在前端开发中,你可能需要多个容器来运行一个完整的应用程序,比如一个数据存储容器,一个应用程序容器,还有一个 Web 服务器容器。

在这个示例中,我们将演示如何使用 Docker Compose 来启动一个包含 MySQL、Node.js 和 Nginx 容器的完整 Web 应用程序。

  1. 首先,你需要创建一个新的目录,用来存放应用程序:

  2. 接着,你需要创建一个名为 docker-compose.yml 的文件,这个文件包含了你想要启动的容器的配置信息:

    -- -------------------- ---- -------
    -------- -----
    ---------
      ----
        ------ -
        ------
          - -----------
        -----------
          - --
      ---
        ------ -------
        -------- ------
        ------------
          --------------- ------
          ----------- ------
          --------------- --------------
          -------------------- ------------
        --------
          - ----------------------
      ----
        ------ ------------
        ------
          - ---------
        --------
          - ---------------------------
    --------
      --------
    展开代码

    在这个文件中,我们定义了三个容器:

    • app:Node.js 应用程序容器,将会使用 3000 端口以及 Dockerfile 文件中定义的 CMD 命令启动。
    • db:MySQL 数据库容器,将会使用 mysql:8 镜像,并设置了四个环境变量,用于指定数据库的名称、用户和密码。此外,将会将数据存储在本地的 db-data 卷中。
    • web:Nginx 服务器容器,将会使用 nginx:latest 镜像,并将本地 web 目录映射到容器中的默认网站目录。
  3. 接下来,你可以使用以下命令来启动这三个容器。

    这个命令将会启动并构建这三个容器。你可以按下 Ctrl+C 结束这个过程。接着,如果你想要重新启动这些容器,可以使用以下命令:

    如果你想要停止这些容器,可以使用以下命令:

    如果你想要删除这些容器,可以使用以下命令:

    这个命令将会停止并删除这些容器,并将本地的数据卷也一并删除。

现在,你可以访问 http://localhost:8080 来查看这个应用程序是否正常运行。由于 Docker Compose 自动将这些容器连接在一起,你应该能够看到完整的 Web 应用程序,其中包含了数据库、Node.js 应用程序和 Nginx Web 服务器。当你修改了应用程序或容器的配置项时,Docker Compose 可以帮助你重新启动容器并更新你的应用程序。

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

纠错
反馈

纠错反馈