Level 2
Installing PHP Opcache made a big difference...
Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.
Dockerfile
FROM php:8.1-fpm
# Arguments defined in docker-compose.yml
ARG user
ARG uid
ARG NODE_VERSION=16
# Install system dependencies
RUN apt-get update && apt-get install -y \
git \
curl \
libpng-dev \
libonig-dev \
libxml2-dev \
libzip-dev \
zip \
unzip
# Clear cache
RUN apt-get clean && rm -rf /var/lib/apt/lists/*
# Install PHP extensions
RUN docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd zip
# Get latest Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
RUN apt-get update && apt-get install -y \
libmagickwand-dev --no-install-recommends && rm -rf /var/lib/apt/lists/* \
&& pecl install imagick \
&& docker-php-ext-enable imagick \
&& curl -sL https://deb.nodesource.com/setup_$NODE_VERSION.x | bash - \
&& apt-get install -y nodejs \
&& npm install -g npm
RUN apt-get update && apt-get install -y ghostscript
RUN sed -i 's/policy domain="coder" rights="none" pattern="PDF"/policy domain="coder" rights="read|write" pattern="PDF"/' /etc/ImageMagick-6/policy.xml
COPY ./php/uploads.ini /usr/local/etc/php/conf.d/uploads.ini
RUN sed -i 's/9000/9005/' /usr/local/etc/php-fpm.d/zz-docker.conf
# Create system user to run Composer and Artisan Commands
RUN useradd -G www-data,root -u $uid -d /home/$user $user
RUN mkdir -p /home/$user/.composer && \
chown -R $user:$user /home/$user
# Set working directory
WORKDIR /var/www/html
USER $user
docker-compose.yml
version: "3.7"
services:
baseline-app:
build:
args:
user: sammy
uid: 1000
context: ./
dockerfile: Dockerfile
image: baseline-1
container_name: baseline-app
restart: unless-stopped
working_dir: /var/www/html/
volumes:
- web-root:/var/www/html
ports:
- "9005:9000"
networks:
- baseline
baseline-db:
image: mysql/mysql-server:8.0
container_name: baseline-db
restart: unless-stopped
tty: true
ports:
- "3310:3306"
environment:
MYSQL_DATABASE: ${DB_DATABASE}
MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
MYSQL_PASSWORD: ${DB_PASSWORD}
MYSQL_USER: ${DB_USERNAME}
SERVICE_TAGS: dev
SERVICE_NAME: mysql
volumes:
- ./mysql:/etc/mysql/conf.d/
- ./mysqlinit:/docker-entrypoint-initdb.d
- mysqldata:/var/lib/mysql
networks:
- baseline
baseline-nginx:
image: nginx:1.21-alpine
container_name: baseline-nginx
tty: true
restart: unless-stopped
ports:
- "8009:80"
volumes:
- web-root:/var/www/html
- ./nginx:/etc/nginx/conf.d/
depends_on:
- baseline-app
networks:
- baseline
networks:
baseline:
driver: bridge
# Volumes
volumes:
mysqldata:
web-root:
driver: local
driver_opts:
type: none
device: /home/sammy/app/src/
o: bind
i have already ran the following commands:
composer install --optimize-autoloader --no-dev
php artisan config:cache
php artisan route:cache
php artisan view:cache
What do I need to speed up the app ?
Installing PHP Opcache made a big difference...
Please or to participate in this conversation.