Установлен докер-контейнер для Django & VueJS - PullRequest
0 голосов
/ 16 ноября 2018

Добрый день,

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

Я разработал пару небольших внутренних приложений django, но хочу интегрировать VueJS в микс для более динамичного интерфейса.

Мои цели:

  • Я хочу использовать Django-restframework для внутренних вызовов
  • Я хочу использовать VueJS для внешнего интерфейса и делать вызовы обратно вREST API.
  • Я хочу, чтобы все это располагалось в контейнерах Docker, которые можно синхронизировать с помощью Jenkins.

Мои вопросы / проблемы:

  • Я продолжаю пытаться создать один докер-контейнер для VueJS и Django, но начиная с Node или Python, я, похоже, попадаю в ад зависимости.У кого-нибудь есть хорошая ссылочная ссылка?
  • Я не могу решить, хочу ли я полностью отделить ее или попытаться сохранить некоторые из шаблонов Django.Причина последнего в том, что я не хочу терять встроенную аутентификацию Django.Я не достаточно опытен, чтобы написать весь фрагмент аутентификации, поэтому я бы предпочел не потерять то, что уже сделано.
  • Если я полностью отделен, а django - это строго API, у меня также может быть один докер-контейнер дляDjango и второй док-контейнер для внешнего интерфейса.Мысли?
  • Наконец, все эти веб-приложения имеют одинаковый уровень риска и существуют на одном сервере веб-приложений с отдельным сервером базы данных postgres.Должен ли nginx быть на сервере, затем gunicorn в контейнере Docker с django?Где большинство разработчиков проводят черту на том, что является нативным на сервере и что подается из контейнера Docker?Это все приложения с небольшим объемом, предназначенные для определенных целей.

Спасибо за ваше руководство, поскольку я продолжаю рисковать на новой территории.

Кевин

Ответы [ 2 ]

0 голосов
/ 12 января 2019

Редактировать май 2019

Здесь приведены настройки для Django и Vue с использованием ECS, инструмента оркестровки контейнеров AWS и GitLab для CI / CD.Репо здесь .

Docker, Django, Vue setup

Я работал над проектом, который демонстрирует, как настроить проект Django + Vueс докером.Это исходный проект под названием verbose-equals-true (https://verbose -equals-true.tk ).Исходный код этого проекта доступен здесь: https://gitlab.com/briancaffey/verbose-equals-true

Вот обзор того, как я структурирую проект для производства.В проекте используется docker compose для организации различных контейнеров для производства, а также для разработки.

enter image description here

Дайте мне знать, если у вас есть какие-либо вопросы о том, как я использую Django / Vue / Docker.У меня есть документация с подробным описанием на https://verbose -equals-true.tk / docs .

Вот несколько соображений по вашим вопросам / проблемам:

  • Я начал с официальных рекомендаций VueJS о том, как докернизировать приложение Vue, и с официального примера из Docker.о том, как докернизировать приложение postgres + Django.Вы, вероятно, можете поместить все в один и тот же контейнер, но мне нравится выделять вещи для сохранения модульности и ясности.

  • Я использую JWT для аутентификации с помощью пакета djangorestframework_jwt.Я также могу использовать встроенную систему аутентификации Django и администратора Django.

  • Я думаю, что имеет смысл иметь отдельные контейнеры.В процессе разработки вы можете обслуживать приложение Vue из контейнера узлов, работающего с npm run serve, а в процессе производства вы можете обслуживать статические файлы рабочего приложения из контейнера nginx (для этой части вы можете использовать многоступенчатую сборку).

  • Я бы держал все в контейнерах, на сервере ничего не было, кроме механизма докера.Это упростит настройку и позволит вам переносить ваше приложение туда, где вы решите его развернуть.Единственное, что имеет смысл хранить отдельно, - это база данных postgres.Зачастую гораздо проще подключиться к службе управляемой базы данных, такой как AWS RDS, но также можно запустить контейнер postgres на хост-машине докера, чтобы упростить работу.Это потребует, чтобы вы делали резервные копии самостоятельно, поэтому вам нужно быть знакомым с томами докера.

0 голосов
/ 17 ноября 2018

Я работал с Django / Vue, и вот что я делаю:

  • Создание проекта Django
  • Инициализация папки проекта как нового проекта Vue с использованием vue-cli

Отсюда я могу запустить два сервера разработки, один для Django, а другой для Vue:

python manage.py runserver

В другом терминале:

npm run serve

Чтобы использовать мой API в Vue, я использую эту конфигурацию в vue.config.js:

module.exports = {
  baseUrl: process.env.NODE_ENV === 'production'
    ? '/static/'
    : '/',
  outputDir: '<PROJECT_BASE_DIR>/static',
  indexPath: '../templates/index.html',
  filenameHashing: false,
  devServer: {
    proxy: {
      '/api': {
        target: 'http://localhost:8000'
      }
    }
  },
}

devServer перенаправляет запросы к API, outputDir и indexPath помогают создать приложение дляпапка проекта, <PROJECT_BASE_DIR>/templates/ и <PROJECT_BASE_DIR>/static/

Следующим шагом будет создание TemplateView и установка template_name на index.html (файл, созданный Vue), с этим у вас естьSPA в представлении / шаблоне Django.

При таком подходе вы можете использовать Docker-контейнер для Django.

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

Alejandro

...