pipeline {
    agent none
    environment {
        IMAGE_NAME = 'lpt-fe-dev:0.0'
        CONTAINER_NAME = 'LPT_FE-dev'
        CONTAINER_PORT = '80'
    }
    stages {
        stage('构建 Docker 镜像') {
            agent any
            steps {
                sh 'docker build --build-arg BUILD_MODE=dev -t $IMAGE_NAME .'
            }
        }
        stage('部署容器') {
            agent any
            steps {
                sh '''
                  docker network create traefik-public || true
                  docker rm -f $CONTAINER_NAME || true
                  docker run -d --name $CONTAINER_NAME \\
                    --network traefik-public \\
                    --label "traefik.enable=true" \\
                    --label "traefik.docker.network=traefik-public" \\
                    --label 'traefik.http.routers.lpt-fe-dev.rule=Host(`lpt-dev.cat-shark.xyz`)' \\
                    --label "traefik.http.routers.lpt-fe-dev.entrypoints=websecure" \\
                    --label "traefik.http.routers.lpt-fe-dev.tls.certresolver=le" \\
                    --label "traefik.http.routers.lpt-fe-dev.service=lpt-fe-dev" \\
                    --label "traefik.http.services.lpt-fe-dev.loadbalancer.server.port=$CONTAINER_PORT" \\
                    $IMAGE_NAME
                '''
            }
        }
        stage('健康检查') {
            agent any
            steps {
                sh 'sleep 5 && docker exec $CONTAINER_NAME curl -f http://localhost:$CONTAINER_PORT/ || (docker logs $CONTAINER_NAME && exit 1)'
            }
        }
    }
}
