• Использовать mysql в контейнере docker в продакшене или нет?

    @ewolf
    Пара советов:
    1. Подумайте об отказе от Apache - он в 2018 году ничего вам не даёт. Возможно, у вас завязаны на него какие-то правила роутинга - попробуйте перевести их на nginx
    2. Не запускайте всё в одном контейнере: сделайте по контейнеру на процесс (отдельно на PHP, отдельно nginx) . Это даст вам возможность использовать стандартные имаджи. Если уж всё-таки оставите апач, тогда у вас будет контейнер с Apache+PHP, так как скорее всего вы используете модуль врача, но повторюсь - постарайтесь от апача отказаться.
    3. Постарайтесь отказаться от волумов в продакшен для кода. Собирайте свой имадж на базе стандартного с добавлением в него вашего кода на этапе сборки. Посмотрите про это статьи. Так у вас будет возможность деплоить контейнер целиком, а не подкладывать ему папку с кодом. Это сделает систему стабильнее и переносимей.
    4. Вам не нужен MySql в контейнере: во-первых это оверхед иметь отдельный инстанс MySql на каждый сайт. Во-вторых, вам нужно обеспечить персистанс данных, что означает использование volume. Это сложнее и имеет свои недостатки: медленнее и т.д. Запустите MySql на отдельном сервере или даже на том же, где докер, но не в контейнере - сэкономите ресурсы и нервы. Когда разберётесь, посмотрите на докеризацию базы ещё раз.
    Ответ написан
    Комментировать
  • Как сделать связи в Yii2 между двумя моделями в разных модулях?

    @ewolf Автор вопроса
    Мешает то, что модель \app\module\admin\models\User может быть заменена на другую, в другом модуле с другим неймспейсом. Общим между моделями может быть только то, что они:
    a. Обе наследуются от ActiveRecord
    b. Могут иметь некий общий интерфейс (например, UserInterface), который опишет обязательные для них всех методы (например, getFullName и т.п.).
    Ответ написан
    Комментировать