Complete Guide to Docker for PHP Developers
August 12, 2025
223 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
- Start development environment:
docker-compose up -d
- Make code changes (auto-synced via volumes)
- Test in browser at localhost:8080
- 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.