公司有个python项目需要部署,之前没有部署过python项目,记录一下。
步骤
(1) 生成requirements.txt
pip freeze > requirements.txt
(2) dockerfile编写
#项目使用的是python3.8的解释器
FROM python:3.8
#切换一下镜像源
RUN pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
# 设置工作目录
WORKDIR /data/data-service
# 复制项目文件到容器中
COPY ./ /data/data-service
#加载第三方依赖
RUN pip install -r requirements.txt
#项目端口号
EXPOSE 12580
#时区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
#这里没有用CMD是因为编写了一个.sh启动脚本
ENTRYPOINT ["python", "webserver.py"]
启动脚本如下:
#! /bin/bash
pjname=$1
path=/usr/local/docker/$pjname
Port=
for i in ${@:2}
do
Port="$Port -p $i:$i"
done
cd $path
pwd
docker stop $pjname
docker rm $pjname
docker rmi $pjname:latest
docker build -t $pjname .
mkdir /usr/local/docker/$pjname/log
docker run -d --net host --restart=always $Port -v /usr/local/docker/$pjname/log/:/data/$pjname/log/ --name $pjname $pjname:latest --dockername=$pjname
docker logs -f --since 1m $pjname & { sleep 30; kill $! & }
echo -e "\033[34m Only the first 30s logs are displayed here \033[0m"
echo -e "\033[34m Only the first 30s logs are displayed here \033[0m"
echo -e "\033[34m Only the first 30s logs are displayed here \033[0m"
参考文章: