42 lines
1.6 KiB
Plaintext
42 lines
1.6 KiB
Plaintext
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)'
|
|
}
|
|
}
|
|
}
|
|
}
|