准备工作
创建Dockerfile
# 指定基础镜像
FROM python:3.9-slim
# 设置工作目录
WORKDIR /app
# 复制文件到容器
COPY requirements.txt .
COPY . .
# 安装依赖
RUN pip install --no-cache-dir -r requirements.txt
# 暴露端口
EXPOSE 8000
# 定义启动命令
CMD ["python", "app.py"]
构建镜像
docker build -t my-app:1.0 .
验证镜像
docker images
docker run -p 8000:8000 my-app:1.0
多阶段构建 (减少最终镜像大小)
# 构建阶段
FROM node:14 AS build
WORKDIR /app
COPY . .
RUN npm install && npm run build
# 生产阶段
FROM nginx:alpine
COPY --from=build /app/dist /usr/share/nginx/html
EXPOSE 80
使用.dockerignore文件 (排除不必要的文件)
node_modules
.git
*.log
*.md
镜像标签管理
docker tag my-app:1.0 my-registry.com/my-app:1.0
docker push my-registry.com/my-app:1.0
安全性考虑
性能优化
调试技巧
# 进入运行中的容器
docker exec -it <container-id> /bin/bash
# 查看容器日志
docker logs <container-id>
# 检查镜像构建历史
docker history <image-name>
构建缓存问题
--no-cache
选项强制重新构建docker build --no-cache -t my-app:1.0 .
时区设置
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
中文支持
ENV LANG C.UTF-8
通过以上步骤和技巧,您可以高效地创建优化的Docker镜像,满足不同场景下的容器化需求。