Docker将一个应用程序容器化:修订间差异
(创建页面,内容为“== 先决条件 == * 您已经安装了最新版本的Docker桌面版。 * 您已经安装了一个Git客户端。 * 您有一个IDE或文本编辑器来编辑文件。Docker建议使用Visual Studio Code。 == 获取应用程序 == 在运行应用程序之前,您需要将应用程序源代码获取到您的机器上。 使用以下命令克隆getting-started-app存储库: <pre>git clone https://github.com/docker/getting-started-app.git</pre> 查看克…”) |
|||
第32行: | 第32行: | ||
<p>touch Dockerfile</p></li> | <p>touch Dockerfile</p></li> | ||
<li><p>使用文本编辑器或代码编辑器,将以下内容添加到Dockerfile中:</p> | <li><p>使用文本编辑器或代码编辑器,将以下内容添加到Dockerfile中:</p> | ||
< | <pre> | ||
# syntax=docker/dockerfile:1 | |||
FROM node:18-alpine | |||
WORKDIR /app | |||
COPY . . | |||
RUN yarn install –production | |||
CMD [“node”, “src/index.js”] | |||
EXPOSE 3000</pre></li></ol> | |||
使用以下命令构建镜像: | 使用以下命令构建镜像: | ||
第39行: | 第45行: | ||
<ol style="list-style-type: decimal;"> | <ol style="list-style-type: decimal;"> | ||
<li><p>在终端中,确保您在getting-started-app目录中。将/path/to/getting-started-app替换为您getting-started-app目录的路径。</p> | <li><p>在终端中,确保您在getting-started-app目录中。将/path/to/getting-started-app替换为您getting-started-app目录的路径。</p> | ||
< | <pre>cd /path/to/getting-started-app</pre></li> | ||
<li><p>构建镜像。</p> | <li><p>构建镜像。</p> | ||
< | <pre>docker build -t getting-started .</pre></li></ol> | ||
docker build命令使用Dockerfile构建一个新的镜像。您可能已经注意到Docker下载了很多“层”。这是因为您指示构建器从node:18-alpine镜像开始构建。但是,由于您的机器上没有该镜像,Docker需要下载该镜像。 | docker build命令使用Dockerfile构建一个新的镜像。您可能已经注意到Docker下载了很多“层”。这是因为您指示构建器从node:18-alpine镜像开始构建。但是,由于您的机器上没有该镜像,Docker需要下载该镜像。 |
2023年8月15日 (二) 09:03的版本
先决条件
- 您已经安装了最新版本的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。
确保您在getting-started-app目录中。将/path/to/getting-started-app替换为您getting-started-app目录的路径。
cd /path/to/getting-started-app
创建一个名为Dockerfile的空文件。
touch Dockerfile
使用文本编辑器或代码编辑器,将以下内容添加到Dockerfile中:
# syntax=docker/dockerfile:1 FROM node:18-alpine WORKDIR /app COPY . . RUN yarn install –production CMD [“node”, “src/index.js”] EXPOSE 3000
使用以下命令构建镜像:
在终端中,确保您在getting-started-app目录中。将/path/to/getting-started-app替换为您getting-started-app目录的路径。
cd /path/to/getting-started-app
构建镜像。
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 |