Docker configuration with PHP 8.1+, NGINX 1.20+, PostgreSQL 14.2+ and Symfony 6.0 for SPA (Single Page Application) development with Vue/Vite, Pinia and EasyAdmin.
- Based on Alpine Linux
- Xdebug and PHPUnit
- Makefile
- Symfony Data Fixtures (pages, categories, projects, users)
- Symfony Security for EasyAdmin
- Serenity theme for EasyAdmin
- TypeScript
- Vue 3
- Vite for assets build
- Pinia for data store
- ky for fetching data
- Simple SPA with basic routes for example
- Cache system requests for symfony backend
Required requisites:
Docker and Docker Compose can be installed with Docker Desktop app.
- Clone the project:
git clone https://github.com/volkar/docker-symfony-vite-vue-ts.git
- Go to the project's folder
cd /path/to/docker-symfony-vite-vue-ts
- Update and install composer packages
composer update
- Build and up project with Docker Compose
docker-compose up -d --build
- Enter container's shell
make bash
- Create database schema
symfony console doctrine:schema:update --force
- Load data from symfony fixtures
symfony console doctrine:fixtures:load
- Exit container's shell
exit
- Install all node's dependencies
npm install
- Run Vite dev server
npm run dev
- Open
http://localhost
in your browser.
Administrator account created by fixtures (for EasyAdmin access):
- login: admin@admin.com
- pass: admin
Build and up:
docker-compose up -d --build
Up only:
docker-compose up -d
Down:
docker-compose down
Rebuild and up:
docker-compose down -v --remove-orphans
docker-compose rm -vsf
docker-compose up -d --build
Postgres database name, user and password defined in .env
file.
All .sql files inside docker/postgres/conf
will be executed on container build.
Connect to database with default login:
docker-compose exec postgres psql -U dbuser dbname
PHP config located at docker/php/conf/php.ini
. You might want to change date.timezone
value in php.ini
. Default value is Europe/Helsinki
(GMT+3).
Execute command php -v
in the php
container:
docker-compose exec php php -v
There is OPCache commented out settings in php.ini
as well as loading line in Dockerfile
if you need it, by any means. Not recommended for development environment.
There is two test for testing Docker environment:
- PHPUnit self test
- PostgreSQL connection test
Run the tests:
docker-compose exec php vendor/bin/phpunit ./tests
Successfully passed tests output:
OK (2 tests, 2 assertions)
XDebug config located at docker/php/conf/xdebug.ini
.
To enable Xdebug at the project build, set INSTALL_XDEBUG
variable to true
in .env
file.
To execute Makefile command use make <command>
from project's folder
List of commands:
Command | Description |
---|---|
up | Up containers |
down | Down containers |
build | Build/rebuild continers |
test | Run PHPUnit tests |
bash | Use bash in php container as www-data |
bash_root | Use bash in php container as root |
Folders mapped for default Symfony folder structure (assuming local /
is project's folder):
Local | Container | Description |
---|---|---|
/ | /var/www | Project root |
/public | /var/www/public | Web server document root |
/logs/nginx | /var/logs/nginx | NGINX logs |
/docker/postgres/data | /var/lib/postgresql/data | PostgreSQL data files |
Ports mapped default:
Local | Container | Description |
---|---|---|
80 | 80 | NGINX port |
5432 | 5432 | PostgreSQL port |
You always welcome to mail me at sergey@volkar.ru