打包项目到docker中便于部署
注意事项
1.不要使用office软件提供的功能,例如ppt自带的ppt转pdf功能,这样不好部署到docker中。
2.注意部署环境,例如dlib库需要cmake工具来构建,而cmake的安装有多种方式,例如visual studio,例如apt-get,请使用apt-get等类似的安装方式,并且放到dockerfile中。(例如python安装dlib无法使用pip安装的cmake,需要visual studio的camke,考虑到docker部署,则需要单独使用apt-get安装对应的依赖。)
3.注意端口别被占用,脚本文件只会关闭container,如果端口不是container占用,则需要释放端口。
auto-deploy.bat/auto-deploy.sh
自动部署脚本auto-deploy.bat
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| @echo off echo Pulling Docker image... docker pull python:3.10-slim-bookworm
echo Building Docker image... docker build -t tool-app .
echo Stopping existing container... docker stop tool-app-container 2>nul docker rm tool-app-container 2>nul
echo Starting new container... docker run -d -p 15000:15000 --name tool-app-container tool-app
echo Done. pause
|
auto-deploy.sh
1 2 3 4 5 6 7 8 9 10 11 12
| #!/bin/bash docker pull python:3.10-slim-bookworm
docker build -t tool-app .
docker stop tool-app-container || true docker rm tool-app-container || true
docker run -d -p 15000:15000 tool-app
|
单独使用docker pull是因为dockerfile执行docker pull会报超时,即使换源也会超时,所以先单独把镜像docker pull下来,这样dockerfile执行时就不会在报错了。
dockerfile
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| FROM python:3.10-slim-bookworm
RUN mkdir /app
WORKDIR /app
RUN echo "deb https://mirrors.aliyun.com/debian/ bookworm main non-free contrib" > /etc/apt/sources.list \ && echo "deb-src https://mirrors.aliyun.com/debian/ bookworm main non-free contrib" >> /etc/apt/sources.list
RUN apt-get update -o Acquire::http::Max-Parallel-Connections=10 \ && apt-get install -y \ cmake \ build-essential \ libopenblas-dev \ liblapack-dev \ libopencv-dev \ git
RUN apt-get clean && rm -rf /var/lib/apt/lists/*
COPY requirements.txt ./
RUN pip install --no-cache-dir --index-url https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
COPY . .
EXPOSE 15000
CMD ["uvicorn","app:app","--host","0.0.0.0","--port","15000"]
|