python打包

需求:在10.100.20.202传输文件到10.100.20.204 然后dockerfile 构建,run运行

Dockerfile

[root@java /deploy/app/qmzs-api-test/py/open-psp-ai]$ cat Dockerfile 
FROM python:3.10-slim
WORKDIR /app

COPY . /app
RUN pip install --no-cache-dir uvicorn fastapi openai

ENV PYTHONUNBUFFERED=1
ENV TECENT_API_KEY="sk-pLYhchP9avWgp2YwIIdyX1N49jbxxcvYXJXaIDfBAIpVmYzH"
ENV TECENT_BASE_URL="https://api.lkeap.cloud.tencent.com/v1"
ENV VOLC_API_KEY="d09f7438-1f7b-4fc1-a6b3-7e798f53ba56"
ENV VOLC_BASE_URL="https://ark.cn-beijing.volces.com/api/v3/bots"
ENV VOLC_MODEL_INTERNET="bot-20250220170138-v2zkq"
ENV VOLC_MODEL_PURE="bot-20250220175939-t8zxx"

CMD ["uvicorn", "ai_api:app", "--host", "0.0.0.0", "--port", "8000"]
EXPOSE 8000

jenkins pipeline

def createVersion() {
    // 定义一个版本号作为当次构建的版本,输出结果 年月日_构建ID
    return new Date().format('yyyyMMdd') + "_${env.BUILD_ID}"
}

pipeline {
    agent any

    // 在 environment 引入上边定义的函数,以便于全局调用
    environment {
        VERSION = createVersion()
        PROJECT = "open-psp-ai"
        sup = "qmzs-" + "${PROJECT}"
        ENV = "qmzs-api-test"
        SERVER_LIST = "10.100.20.204"
        DEPLOY_PATH = "/deploy/app/qmzs-api-test/py/open-psp-ai/"
        SSH_USER = "root"  
    }

    stages {
        stage('拉取代码') {
            steps {
                git branch: '${branch}',
                    credentialsId: '5c86e7a5-8db3-4ca9-8398-1322e0e8fae6',
                    url: 'http://101.69.246.86:18099/edu-ms/open-psp-ai.git'
            }
        }

        stage('传输文件到远程服务器') {
            steps {
                script {
                    // 使用 scp 或 rsync 将构建产物传输到远程服务器
                    sh """
                        scp -r . ${SSH_USER}@${SERVER_LIST}:${DEPLOY_PATH}
                    """
                }
            }
        }

        stage('在远程服务器上停止并移除旧容器') {
            steps {
                script {
                    // 停止并移除之前的容器(如果存在)
                    sh """
                        ssh ${SSH_USER}@${SERVER_LIST} '
                        if [ \$(docker ps -q -f "name=py-dev") ]; then
                            docker stop py-dev
                            docker rm py-dev
                        fi
                        '
                    """
                }
            }
        }

        stage('在远程服务器上构建 Docker 镜像') {
            steps {
                script {
                    // SSH 到远程服务器,构建 Docker 镜像
                    sh """
                        ssh ${SSH_USER}@${SERVER_LIST} 'cd ${DEPLOY_PATH} && docker build -t py-dev:${VERSION} .'
                    """
                }
            }
        }

        stage('在远程服务器上运行 Docker 容器') {
            steps {
                script {
                    // SSH 到远程服务器,运行 Docker 容器
                    sh """
                        ssh ${SSH_USER}@${SERVER_LIST} 'docker run -d -p 8000:8000 --name py-dev-${VERSION} py-dev:${VERSION}'
                    """
                }
            }
        }
    }

    post {
        success {
            echo "部署成功!"
        }
        failure {
            echo "部署失败!"
        }
    }
}
0 子项 · 2 次浏览 · 2026-09-16