Порекомендовать путь к Artisan on Docker

Мне еще предстоит найти элегантный и эффективный способ запуска команд Laravel Artisan в локальной локальной среде Docker.

Может ли кто-нибудь предложить рекомендуемый или "правильный" способ делать такие вещи, как миграции?

Или кто-нибудь нашел аккуратный способ сделать это? В идеале с примерами или предложениями.

Вещи, которые я рассмотрел:

  • Новый контейнер (разделяющий ту же самую ссылку и db-ссылку) с ssh, только для запуска команд (кажется неприятным).
  • Взломы в супервизоре, которые затем могут работать в режиме реального времени (не идеально).
  • Редактирование конфигураций db или попытка взломать "хост" среду, так что по крайней мере такие вещи, как migrate, могут быть запущены с хоста.
  • Создание веб-интерфейсов для работы (действительно противный).
  • Попытка построить для него "сигнал".

Я все еще склоняюсь к Docker, и это подход new-container-for-all.

Я полагаю, что хочу сбалансировать материал cool-dev-ops с помощью причины "зачем-я-нужен-другой-поддельный-сервер-только-получить-он-работа-уже".

Мне бы хотелось совершить это для моего рабочего процесса dev, но кажется, что это неудобно использовать при определенных обстоятельствах, например, этот...

Любые предложения и идеи приветствуются. Спасибо всем.

Ответ 1

Лучшей практикой в ​​отношении Docker является запуск каждого процесса внутри собственного контейнера. Поэтому идеальным способом запускать команды artisan является создание образа для создания контейнеров специально для этой цели.

Я создал изображение, которое можно вытащить из Docker Hub dylanlindgren/docker-laravel-artisan, и оно работает очень хорошо. Он на GitHub, если вы хотите взглянуть на Dockerfile позади него.

Я также только что написал сообщение , описывающее, как все эти отдельные контейнеры подходят друг к другу.

Ответ 2

Docker 1.3 приносит новую команду exec Итак, теперь вы можете "enter" запускать контейнер, например

docker exec -it my-container-name /bin/bash

После этого вы можете выполнить любую команду, которую хотите

php artisan --version

Ответ 3

Есть несколько возможностей...

  • Установка каталога хоста в вашем контейнере в качестве папки, в которой работает ваше приложение Laravel. Таким образом вы можете просто запустить php artisan migrate или composer update с хоста. Однако у вас могут возникнуть проблемы с развертыванием, поскольку вам придется реплицировать эту часть вашей среды на сервер.

  • добавление SSH-сервера в ваш контейнер (что не рекомендуется; вот хорошее обсуждение этого).

  • создайте и используйте nsenter, инструмент для "ввода" запущенного контейнера и получения доступа к оболочке. Заметьте, я не использовал его, я просто нашел его некоторое время назад по ссылке в ссылке выше.

Если вы в первую очередь заинтересованы в развертывании, и вы делаете это через файл докеров, тогда ответ будет заключаться в том, чтобы добавить composer install и php artisan migrate в ваш файл докеров, чтобы они запускались при создании контейнера.

Мне интересно услышать больше ответов на это. Это то, что я просто получаю, и хотел бы узнать больше.

Ответ 4

Я использую SSH и запускаю миграции из терминала внутри контейнера.

Мне лично нравится подход Phusion к использованию Docker как 'легкий виртуальный машина '. Поэтому я использовал baseimage-docker, который я расширил, чтобы создать собственный Изображение Docker для приложений Laravel.

Я знаю, что изображение Phusion может быть спорным в сообществе Docker и что SSH не одобряется теми, кто выступает за контейнеры Докера в качестве микросервисов, Но я доволен подходом Phusion до тех пор, пока не появятся более определенные инструменты и методы для многоконтейнерного подхода.