test示例:
docker run --rm -p 8200:8200 -v ~/seacode/:/opt/ python:3.10.17-slim /
/bin/bash -c "pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --default-timeout=1000 --no-cache-dir -r /opt/requirements.txt &&cd opt && python /opt/seaApp.py"
pd:
docker run -itd --restart=unless-stopped -p 8200:8200 -v ~/seacode/:/opt/ python:3.10.17-slim / /bin/bash -c "pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --default-timeout=1000 --no-cache-dir -r /opt/requirements.txt &&cd opt && python /opt/seaApp.py"
jenkins 示例:
set -e date_tag=`date +%Y%m%d_%H%M%s` Local_DIR=`pwd` Dest_DIR=/opt/jenkins_project/${date_tag} mkdir -v ${Dest_DIR} SERVICE_NAME=dev-acct-ai-report echo ${SERVICE_NAME} cp -r ${Local_DIR}/* ${Dest_DIR} # 打包,不包含目录 tar -cvzf ${SERVICE_NAME}.tar.gz -C ${Dest_DIR} . echo "SERVICE_NAME=${SERVICE_NAME}" >> ${Local_DIR}/imageName rm -rf ${Dest_DIR}
!!!!!!!!!!!! 系统生成的文件夹 __pycache__ 是root 用户组的,当前用户没有权限删除, 最终方案, 不删除, 直接覆盖有效文件
ssh shell:
set -e echo $SERVICE_NAME echo ${IS_ADD_IMPORT} mkdir -p $SERVICE_NAME # __pycache_ 删除不掉
#chmod -R 777 $SERVICE_NAME #rm -rf $SERVICE_NAME/* ####### prepare data ############ chmod 777 ${SERVICE_NAME}.tar.gz mv ${SERVICE_NAME}.tar.gz ${SERVICE_NAME} cd ${SERVICE_NAME} tar -zxf ${SERVICE_NAME}.tar.gz ######如果不需要下载依赖(时间比较久),到这里直接重启容器###### if [ "${IS_ADD_IMPORT}" = "0" ]; then echo "没有新添加依赖,更新代码,重启容器" docker restart ${SERVICE_NAME} else echo "新添加依赖,需要下载依赖,重新构建容器" ######## run docker ##### # stop 避免无法修改文件,被占用 echo "Stop old container if exist" docker stop $SERVICE_NAME || true sleep 3 docker rm $SERVICE_NAME || true sleep 3 echo "Download the latest image" #docker pull ${IMAGE} echo "Start create container" ######## 这里需要修改 主类 or --net=host -p80:81 ######### #### cd /opt 需要到主类下,避免导入依赖错误 docker run -itd --restart=unless-stopped -p8200:8000 --name=${SERVICE_NAME} -u $(id -u):$(id -g) -v ~/${SERVICE_NAME}/:/opt/ python:3.10.17-slim /bin/bash -c "pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --default-timeout=1000 --no-cache-dir -r /opt/requirements.txt &&cd /opt/code && python /opt/code/ReportApp.py" echo "End create container" fi