Как запустить Yii2 в Docker
docker-compose.yml с официального репозитория Yii2
version: '3'
services:
php:
image: yiisoftware/yii2-php:7.1-apache
volumes:
- ~/.composer-docker/cache:/root/.composer/cache:delegated
- ./:/app:delegated
ports:
- '8000:80'
Добавим БД
mysql:
image: mysql:5.7
command: ['mysqld', '--character-set-server=utf8mb4', '--collation-server=utf8mb4_unicode_ci']
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=db
- MYSQL_USER=user
- MYSQL_PASSWORD=user
ports:
- 33060:3306
к php добавим строчку
depends_on: - mysql
чтобы php зависела от mysql
Таким образом будет создана БД «db» и пользователь user:user. В command можно передать параметры для создания БД, в данном случае при создании БД будет установлена соответствующая кодировка.
Настройка config/db.php
Здесь важно обратить внимание на host=mysql в данном случае mysql — это название контейнера с базой данной, а dbname=db, где db — это параметр описанный в MYSQL_DATABASE=db в docker-compose.yml
return [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=mysql;dbname=db',
'username' => 'root',
'password' => 'root',
'charset' => 'utf8mb4',
'tablePrefix'=>'ruyou_',
];
запускаем образы:
sudo docker-compose up в случае ошибок — они будут указаны
sudo docker-compose up -d запуск в фоне
sudo docker ps посмотреть список запущенных контейнеров
sudo docker exec -it d7a2456b68cc bash если нужно войти в контейнер. Вход происходит под root
После запуска контейнера можно выполнить команду, чтобы обновить composer
docker-compose run --rm php composer install
Приложение будет по адресу http://127.0.0.1:8000 (указано в ports в php)