DevOps & Automation

Complete Guide to Docker for PHP Developers

August 12, 2025 224 views 2 min read

Introduction

Docker revolutionizes how we develop and deploy PHP applications. This comprehensive guide will get you up to speed with Docker for PHP development.

What is Docker?

Docker is a containerization platform that allows you to package applications with their dependencies into lightweight, portable containers.

Installing Docker

Install Docker Desktop for your operating system:

  • Windows/Mac: Download Docker Desktop
  • Linux: Use package manager

Creating Your First PHP Container

Dockerfile

Create a Dockerfile:

FROM php:8.1-apache

# Install PHP extensions
RUN docker-php-ext-install pdo pdo_mysql mysqli

# Copy application files
COPY . /var/www/html/

# Set permissions
RUN chown -R www-data:www-data /var/www/html

# Expose port
EXPOSE 80

Docker Compose Setup

Create docker-compose.yml:

version: "3.8"

services:
  web:
    build: .
    ports:
      - "8080:80"
    volumes:
      - .:/var/www/html
    depends_on:
      - database
    environment:
      - DB_HOST=database
      - DB_NAME=myapp
      - DB_USER=root
      - DB_PASS=secret

  database:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: secret
      MYSQL_DATABASE: myapp
    volumes:
      - db_data:/var/lib/mysql
    ports:
      - "3306:3306"

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    ports:
      - "8081:80"
    environment:
      - PMA_HOST=database
    depends_on:
      - database

volumes:
  db_data:

Essential Docker Commands

# Build and start containers
docker-compose up -d

# View running containers
docker ps

# Access container shell
docker exec -it container_name bash

# View logs
docker-compose logs web

# Stop containers
docker-compose down

Development Workflow

  1. Start development environment: docker-compose up -d
  2. Make code changes (auto-synced via volumes)
  3. Test in browser at localhost:8080
  4. Access database via phpMyAdmin at localhost:8081

Production Deployment

Multi-stage Dockerfile

# Development stage
FROM php:8.1-apache as development
RUN docker-php-ext-install pdo pdo_mysql
COPY . /var/www/html/

# Production stage
FROM php:8.1-apache as production
RUN docker-php-ext-install pdo pdo_mysql opcache
COPY --from=development /var/www/html /var/www/html
RUN chown -R www-data:www-data /var/www/html

Best Practices

  • Use official PHP images as base
  • Keep containers stateless
  • Use volumes for persistent data
  • Implement health checks
  • Use .dockerignore to exclude unnecessary files

Conclusion

Docker simplifies PHP development and deployment. Start with basic containers and gradually adopt more advanced features as needed.

Share this tutorial: