Задать вопрос
@ZaurK

Как поднять yii2 на docker?

Доброго времени суток! Никак не могу осилить эту связку yii2+docker. Перешел на ubuntu и вроде все нравится. Могу создавать образы и запускать контейнеры, но как все это вместе связать и довести до ума не могу никак. Перерыл много статей и книг, везде что-то описывается, но натыкаюсь на какие-то ошибки и застреваю на этом. Кто поднимал yii2 basic или advanced на докере, направьте, пожалуйста по правильному пути, где это описано понятно и доступно? Спасибо заранее.
  • Вопрос задан
  • 5768 просмотров
Подписаться 2 Средний 2 комментария
Пригласить эксперта
Ответы на вопрос 1
@SteepZero
Почитай про docker-compose

В проекте создаешь файл docker-compose.yml, там описываешь свои контейнеры
отдельный контейнер для nginx, отдельный для php-fpm, отдельный для БД
Настраиваешь для них volumes и т.д.

Вот пример того, как я делаю для Laravel
Для Yii все примерно то же самое

docker-compose.yml:
version: '3'

services:
  nginx:
    image: nginx:latest
    ports:
      - 80:80
    volumes:
      - ./:/var/www/html
      - ./docker/nginx/conf.d:/etc/nginx/conf.d
      - ./docker/nginx/logs:/var/log/nginx/
  php:
    image: php:7.2-fpm
    volumes:
      - ./:/var/www/html
  db:
    image: mysql:latest
    environment:
      MYSQL_DATABASE: labbit
      MYSQL_ROOT_PASSWORD: rootlabbit
      MYSQL_USER: labbit
      MYSQL_PASSWORD: labbit
    ports:
      - 3306:3306
    volumes:
      - db_data:/var/lib/mysql

  redis:
    image: redis:latest
volumes:
  db_data:


docker/nginx/conf.d/site.conf:
server {
    listen 80;
    listen [::]:80;

    server_name labbit.local www.labbit.local;

    root /var/www/html/public/;
    index index.php;

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    location / {
        root /var/www/html/public/;
        try_files $uri $uri/ /index.php$is_args$args;
        autoindex off;
        index index.php;
    }

    location ~ \.php$ {
        set $path_info $fastcgi_path_info;
        root /var/www/html/public/;
        fastcgi_index index.php;
        fastcgi_split_path_info ^(.+?\.php)(/.*)$;
        try_files $uri $uri/;
        include /etc/nginx/fastcgi_params;
        fastcgi_pass php:9000;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы