Yii2 Base Docker

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

Leave a comment

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.