Главная » Хабрахабр » Настройка своего окружения в Docker для yii-framework приложения

Настройка своего окружения в Docker для yii-framework приложения

Один из них — поднять все необходимые сервисы в Docker-контейнерах. Для того чтобы быстро поднять рабочее окружение существует много способов. Чтобы ускорить создание новых проектов на Yii-framework я написал такую небольшую инструкцию, которую используют разработчики в нашей команде.

На старте у вас должны стоять docker, docker-compose, php и php-composer.
Создаем папку с проектом и в ней папку docker.

mkdir project-dir cd project-dir && mkdir docker

В папке docker создаем файл конфигурации нашего контейнера Dockerfile.

# Базовый образ с nginx и php
FROM richarvey/nginx-php-fpm # Добавляем наше веб приложение
ADD app /var/www/app # Удаляем конфиги сайтов которые там есть
RUN rm -Rf /etc/nginx/sites-enabled/* # Добавляем наш конфиг
ADD docker/conf/nginx/site.conf /etc/nginx/sites-available/site.conf
# Включаем его
RUN ln -s /etc/nginx/sites-available/site.conf /etc/nginx/sites-enabled/site.conf

В этой же папке docker создаем docker-compose.yml для поднятия окружения разработки.

# Последняя версия docker-compose
version: '3' # Создаем общую сеть deafult для всех контейнеров
networks: default: driver: bridge # Создаем отдельные контейнеры
services: # Контейнер с веб-приложением app: # Собираем из Dockerfile build: # Корнем указываем корень основного проекта context: ../ dockerfile: ./docker/Dockerfile # Показываем наружу 80 порт ports: - "80:80" # Подключаем к общей сети с другими контейнерами networks: - default # Запускаем только после db depends_on: - db # Линкуем внешнюю папку с исходниками внутрь volumes: - "../app:/var/www/app" # Так же линкуем конфиг для nginx - "./conf/nginx:/etc/nginx/sites-available" # Контейнер с базой данных db: image: mysql:latest # Подключаем к общей сети с другими контейнерами networks: - default # Показываем наружу порт ports: - "3336:3306" # Задаем параметры для инициализации БД environment: # Пароль к БД MYSQL_ROOT_PASSWORD: root # Создаваемая по умолчанию бд MYSQL_DATABASE: yii-template-db # Линкуем внешнюю папку для хранения БД volumes: - "./database:/var/lib/mysql"

Файлик может изменяться, в зависимости от того, как вы хотите настроить nginx на своем проекте. Для nginx создаем папку docker/conf/nginx и файл site.conf в ней. он подключается через volume. Его можно менять локально, т.к. Но надо не забывать внутри контейнера перезагружать nginx: nginx -s reload

server # uncomment to avoid processing of calls to non-existing static files by Yii #location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ { # try_files $uri =404; #} #error_page 404 /404.html; # deny accessing php files for the /assets directory location ~ ^/assets/.*\.php$ { deny all; } location ~ \.php$ { include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass unix:/var/run/php-fpm.sock; try_files $uri =404; } location ~* /\. { deny all; }
}

Все команды выполняются из корневой папки.

  • Выполняем команду создания проекта composer create-project --prefer-dist yiisoft/yii2-app-advanced app.
  • Запускаем окружение docker-compose -f docker/docker-compose.yml up -d
  • Инициализируем проект app/init --env=Development --overwrite=All
  • Открываем в редакторе файл app/common/config/main-local.php и заполняем его данными для подключения к БД. В примере у нас пароль root — root, хост БД — db, имя БД — yii-template-db.
  • Подключаемся к контейнеру docker exec -it docker_app_1 bash
  • Выполняем команду миграции БД php /var/www/app/yii migrate
  • Создаем папку для логов mkdir /var/www/app/log
  • И выходим exit
  • Тормозим сервис docker-compose -f docker/docker-compose.yml down
  • Запускаем его заново docker-compose -f docker/docker-compose.yml up -d
  • Открываем localhost в браузере и смотрим на новый сайт.

Upd: Обязательно стоит упомянуть, что всегда есть официальный Docker-образ Yii2.


Оставить комментарий

Ваш email нигде не будет показан
Обязательные для заполнения поля помечены *

*

x

Ещё Hi-Tech Интересное!

Зачем программисту стажировка на кухне — разговор с «Додо пиццей» про гембу, .NET и открытость

Бизнес компании оплетен сетью технологичных сервисов, о своей истории они написали книгу, стек технологий и архитектура системы расписаны прямо на сайте, в паре кликов от главной страницы. Про «Додо пиццу» уже известно много. Даже самые неприятные факапы они спокойно и ...

[Перевод] Профилирование кода с LLVM

Проклятие недетерминизма Моя первая попытка написать проход LLVM — люблю эти сегфолты Под словом «детерминированный» я подразумеваю, что один и тот же код будет выполняться за одно и то же количество единиц времени. Недавно я столкнулся с интересной задачей — ...