diff --git a/05_container/5.3_stop.md b/05_container/5.3_stop.md index 3828006..36b183b 100644 --- a/05_container/5.3_stop.md +++ b/05_container/5.3_stop.md @@ -212,7 +212,7 @@ FROM node:22-alpine CMD ["node", "server.js"] ``` -> **版本说明**:示例使用 `node:22-alpine`,这是一个精简的 Node.js 22 版本镜像。可根据需求替换为其他版本(如 `node:20-alpine`、`node:latest`)。 +> **版本说明**:示例使用 `node:22-alpine`,这是一个精简的 Node.js 22 版本镜像。可根据需求替换为其他版本(如 `node:24-alpine`、`node:latest`)。 #### Q:容器无法停止 diff --git a/07_dockerfile/7.10_workdir.md b/07_dockerfile/7.10_workdir.md index 42e1297..7320f7b 100644 --- a/07_dockerfile/7.10_workdir.md +++ b/07_dockerfile/7.10_workdir.md @@ -82,9 +82,9 @@ RUN pwd # 输出 /app ```docker ## 构建阶段 -## 建议使用 node:20 或 node: 等具体版本标签,避免使用 latest +## 建议使用 node:22 或 node: 等具体版本标签,避免使用 latest -FROM node:20 AS builder +FROM node:22 AS builder WORKDIR /build COPY package*.json ./ RUN npm install @@ -105,8 +105,8 @@ COPY --from=builder /build/dist . #### 1. 尽早设置 WORKDIR ```docker -# 建议使用 node:20 等主/次版本号标签 -FROM node:20 +# 建议使用 node:22 等主/次版本号标签 +FROM node:22 WORKDIR /app # 尽早设置 COPY package*.json ./ diff --git a/07_dockerfile/7.11_user.md b/07_dockerfile/7.11_user.md index 8616486..eb45d95 100644 --- a/07_dockerfile/7.11_user.md +++ b/07_dockerfile/7.11_user.md @@ -35,7 +35,7 @@ flowchart LR #### 创建并切换用户 ```docker -FROM node:20-alpine +FROM node:22-alpine ## 1. 创建用户和组 @@ -173,7 +173,7 @@ $ docker run -u root myimage 切换用户后,确保应用有权访问文件: ```docker -FROM node:20-alpine +FROM node:22-alpine ## 创建用户 @@ -229,14 +229,14 @@ USER 1000:1000 ```docker ## 构建阶段可以用 root -FROM node:20 AS builder +FROM node:22 AS builder WORKDIR /app COPY . . RUN npm install && npm run build ## 生产阶段用非 root -FROM node:20-alpine +FROM node:22-alpine RUN adduser -D appuser WORKDIR /app COPY --from=builder --chown=appuser:appuser /app/dist . diff --git a/07_dockerfile/7.13_onbuild.md b/07_dockerfile/7.13_onbuild.md index 6d9875e..a83aaf0 100644 --- a/07_dockerfile/7.13_onbuild.md +++ b/07_dockerfile/7.13_onbuild.md @@ -30,7 +30,7 @@ ONBUILD <其它指令> **基础镜像 (my-node-base)**: ```docker -FROM node:20-alpine +FROM node:22-alpine WORKDIR /app ## 这些指令将在子镜像构建时执行 @@ -126,7 +126,7 @@ ONBUILD COPY dist/ /usr/share/nginx/html/ 建议在镜像标签中添加 `-onbuild` 后缀,明确告知使用者该镜像包含触发器。 ```bash -node:20-onbuild +node:22-onbuild python:3.12-onbuild ``` diff --git a/07_dockerfile/7.18_multistage_builds_laravel.md b/07_dockerfile/7.18_multistage_builds_laravel.md index 6fdc79e..0fa4897 100644 --- a/07_dockerfile/7.18_multistage_builds_laravel.md +++ b/07_dockerfile/7.18_multistage_builds_laravel.md @@ -60,8 +60,8 @@ server { 第一阶段进行前端构建。 ```docker -# 注:node 镜像推荐使用具体的版本标签(如 node:20-alpine) -FROM node:20-alpine as frontend +# 注:node 镜像推荐使用具体的版本标签(如 node:22-alpine) +FROM node:22-alpine as frontend COPY package.json /app/ @@ -179,8 +179,8 @@ $ docker run -dit --rm --network=laravel -p 8080:80 my/nginx 完整的 `Dockerfile` 文件如下。 ```docker -# 注:生产环境推荐使用具体的版本标签,如 node:20-alpine、composer:2.x、php:8.3-fpm-alpine、nginx:1.30-alpine -FROM node:20-alpine as frontend +# 注:生产环境推荐使用具体的版本标签,如 node:22-alpine、composer:2.x、php:8.3-fpm-alpine、nginx:1.30-alpine +FROM node:22-alpine as frontend COPY package.json /app/ diff --git a/07_dockerfile/7.2_copy.md b/07_dockerfile/7.2_copy.md index 6b8cedb..22bd032 100644 --- a/07_dockerfile/7.2_copy.md +++ b/07_dockerfile/7.2_copy.md @@ -178,7 +178,7 @@ ADD app.tar.gz /app/ ```docker ## 构建阶段 -FROM node:20 AS builder +FROM node:22 AS builder WORKDIR /app COPY package*.json ./ RUN npm install diff --git a/07_dockerfile/7.7_arg.md b/07_dockerfile/7.7_arg.md index 7db22c9..65e7c56 100644 --- a/07_dockerfile/7.7_arg.md +++ b/07_dockerfile/7.7_arg.md @@ -93,14 +93,14 @@ RUN echo "Node version: $NODE_VERSION" ```docker ARG BASE_VERSION=alpine -FROM node:20-${BASE_VERSION} AS builder +FROM node:22-${BASE_VERSION} AS builder ## 需要重新声明 ARG NODE_VERSION=20 RUN echo "Building with Node $NODE_VERSION" -FROM node:20-${BASE_VERSION} +FROM node:22-${BASE_VERSION} ## 每个阶段都需要重新声明 diff --git a/07_dockerfile/README.md b/07_dockerfile/README.md index d17acdd..c6300e2 100644 --- a/07_dockerfile/README.md +++ b/07_dockerfile/README.md @@ -80,7 +80,7 @@ docker build -t my-image:1.0 . 本章中的 Dockerfile 示例使用的基础镜像标签遵循以下原则: - **通用标签**(如 `ubuntu:24.04`、`alpine`、`nginx`):保持原样,无需修改 -- **基础镜像版本号**(如 `node:20`、`python:3.12`):使用主或次版本号而非完整版本号(patch),这样可以自动获取最新的补丁版本,确保获得安全更新 +- **基础镜像版本号**(如 `node:22`、`python:3.12`):使用主或次版本号而非完整版本号(patch),这样可以自动获取最新的补丁版本,确保获得安全更新 - **避免**:不建议使用 `latest` 标签和完整的 patch 版本号(如 `20.10.0`)作为基础镜像,因为这会导致构建的不可重现性或安全风险 读者在使用这些示例时,应根据实际生产环境需求选择合适的版本号。 diff --git a/12_implementation/12.4_ufs.md b/12_implementation/12.4_ufs.md index 791160f..b6f921f 100644 --- a/12_implementation/12.4_ufs.md +++ b/12_implementation/12.4_ufs.md @@ -41,7 +41,7 @@ flowchart TD 每个 Dockerfile 指令创建一层,只有变化的层需要重建: ```docker -FROM node:20 # 层1:基础镜像 +FROM node:22 # 层1:基础镜像 COPY package.json ./ # 层2:依赖定义 RUN npm install # 层3:安装依赖 COPY . . # 层4:应用代码 diff --git a/appendix/repo/nodejs.md b/appendix/repo/nodejs.md index 8f50b25..a5b61a9 100644 --- a/appendix/repo/nodejs.md +++ b/appendix/repo/nodejs.md @@ -11,7 +11,7 @@ 在项目中创建一个 Dockerfile。 ```docker -FROM node:20 +FROM node:22 ## replace this with your application's default port @@ -32,7 +32,7 @@ $ docker run -it --rm \ --mount type=bind,src="$(pwd)",target=/usr/src/myapp \ -w /usr/src/myapp \ - node:20-alpine \ + node:22-alpine \ node your-daemon-or-script.js ```