安装 Docker
官方地址: www.docker.com/products/do…
验证是否安装成功:
docker --version
在项目根目录创建 Dockerfile
路径:docker-demo/Dockerfile
# 构建阶段
FROM hub.rat.dev/library/node:22-alpine AS build
# 安装 pnpm
RUN npm install -g pnpm
WORKDIR /app
# 复制依赖清单(注意这里换成了 pnpm-lock.yaml)
COPY package.json pnpm-lock.yaml ./
# 安装依赖
RUN pnpm install --frozen-lockfile
# 复制源码
COPY . .
# 执行打包(现代项目通常输出到 dist 目录,请根据你实际情况确认)
RUN pnpm run build
# 运行阶段
FROM hub.rat.dev/library/nginx:alpine
# 注意:pnpm/Vite 项目默认打包后的文件夹通常是 /app/dist 而不是 /app/build
COPY --from=build /app/dist /usr/share/nginx/html
注意:
hub.rat.dev/library 这个是镜像,有可能链接不成功,可能需要借助AI工具不同的调试一个能用的
构建镜像
在 docker-demo 目录执行:
docker build -t docker-demo .
docker build:告诉 Docker 开始构建镜像-t:Tag 的缩写,用来给镜像起名docker-demo:你给这个镜像起的名字.:构建上下文(Build Context)
重点关注那个“点” (.)
很多人以为这个 . 代表“在当前目录找 Dockerfile”,但这只是它的副作用。
- 它的真实含义: 告诉 Docker,把当前文件夹下的所有文件都打包发送给 Docker 引擎。
- 为什么需要它: 还记得你 Dockerfile 里的
COPY . .吗?如果没有这个.,Docker 就不知道去哪里找你的源代码、package.json和dist文件夹。
注意: 如果你的当前目录下有几个 GB 的无用数据(比如超大的日志文件或视频),这步会变得非常慢。这时就需要添加
.dockerignore文件。
node_modules
dist
.git
.gitignore
Dockerfile
.dockerignore
npm-debug.log*
pnpm-debug.log*
yarn-debug.log*
yarn-error.log*
启动容器
docker run -d -p 3000:80 --name docker-container docker-demo
docker run:创建并启动一个新容器-d:Detached(分离模式),在后台悄悄运行。如果不加这个,你的终端会被日志刷屏,且关掉终端容器就停了。-p 3000:80:Publish(端口映射),关键点: 把你电脑(宿主机)的 3000 端口指向容器内部的 80 端口。--name docker-caontainer:给容器起个名字,以后通过这个名字管理它(重启/关闭),不用记那串乱码一样的 ID。docker-demo:使用哪个镜像,刚才用docker build出来的那个镜像名字。
访问应用
浏览器打开:
http://localhost:3000
查看运行状态
docker ps
这是 Docker 最常用的“点名”命令。
ps: 来自 Unix 命令,意思是 Process Status(进程状态)。- 作用:列出当前正在运行的所有容器。
- 你会看到什么:
- CONTAINER ID: 容器的身份证。
- IMAGE: 用的哪个镜像。
- STATUS: 运行了多久(Up 5 minutes)。
- PORTS: 端口映射关系(比如
0.0.0.0:3000->80/tcp)。 - NAMES: 你刚才起的那个
react-container。
停止并删除容器
docker stop react-container
docker rm react-container
Docker可视化工具
构建镜像一个镜像后,后续启动和停止都可以通过可视化操作
win下可能出现如下报错
报错一
解决办法:
-
用管理员权限打开命令行 开始菜单 → 搜索
cmd→ 右键 → 以管理员身份运行 -
修改目录所有者 执行:
takeown /f "C:\ProgramData\DockerDesktop" /r /d y
3. 赋予管理员完全权限
icacls "C:\ProgramData\DockerDesktop" /grant administrators:F /t
4. 如果目录异常,直接删除(更干净)
rmdir /s /q "C:\ProgramData\DockerDesktop"
5. 重新安装 右键安装包 → 以管理员身份运行 安装 Docker Desktop
本质原因: 之前安装/卸载残留导致该目录归属错误(可能属于普通用户或 SYSTEM),安装程序要求管理员拥有。
报错二
WSL 版本过旧
用管理员权限打开 PowerShell,执行:
wsl --update
执行完成后,重启电脑。