Py学习  »  Django

为Django&Vuejs设置的Docker容器

Bring Coffee Bring Beer • 4 年前 • 352 次点击  

下午好,

我正在寻找一些关于在哪里集中精力的指导。我一直从这些兔子洞里钻下去,好像找不到我要找的路。

我已经开发了两个小的内部django应用程序,但希望将vuejs集成到混合中,以获得更动态的前端。

我的目标是:

  • 我想对后端调用使用django restframework
  • 我想在前端使用vuejs并调用rest api。
  • 我希望所有这些都存在于Docker容器中,我可以使用Jenkins同步这些容器。

我的问题/担忧:

  • 我一直试图为vuejs和django构建一个docker容器,但从node或python开始,我似乎最终陷入了依赖地狱。有没有人有一个很好的参考链接?
  • 我无法决定是要完全分离它还是要保留一些django模板。后者的原因是我不想丢失内置的django身份验证。我没有足够的技能来编写整个认证部分,所以我宁愿不失去已经完成的工作。
  • 如果我是完全分离的,并且django是严格意义上的api,那么我还可以为django提供一个docker容器,并为前端提供第二个docker容器。思想?
  • 最后,这些Web应用程序都是相同的风险级别,它们存在于同一个Web应用服务器上,具有独立的PASGRESS数据库服务器。nginx应该在服务器上,然后gunicorn和django在docker容器中?大多数开发人员在服务器上什么是本机的以及从Docker容器中提供什么上画线?这些都是针对特定用途的低容量应用程序。

感谢您的指导,我将继续开拓新的领域。

凯文

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/46968
 
352 次点击  
文章 [ 2 ]  |  最新文章 4 年前
Alejandro Sánchez
Reply   •   1 楼
Alejandro Sánchez    5 年前

我一直在和django/vue合作,这就是我的工作:

  • 创建django项目
  • 使用vue cli将项目的文件夹初始化为新的vue项目

从这里开始,我可以启动两个开发服务器,一个用于django,另一个用于vue:

python manage.py runserver

在另一个终端:

npm run serve

为了在Vue中使用我的API,我在 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构建的文件),这样您就可以在django视图/模板中使用spa。

使用这种方法,您可以为django使用docker容器。

我希望这能给你一些基本的指导。

亚历杭德罗

briancaffey
Reply   •   2 楼
briancaffey    4 年前

2019年5月编辑

这里是使用ecs、aws容器编排工具和gitlab for ci/cd为django和vue设置的。回购协议是 here 是的。

Docker, Django, Vue setup

我一直在做一个项目,演示如何用Docker设置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管理。

  • 我认为有单独的容器是有意义的。在开发过程中,您可以从运行 npm run serve ,在生产环境中,您可以从nginx容器中提供生产应用程序的静态文件(您可以为此部分使用多阶段构建)。

  • 我会把所有东西都放在容器里,服务器上除了Docker引擎什么都没有。这将简化设置,并允许您将应用程序移植到决定部署它的任何位置。唯一有意义分开的是postgres数据库。连接到aws rds这样的托管数据库服务通常要容易得多,但也可以在docker主机上运行postgres容器,以使事情更加简单。这需要您自己进行备份,因此您需要熟悉Docker卷。