Docker 4 例子应用

示例应用程序

在本教程的其余部分,我们将使用一个在 Node.js 中运行的简单待办事项列表管理器。 如果您不熟悉 Node.js,请不要担心。 不需要真正的 JavaScript 经验。

在这一点上,你的开发团队很小,你只是在构建一个应用程序来证明你的 MVP(最小可行产品)。 您想展示它的工作原理以及它的功能,而无需考虑它将如何适用于大型团队、多个开发人员等。

下载这个软件

在我们可以运行应用程序之前,我们需要将应用程序源代码放到我们的机器上。 对于实际项目,您通常会克隆 repo。 但是,对于本教程,我们创建了一个包含应用程序的 ZIP 文件。

1 下载应用程序内容。 https://github.com/docker/getting-started/tree/master/app 您可以拉取整个项目或将其下载为 zip 文件并解压缩应用程序文件夹以开始使用

2 提取后,使用您喜欢的代码编辑器打开项目。 如果您需要编辑器,可以使用 Visual Studio Code。 您应该会看到 package.json 和两个子目录(src 和 spec)。

构建应用的容器镜像

为了构建应用程序,我们需要使用 Dockerfile。 Dockerfile 只是一个基于文本的指令脚本,用于创建容器映像。 如果您之前创建过 Dockerfile,您可能会在下面的 Dockerfile 中看到一些缺陷。 但是,别担心。 我们会检查它们。

1 在文件 package.json 所在的文件夹中创建一个名为 Dockerfile 的文件,内容如下

# syntax=docker/dockerfile:1
FROM node:12-alpine
RUN apk add --no-cache python g++ make
WORKDIR /app
COPY . .
RUN yarn install --production
CMD ["node", "src/index.js"]

请检查文件 Dockerfile 是否没有像 .txt 这样的文件扩展名。 某些编辑器可能会自动附加此文件扩展名,这将导致下一步出错。

2 如果您还没有这样做,请打开一个终端并转到包含 Dockerfile 的 app 目录。现在使用 docker build 命令构建容器镜像。

docker build -t getting-started .

此命令使用 Dockerfile 构建新的容器映像。您可能已经注意到下载了很多“层”。这是因为我们指示构建器我们要从 node:12-alpine image 开始。但是,由于我们的机器上没有该image,因此需要下载该image。

下载镜像后,我们复制到我们的应用程序中并使用 yarn 安装我们应用程序的依赖项。 CMD 指令指定从该映像启动容器时要运行的默认命令。

最后, -t 标志标记我们的图像。将此简单地视为最终 image 的人类可读名称。由于我们将映像命名为 Getting-started,因此我们可以在运行容器时引用该映像。

"." 在 docker build 命令的末尾告诉 Docker 应该在当前目录中查找 Dockerfile。

启动应用容器

现在我们有了一个 image ,让我们运行应用程序。 为此,我们将使用 docker run 命令(还记得之前的吗?)。

1 使用 docker run 命令启动你的容器并指定我们刚刚创建的镜像的名称:

docker run -dp 3000:3000 getting-started

还记得 -d 和 -p 标志吗? 我们以“分离”模式(在后台)运行新容器,并在主机的 3000 端口到容器的 3000 端口之间创建映射。没有端口映射,我们将无法访问应用程序。

2 几秒钟后,打开 Web 浏览器访问 http://localhost:3000。 您应该会看到我们的应用程序。

3 继续添加一两个项目,看看它是否按预期工作。 您可以将项目标记为完成并删除项目。 您的前端已成功在后端存储项目。 非常快速和容易,对吧?

此时,您应该有一个正在运行的待办事项列表管理器,其中包含一些由您构建的项目。 现在,让我们进行一些更改并了解如何管理我们的容器。

如果您快速浏览一下 Docker 仪表板,您应该会看到您的两个容器正在运行(本教程和您新启动的应用程序容器)。

文章目录