User Tools

Site Tools


php:docker-php-dev

Docker PHP Dev

https://github.com/TrafeX/docker-php-nginx

git clone https://github.com/TrafeX/docker-php-nginx
docker-compose.yml
services:
  php-dev:
    image: php-dev:latest
    build: 
      context: . 
      no_cache: true
    container_name: php-dev
    restart: unless-stopped
    environment:
      - PUID=1016
      - PGID=1016
      - TZ=Europe/London
    ports:
      - 7081:8080
    volumes:
      - /opt/php-dev/html:/var/www/html
        #- /opt/php-dev/conf/php.ini:/etc/php84/conf.d/settings.ini
      #- /opt/php-dev/conf/php-fpm.conf:/etc/php84/php-fpm.d/server.conf

Create custom php.ini if required:

config/php.ini
[PHP]
allow_url_fopen=On

max_execution_time = 600

[Date]
date.timezone="UTC"
expose_php= Off

Adjust Dockerfile to add/remove any extensions as required. E.g.:

RUN apk add --no-cache \
  curl \
  nginx \
  php84 \
  php84-ctype \
  php84-curl \
  php84-dom \
  php84-fileinfo \
  php84-fpm \
  php84-intl \
  php84-mbstring \
  php84-opcache \
  php84-phar \
  php84-session \
  php84-tokenizer \
  php84-xml \
  php84-xmlreader \
  php84-xmlwriter \
  php84-sqlite3 \
  php84-mysqli \
  supervisor

Add mysql docker if required:

name: php-dev-mysql
services:
  energystats2-mysql:
    image: yobasystems/alpine-mariadb
    container_name: php-dev-mysql
    environment:
      MYSQL_ROOT_PASSWORD: rootpassword
      MYSQL_DATABASE: database
      MYSQL_USER: username
      MYSQL_PASSWORD: password
      MYSQL_CHARSET: utf8
      MYSQL_COLLATION: utf8_general_ci
    expose:
      - "3306"
    ports:
      - 13306:3306/tcp
    volumes:
      - /opt/php-dev-mysql-storage/data:/var/lib/mysql
      # - /opt/php-dev-mysql-storage/logs:/var/lib/mysql/mysql-bin
      - /opt/php-dev-mysql-storage/conf/my.cnf:/etc/my.cnf
      # - /opt/php-dev-mysql-storage/conf/mariadb-server.cnf:/etc/my.cnf.d/mariadb-server.cnf
php/docker-php-dev.txt · Last modified: 2025/04/13 10:19 by Wulf Rajek