Docker lets you run the same stack locally and on the server. Here is a minimal configuration for a PHP project (OpenCart or WordPress).
Project layout
project/ ├── docker-compose.yml ├── .docker/ │ ├── nginx/default.conf │ └── php/Dockerfile └── public_html/ # your PHP project
Dockerfile for PHP 8.3
FROM php:8.3-fpm RUN apt-get update && apt-get install -y libzip-dev libpng-dev libjpeg-dev libwebp-dev RUN docker-php-ext-install pdo_mysql gd zip opcache RUN pecl install redis && docker-php-ext-enable redis WORKDIR /var/www/html
docker-compose.yml
services:
nginx:
image: nginx:alpine
ports: ["80:80"]
volumes:
- ./public_html:/var/www/html
- ./.docker/nginx:/etc/nginx/conf.d
depends_on: [php]
php:
build: ./.docker/php
volumes:
- ./public_html:/var/www/html
db:
image: mariadb:11
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: mydb
volumes: [db_data:/var/lib/mysql]
redis:
image: redis:alpine
volumes:
db_data:
Starting it
docker compose up -d docker compose ps # check the status
Want Docker set up on your own server? Order a Docker configuration.