Как запустить 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)