Как мне интегрировать сборники рассказов с React, Webpack, Docker, lighttpd? - PullRequest
0 голосов
/ 14 января 2019

Я работаю над приложением Dockerized реагировать. Он построен с использованием Webpack 4. Как часть процесса CI в этом проекте, приложение развертывается как в промежуточной, так и в производственной средах, где оно обслуживается lighttpd. То, что я хотел бы сделать, это иметь страницу Storybooks, которая доступна на промежуточном сайте, но не на prod.

Здесь есть несколько проблем, из-за которых мне трудно найти лучший подход.

  • Как часть процесса CI приложение создается и автоматически развертывается в промежуточной среде, когда коммиты передаются в любую ветку git с именем вида staging/...
  • Переключатели, которые настраивают приложение для промежуточной и продакшн-системы, в основном находятся в конфигурации веб-пакета проекта.
  • Этот процесс сборки управляется dockerfile, который я могу редактировать. Я могу запустить yarn команды (например, для создания статического сборника рассказов) в этом файле Docker. Но один и тот же dockerfile используется и для постановки, и для создания, и я бы предпочел не создавать отдельный.
  • Я бы предпочел вообще не менять маршруты react-router, потому что файл маршрутов должен (в идеале) быть одинаковым для промежуточных и промежуточных файлов.
  • Как правило, я немного размышляю над тем, как / может ли пользователь ввести URL-адрес в промежуточной среде, который каким-то образом обходит react-router и показывает страницу статических сборников рассказов. Сетевые аспекты веб-разработки - не моя сильная сторона. Я обычно просто строю и разрабатываю компоненты.

Мой подход до сих пор заключался в том, чтобы просто создать статический сборник рассказов, добавив строку RUN yarn storybooks в файл dockerfile, но это не удалось несколькими способами. 1) работает как для постановки, так и для продакшн 2) Кажется, он собирает статический сборник рассказов (то есть вывод dockerfile показывает успешное создание сборника рассказов через собственный внутренний процесс веб-пакета), но я не уверен, как на самом деле просмотреть его в браузере.

Я надеюсь, что все имеет смысл. То, что я ищу, - это общее руководство в стиле "лучших практик". Пожалуйста, дайте мне знать, если я могу предоставить дополнительную информацию и спасибо за время.

1 Ответ

0 голосов
/ 25 марта 2019

Простым способом было бы RUN yarn storybooks как отдельный процесс с использованием concurrently в сценарии package.json с именем prod и выполнение правильной команды с помощью --build-arg в dockerfile

в вашем Dockerfile

#EXEMPLE docker build --build-arg running_env=preprod
ARG buildenv
RUN yarn run $buildenv

Не забудьте выставить правильные порты ... Мой скрипт в package.json выглядит так: "storybook": "start-storybook -c storybook/ --ci -p 3007"

а что касается маршрутизации, вы можете добавить ссылку и перенаправить на страницу сборника рассказов. Я сейчас тоже это выясняю.

...