====== Docker PHP Dev ======
https://github.com/TrafeX/docker-php-nginx
PHP,nginx,mariadb combo docker compose file with default innodb (155mb base conf dir size):
services:
php-dev:
image: trafex/php-nginx
container_name: php-dev
restart: unless-stopped
environment:
- PUID=1016
- PGID=1016
- TZ=Europe/London
ports:
- 7082:8080
volumes:
- /opt/php-dev/html:/var/www/html
#- /opt/php-dev/php-conf/php.ini:/etc/php84/conf.d/settings.ini
#- /opt/php-dev/php-conf/php-fpm.conf:/etc/php84/php-fpm.d/server.conf
depends_on:
- php-dev-mysql
# docker exec php-dev bash
stdin_open: true # docker run -i
tty: true # docker run -t
networks:
- php-dev-network
php-dev-mysql:
image: yobasystems/alpine-mariadb
container_name: php-dev-mysql
environment:
MYSQL_ROOT_PASSWORD: devroot
MYSQL_DATABASE: dev
MYSQL_USER: dev_user
MYSQL_PASSWORD: dev_pass
MYSQL_CHARSET: utf8
MYSQL_COLLATION: utf8_general_ci
expose:
- "3306"
ports:
- 23306:3306/tcp
volumes:
- /opt/php-dev/mysql-data:/var/lib/mysql
# - /opt/php-dev/mysql-logs:/var/lib/mysql/mysql-bin
# - /opt/php-dev/mysql-conf/my.cnf:/etc/my.cnf
# - /opt/php-dev/mysql-conf/mariadb-server.cnf:/etc/my.cnf.d/mariadb-server.cnf
# - /opt/php-dev/mysql-conf/00_aria.cnf:/etc/my.cnf.d/00_aria.cnf
restart: unless-stopped
networks:
- php-dev-network
# docker exec php-dev-mysql mysql -uroot -pdevroot dev
stdin_open: true
tty: true
networks:
php-dev-network:
To use aria (myisam based) by default, enable 00_aria.cnf volume and create this file:
[mysqld]
skip-innodb
default-storage-engine=Aria
default-tmp-storage-engine=Aria
innodb=OFF
symbolic-links=0
log-output=file
skip-host-cache
skip-name-resolve
====== self-build for other php exts ======
Adjustments/self build of the php container to add or remove php extensions when necessary:
git clone https://github.com/TrafeX/docker-php-nginx
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:
[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