给一个python项目写dockerfile
选用的基础镜像
python:3.11
python:3.11-slim
python:3.11-alpine
alpine对PaddlePaddle不兼容
复制文件到 /app 文件夹下面
docker里面每一行命令都是基于前一个命令执行之后的容器文件新开一个容器
使用WORKDIR可以将后面的容器目录cd到该目录后面
opencv系统依赖
# 安装OpenCV依赖的系统库
RUN apt-get update && apt-get install -y \
libgl1 \
libglib2.0-0 \
libsm6 \
libxext6 \
libgomp1 \
libjpeg-dev \
libpng-dev \
libtiff-dev \
libwebp-dev \
&& rm -rf /var/lib/apt/lists/*
关键依赖解释:
- libgl1 - OpenGL支持(GUI功能)
- libglib2.0-0 - GLib库
- libsm6, libxext6, libxrender-dev - X11图形库
- libgomp1 - OpenMP并行计算
- libgtk-3-dev - GTK库(GUI界面)
- libavcodec-dev, libavformat-dev, libswscale-dev - 视频编解码库
- libjpeg-dev, libpng-dev, libtiff-dev, libwebp-dev - 图像格式支持
最小化安装(如果不需要GUI功能):
RUN apt-get update && apt-get install -y \
libgl1 \
libglib2.0-0 \
libsm6 \
libxext6 \
libgomp1 \
&& rm -rf /var/lib/apt/lists/*
可以先创建虚拟环境,然后用
然后安装一下需要的包,最好使用
pip freeze > requirements.txt
保存下依赖
之后在dockerfile里面可以在copy完之后将依赖下载一下
最后可以使用CMD命令作为启动容器的默认命令,来起一个程序
使用
docker build -t name:tag .
来构建镜像
使用
docker images
来查看镜像
使用
docker run -d -p port:port --name name image:tag
来启动镜像
常用参数:
- -d:后台运行
- -p 8000:8000:端口映射(主机端口:容器端口)
- --name my-container:给容器命名
- -v /host/path:/container/path:挂载目录
- -e ENV_VAR=value:设置环境变量
示例:
FROM python:3.11-slim
COPY . /app
WORKDIR /app
# 安装opencv依赖系统库
RUN apt-get update && apt-get install -y \
libgl1 \
libglib2.0-0 \
libsm6 \
libxext6 \
libgomp1 \
libjpeg-dev \
libpng-dev \
libtiff-dev \
libwebp-dev \
&& rm -rf /var/lib/apt/lists/*
RUN pip install -r requirements.txt
EXPOSE 18689
CMD ["python", "ocr_service.py"]
FROM python:3.11-slim
COPY . /app
WORKDIR /app
RUN pip install -r requirements.txt
EXPOSE 7373
CMD ["python", "main.py"]
当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »