Порекомендовать путь к 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 до тех пор, пока не появятся более определенные инструменты и методы для многоконтейнерного подхода.