====== 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