1. 编写 Dockerfile 文件
# 使用轻量级的 Nginx Alpine 作为基础镜像
FROM nginx:alpine# 设置工作目录
WORKDIR /usr/share/nginx/html# 删除默认的 Nginx 静态文件
RUN rm -rf ./*# 复制本地 dist 目录下的文件到容器中
COPY ./dist /usr/share/nginx/html# 暴露容器端口
EXPOSE 80
2. 构建 Docker 镜像
docker build -t images-name:tag .
参数/选项 | 说明 |
---|
-t | 为镜像指定名称和标签 |
images-name | 自定义的镜像名称 |
:tag | 镜像标签(如 :v1.0, :latest) |
. | 指定 Dockerfile 所在目录(当前目录) |
3. 运行容器
docker run -d -p 21002:80 --name container-name images-name:tag
参数/选项 | 说明 |
---|
-d | 后台运行容器(detached 模式) |
-p | 端口映射(主机端口:容器端口) |
21002:80 | 将主机的 21002 端口映射到容器的 80 端口 |
--name | 为容器指定一个名称 |
container-name | 自定义的容器名称 |
images-name:tag | 要运行的镜像名称和标签 |
如果不指定容器名称,则--name container-name
可以去掉
4. 常用管理命令
docker ps
docker ps -a
docker stop container-name
docker start container-name
docker rm container-name
docker rmi images-name:tag
docker logs container-name
5. 最佳实践建议
- 多阶段构建:对于复杂项目,考虑使用多阶段构建减小镜像体积
- .dockerignore:创建
.dockerignore
文件排除不必要的文件 - 版本标签:避免使用
latest
标签,推荐使用语义化版本 - 健康检查:添加 HEALTHCHECK 指令确保应用健康
- 非 root 用户:考虑使用非 root 用户运行容器增强安全性
6. 多阶段构建示例(适用于复杂前端项目)
# 构建阶段
FROM node:alpine as builder
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build# 生产阶段
FROM nginx:alpine
COPY --from=builder /app/dist /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]