Docker将一个应用程序容器化

来自泡泡学习笔记
跳到导航 跳到搜索

先决条件

  • 您已经安装了最新版本的Docker桌面版。
  • 您已经安装了一个Git客户端。
  • 您有一个IDE或文本编辑器来编辑文件。Docker建议使用Visual Studio Code。

获取应用程序

在运行应用程序之前,您需要将应用程序源代码获取到您的机器上。

使用以下命令克隆getting-started-app存储库:

git clone https://github.com/docker/getting-started-app.git

查看克隆存储库的内容。您应该看到以下文件和子目录:

├── getting-started-app/
│ ├── package.json
│ ├── README.md
│ ├── spec/
│ ├── src/
│ └── yarn.lock

构建应用程序的镜像

要构建镜像,您需要使用一个Dockerfile。Dockerfile只是一个没有文件扩展名的文本文件,包含一系列指令的脚本。Docker使用这个脚本来构建容器镜像。

在getting-started-app目录中,与package.json文件位于同一位置,创建一个名为Dockerfile的文件。您可以使用以下命令根据您的操作系统创建一个Dockerfile。

  1. 确保您在getting-started-app目录中。将/path/to/getting-started-app替换为您getting-started-app目录的路径。

    cd /path/to/getting-started-app
  2. 创建一个名为Dockerfile的空文件。

    touch Dockerfile
  3. 使用文本编辑器或代码编辑器,将以下内容添加到Dockerfile中:

    # syntax=docker/dockerfile:1
    FROM node:18-alpine 
    WORKDIR /app 
    COPY . . 
    RUN yarn install –production 
    CMD [“node”, “src/index.js”] 
    EXPOSE 3000

使用以下命令构建镜像:

  1. 在终端中,确保您在getting-started-app目录中。将/path/to/getting-started-app替换为您getting-started-app目录的路径。

    cd /path/to/getting-started-app
  2. 构建镜像。

    docker build -t getting-started .

docker build命令使用Dockerfile构建一个新的镜像。您可能已经注意到Docker下载了很多“层”。这是因为您指示构建器从node:18-alpine镜像开始构建。但是,由于您的机器上没有该镜像,Docker需要下载该镜像。

在Docker下载镜像后,Dockerfile中的指令将您的应用程序复制进来,并使用yarn安装了应用程序的依赖项。CMD指令指定了从此镜像启动容器时要运行的默认命令。

最后,-t标志为您的镜像打上标签。可以将其视为最终镜像的人类可读名称。由于您将镜像命名为getting-started,因此可以在运行容器时引用该镜像。

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

启动应用程序容器

现在您已经有了一个镜像,可以使用docker run命令在容器中运行应用程序。

使用docker run命令运行您的容器,并指定刚刚创建的镜像的名称:

docker run -dp 127.0.0.1:3000:3000 getting-started

-d标志(简写为–detach)在后台运行容器。-p标志(简写为–publish)在主机和容器之间创建端口映射。-p标志以HOST:CONTAINER的格式接受字符串值,其中HOST是主机上的地址,CONTAINER是容器上的端口。该命令将容器的端口3000发布到主机上的127.0.0.1:3000(本地主机:3000)。如果没有端口映射,您将无法从主机访问应用程序。

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

添加一两个项目并确保它按您的预期工作。您可以标记项目为已完成并将其删除。您的前端成功将项目存储在后端中。

此时,您已经有一个运行中的待办事项列表管理器,并带有几个项目。

如果您快速查看您的容器,您应该看到至少有一个正在运行的容器正在使用getting-started镜像,并在端口3000上运行。要查看容器,您可以使用CLI或Docker Desktop的图形界面。

在终端中运行以下docker ps命令来列出您的容器。

docker ps

将会显示类似以下的输出。

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
df784548666d getting-started “docker-entrypoint.s…” 2 minutes ago Up 2 minutes 127.0.0.1:3000->3000/tcp priceless_mcclintock