pipeline { agent { docker { image 'docker:latest' args '-v /var/run/docker.sock:/var/run/docker.sock' } } stages { stage('Build Docker Image') { steps { script { def imageName = "python-jenkins-project:${BUILD_NUMBER}" docker.build(imageName, '.') env.IMAGE_NAME = imageName } } } stage('Deploy Docker Container') { steps { script { sh """ docker stop python-jenkins-container || true docker rm python-jenkins-container || true docker run -d -p 5555:80 --name python-jenkins-container ${env.IMAGE_NAME} """ } } } stage('Verify Deployment') { steps { script { retry(3) { // Retry up to 3 times sh """ curl --fail http://38.110.1.139:5555 """ } } } } } post { always { script { sh """ docker network connect host python-jenkins-container docker exec python-jenkins-container sed -i 's/listen 80 default_server;/listen 80 default_server; server_name python.jacquesingram.online;/' /etc/nginx/conf.d/default.conf docker exec python-jenkins-container nginx -s reload """ } } } }