Рубрики
Uncategorized

Разработка интерфейса с Docker упрощенным

Docker — отличный инструмент, который помогает разработчикам построить, развертывать и работать более эффективно в … Теги с Docker, WebDev, JavaScript, Devops.

Разработка с докером (3 части серии)

Docker — отличный инструмент, который помогает разработчикам построить, развертывать и запускать приложения более эффективно в стандартизированном виде. Для приложений Frontend нам нужен только изображение Docker для локального развития, потому что мы развертываем его к поставщику статического хостинга. В этом случае мы можем жить без пользовательского образа докера? Можем ли мы иметь тот же опыт развития, который у нас был без Docker? Да, это проще, чем вы думаете.

Требования

Предположим приложение, в котором нам нужно только нажать начало, и все работает. Эта настройка может быть любое приложение, создаваемое реакцией, Vue, Angular CLI. Для демонстрационных целей я буду использовать мой Vue ToDo приложение Отказ

Во время разработки мы будем выполнять следующие шаги:

  • Установка зависимостей с Установка NPM
  • Начните приложение с NPM Начните
  • Измените файл и проверьте изменения в браузере
  • Используйте код-завершение модулей в редакторе
  • Добавьте новую зависимость от package.json и установить его

Custom Docker File.

Если вы ищете в Интернете для разработки Frontend с Docker, вы можете найти много статей, использующих пользовательский образ докера. Давайте посмотрим и посмотрим, как это работает.

Docker File Начинается с определения базового изображения (Node.js 12.x) на то, что мы будем строить ( от ) и установив рабочий каталог на /приложение Папка ( Workdir ). Каждая команда начинается с Беги или CMD будет иметь эту папку как рабочий каталог по умолчанию.

Следующим шагом является скопирование исходных файлов ( Копировать ) и установить зависимости. Мы копируем package.json отдельно от остальных файлов. Почему? Потому что Docker кэширует каждый шаг докера при создании изображения несколько раз. Когда не изменяйте ничего, и постройте изображение снова, он ничего не сделает, поскольку шаги кэшируются. Если мы изменим файл JavaScript, Docker запускает команды Копировать./приложение Отказ Когда мы изменим package.json Файл, Докер будет перезапущен команды от Копировать Package.json/приложение .

По умолчанию приложения, работающие внутри контейнера на конкретном порту, не доступны на хостом. Мы должны сделать порта доступным ( разоблачить ). Только после этого мы можем ввести URL в нашем браузере ( http://localhost: 8900 ) и посмотрите результат.

Чтобы запустить это изображение, мы должны построить его и запустить созданный контейнер.

# Build the image: docker build -t  
docker build -t client .
# Run the image: docker container run -p    
docker container run -p 8900:8900 client

Недостатки

Вышеуказанное изображение Docker работает, но имеет несколько недостатков:

  • Файлы, сгенерированные внутри контейнера, не видны из хост-машина, только внутри контейнера. Это означает, что мы не увидим Node_Modules Папка на нашем хозяином машине и из-за этого мы теряем кодовое завершение в редакторе. Мы не можем совершить сгенерированные Package.lock.json Для контроля источника, потому что он также не доступен на хост-машине.

  • Мы должны остановить, построить и перезапустить контейнер в зависимости и изменения файла. Мы теряем способность Live-Reled.

Познакомьтесь с составным докером

Docker может создавать одноизонные изображения и запускать встроенные контейнеры. Docker Составьте шаги немного дальше, так как он может создавать и запускать несколько изображений одновременно. В этом руководстве мы не будем использовать многочисленные возможности сборки; Мы будем использовать его только для преодоления недостатков предыдущего примера.

Хотя мы можем использовать предыдущие Dockerfile Чтобы бежать с Docker Compose, мы будем использовать его таким образом, чтобы пропустить запись пользовательского изображения.

Вместо того, чтобы определять изображение с последовательностью команд, Docker Compose использует Формат файла Config yaml Отказ Под Услуги Ключ, изображение для приложения Vue называется клиент . Это эквивалентно названию в Docker Build -T команда. Описание начинается так же: Определение базового изображения ( Image ) и установка рабочего каталога ( Whience_dir ).

Ключевая разница исходит из Объемы имущество. Используя его, локальная папка синхронизируется с контейнером. Если мы выполним NPM установить Команда в контейнере, Node_Modules Папка появится на хостом также: мы получаем завершение кода и файл блокировки.

Приложение начинается в контейнере также ( Команда: SH -C «NPM install install instate && npm запуск" ), выставляя порт на хост-машина, необходим для доступа к браузеру ( порты ).

Чтобы запустить эту настройку, мы должны построить его и запустить встроенный контейнер.

# Build the image and start the container
docker-compose up

Если вы посмотрите на два решения, они почти идентичны. Существует большая корреляция между командами в Dockerfile и поля конфигурации в Docker-Compose.yml Конфигурация файла. Единственное отличие состоит в том, как они обрабатывают монтируемые файлы, и это решает нашу проблему синхронизации.

Резюме

При выполнении местного развития важно иметь быструю петлю обратной связи и завершение кода. Если мы пойдем с чистым решением докера, мы теряем обоих. Мы должны задать помощь Docker Big Brother Docker Compose, чтобы помочь нам с синхронизацией папки. Перемирив нашу настройку в Docker Compose, мы вернемся на скорость и завершение кода. Я надеюсь, что этот трюк поможет вам и экономит тонну времени развития.

Особая благодарность Ибен за помощь мне с настройкой.

Разработка с докером (3 части серии)

Оригинал: «https://dev.to/emarsys/frontend-development-with-docker-simplified-254i»