背景
- 构建docker镜像, 但是只需要将code复制进去, 训练的模型和配置的环境apikey不能构建在镜像中, 需要再启动容器的时候在进行同步进去, 这样在后续的模型优化和apikey跟换过程中就比较方便了, 不需要重新构建镜像.
Dockerfile编写
FROM ppclas_cpu:latest
RUN mkdir -p /app
WORKDIR /app
COPY src /app
EXPOSE 5000
CMD ["/usr/local/bin/gunicorn", "-c", "gunicorn_cfg.py", "app:app"]
dokcerignore文件
src/models
.env
src/.env
即在构建镜像复制文件的时候, 忽略掉这些文件
构建镜像
docker build -t ppclas_cpu:20241126 -f Dockerfile .
说明: 执行的位置是需要再Dockerfile当前目录下
构建容器
- 检查构建的容器中是否缺少对应的文件, 并启动进行测试
cd src/
docker run -it -v $(pwd)/.env:/app/.env -v $(pwd)/models:/app/models --name ppcls -p 18152:5000 ppclas_cpu:20241126 /bin/bash
/usr/local/bin/gunicorn -c gunicorn_cfg.py app:app
说明: 启动对应的app之后, 利用对应的请求文件进行测试, 如果有返回结果这启动正常
- 正式启动环境
cd src/
docker run -d -v $(pwd)/.env:/app/.env -v $(pwd)/models:/app/models --name ppcls -p 18152:5000 ppclas_cpu:20241126
/usr/local/bin/gunicorn -c gunicorn_cfg.py app:app
说明: 这样就在后台启动好了已经部署的app, 直接提供接口进行请求即可