🐘
Dockerfile

Jenkins PHP/Laravel Pipeline

Docker login, Ansible build, and docker-compose deploy for Laravel — Pipeline-PHP pattern

📋Configuration Files

Jenkinsfile

yaml
1pipeline {
2 agent any
3
4 environment {
5 DOCKERHUB_CREDENTIALS = credentials('dockerhub')
6 }
7
8 stages {
9 stage('Docker Login') {
10 steps {
11 sh 'echo $DOCKERHUB_CREDENTIALS_PSW | docker login -u $DOCKERHUB_CREDENTIALS_USR --password-stdin'
12 }
13 }
14 stage('Build & Push Image') {
15 steps {
16 sh """
17 cd laravel-app
18 docker build -t $DOCKERHUB_CREDENTIALS_USR/laravel-app:latest .
19 docker push $DOCKERHUB_CREDENTIALS_USR/laravel-app:latest
20 """
21 }
22 }
23 stage('Deploy with Compose') {
24 steps {
25 sh """
26 cd laravel-app
27 docker compose pull
28 docker compose up -d
29 docker compose ps
30 """
31 }
32 }
33 }
34}

laravel-app/docker-compose.yml

yaml
1services:
2 app:
3 image: youruser/laravel-app:latest
4 ports:
5 - "8080:80"
6 depends_on:
7 - db
8 environment:
9 DB_HOST: db
10 DB_DATABASE: laravel
11 DB_USERNAME: root
12 DB_PASSWORD: secret
13
14 db:
15 image: mysql:5.7
16 environment:
17 MYSQL_DATABASE: laravel
18 MYSQL_ROOT_PASSWORD: secret
19 volumes:
20 - db_data:/var/lib/mysql
21
22volumes:
23 db_data:
📄

Step 01

Run Jenkins Pipeline

(01)Configure Jenkins

Linux
1# Add Docker Hub credentials (ID: dockerhub) in Jenkins
2# Install Docker + docker-compose on Jenkins agent
3# Create Pipeline job pointing to Jenkinsfile