Docker environment required to run php web application.
- Docker
- Docker compose
- PHP
- Apache
- MySQL
- phpMyAdmin
- Mailpit
- Composer
- Node.js
- Npm
- Git
- Copy .env.dist to .env file
cp .env.dist .env
- Edit entries of .env
- CONTAINER_NAME_PREFIX - prefix for containers *
- MYSQL_VERSION - version of mysql (def: latest)
- ROOT_PASSWORD - password for database user: root
- DB_NAME - name of database *
- DB_USER - user for database *
- DB_PASSWORD - password for database *
- PHPMYADMIN_VERSION - version of phpmyadmin (def: latest)
- WEB_PORT_HTTP - port for web http (def: 80)
- WEB_PORT_HTTPS - port for web https (def: 443)
- PATH_TO_PROJECT - path to project (def: ./app)
- PATH_TO_DB_DATA - path to database data (def: ./var/db_data)
- Edit docker-compose.yml
- networks: - value from .env CONTAINER_NAME_PREFIX *
- Edit docker/Dockerfile
- FROM php:[version] - set php version (def: apache - last version)
- Edit docker/000-default.conf *
- DocumentRoot - path to project index file (def: /var/www/html/, example: /var/www/html/[app-name]/public)
- Directory - same as DocumentRoot
- Edit docker/xdebug.ini
- delete
xdebug.start_with_request = yes
and setxdebug.discover_client_host = 1
if "Xdebug helper" browser extension in use.
- delete
- Start compose and environment
docker-compose up -d
- Start working inside container
docker exec -it ${CONTAINER_NAME_PREFIX}-php-apache bash
- MySQL host: mysql
- MySQL port: 3306:3306
- Phpadmin port: 8080:80 http://localhost:8080
- Mailpit web ui port: 8025:8025 http://localhost:8025
- Mailpit smtp server port: 1025:1025
-
Set virtual host (windows):
Edit %SystemRoot%\system32\drivers\etc\hosts by add for example:
127.0.0.1 [project-name].local
-
Database host name: mysql (no localhost!)