m1n64 / yii2-docker-app-basic
Yii 2 Basic Project Template with Docker
1.0.0
2025-06-01 19:45 UTC
Requires
- php: >=8.1
- vlucas/phpdotenv: ^5.6
- yiisoft/di: ^1.4
- yiisoft/injector: ^1.2
- yiisoft/yii2: ~2.0.45
- yiisoft/yii2-bootstrap5: ~2.0.2
- yiisoft/yii2-httpclient: ^2.0
- yiisoft/yii2-redis: ~2.0.0
- yiisoft/yii2-symfonymailer: ~2.0.3
Requires (Dev)
- codeception/codeception: ^5.0.0 || ^4.0
- codeception/lib-innerbrowser: ^4.0 || ^3.0 || ^1.1
- codeception/module-asserts: ^3.0 || ^1.1
- codeception/module-filesystem: ^3.0 || ^2.0 || ^1.1
- codeception/module-yii2: ^1.1
- codeception/verify: ^3.0 || ^2.2
- yiisoft/yii2-debug: ~2.1.0
- yiisoft/yii2-faker: ~2.0.0
- yiisoft/yii2-gii: ~2.2.0
README
This is a Docker-based template for Yii 2, built with:
- PHP 8.4 (FPM on Alpine)
- PostgreSQL 16
- Redis
- Node.js 22 + NPM
- Supervisor for Queue & Scheduler
- Makefile for easy commands (like Laravel Sail)
- Nginx
- Composer
- XDebug in Dev Mode
๐ Setup Instructions
1๏ธโฃ Clone the Repository
composer create-project m1n64/yii2-docker-app-basic yii2-app
cd yii2-app
2๏ธโฃ Copy .env
and Update Configuration
cp .env.example .env
- Open
.env
file and change it:
DB_DATABASE=<your-db> # Change DB name
-
Change the container name prefix:
Inside
docker-compose.yml
, renamey2-
to your project name:
services: app: container_name: myproject-app nginx: container_name: myproject-nginx postgres: container_name: myproject-postgres redis: container_name: myproject-redis
-
Change the Docker network
In
docker-compose.yml
:
networks: myproject-network:
๐ Start Containers
๐น Using Docker
docker-compose up -d
๐น Using Makefile
make up # For development make prod # For production
๐ฆ Install Dependencies
๐ Install PHP Dependencies
Run inside the container:
docker-compose exec -u www-data app composer install
Or using Makefile:
make composer install
๐ธ Install Node.js & NPM Dependencies
make npm install
make npm run dev # Run Vite for development
๐ Run Migrations
make yii migrate
๐ป Available Commands
๐ Running Laravel Commands
Action | Docker Command | Makefile Shortcut |
---|---|---|
Run php yii |
docker-compose exec -u www-data app php yii <cmd> |
make yii <cmd> |
Run composer |
docker-compose exec -u www-data app composer <cmd> |
make composer <cmd> |
Run npm |
docker-compose exec -u www-data app npm <cmd> |
make npm <cmd> |
Open Bash | docker-compose exec -u www-data app bash |
make bash |
View Logs | docker-compose logs -f app |
make logs app |
Open PostgreSQL CLI | docker-compose exec -e PGPASSWORD=<pass> postgres psql -U <user> -d <db> |
make psql |
Open Redis CLI | docker-compose exec redis redis-cli |
make redis |
Run Tests | docker-compose exec -u www-data app php yii test |
make test |
๐ Managing Containers
๐ Restart & Stop
Action | Docker Command | Makefile Shortcut |
---|---|---|
Restart all | docker-compose restart |
make restart |
Restart one | docker-compose restart <service> |
make restart-container CONTAINER=<name> |
Stop all | docker-compose stop |
make stop |
Stop one | docker-compose stop <service> |
make stop-container CONTAINER=<name> |
Start all | docker-compose up -d |
make up |
Remove all | docker-compose down -v |
make down |
For list of all makefile commands, run make help
.
๐ก PHPStorm Setup
PHP Interpreter
XDebug
๐งช Run Tests
make test
๐ Additional Notes
- This setup supports Queues & Scheduler via Supervisor.
- PostgreSQL, Redis & Supervisor are configured out of the box.
- Uses Node.js 22 for Vite & frontend dependencies if you need.
- All Docker volumes persist data between container restarts.
๐ฅ Now your Yii 2 project is fully containerized!
Use Makefile commands just enjoy seamless Docker development! ๐