下午好,
我正在寻找有关如何集中精力的指导。我一直沿这些兔子洞走下去,似乎找不到我要寻找的道路。
我已经开发了一些小型的内部django应用程序,但希望将VueJS集成到组合中,以获得更动态的前端。
我的目标是:
我的问题/疑虑:
感谢您在我继续涉足新领域时的所有指导。
凯文
答案 0 :(得分:4)
编辑2019年5月
这是使用ECS,AWS容器编排工具和CI / CD的GitLab为Django和Vue进行的设置。仓库是here。
我一直在研究一个项目,该项目演示了如何使用docker设置Django + Vue项目。这是一个名为verbose-equals-true
(https://verbose-equals-true.tk)的ope源项目。该项目的源代码可在此处找到:https://gitlab.com/briancaffey/verbose-equals-true
这里是我如何构建生产项目的概述。该项目使用docker compose来协调不同的容器以进行生产和开发。
如果您有任何有关我如何使用Django / Vue / docker的问题,请告诉我。我在https://verbose-equals-true.tk/docs上有详细说明的文档。
以下是关于您的问题/疑虑的一些想法:
我从VueJS的官方建议开始,介绍了如何对Vue应用程序进行docker化,并从Docker获得了有关如何对postgres + Django应用程序进行docker化的官方示例。您可能可以将所有内容放在同一个容器中,但是我喜欢将它们分离出来,以使它们保持模块化和清晰。
我正在使用djangorestframework_jwt软件包进行JWT身份验证。我还可以使用内置的Django身份验证系统和Django admin。
我认为拥有单独的容器是有意义的。在开发中,您可以从运行npm run serve
的节点容器中为Vue应用程序提供服务,而在生产中,您可以从nginx容器中提供生产应用程序的静态文件(您可以为该部分使用多阶段构建)。
我会将所有内容保存在容器中,而泊坞窗引擎除外。这将简化设置,并使您可以将应用程序移植到决定部署它的任何位置。保持分离唯一有意义的是postgres数据库。连接到托管数据库服务(如AWS RDS)通常要容易得多,但是也可以在docker主机上运行postgres容器,以简化操作。这将需要您自己进行备份,因此您需要熟悉Docker卷。
答案 1 :(得分:2)
我一直在使用Django / 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构建的文件),这样您就可以将SPA放在Django视图/模板中。
通过这种方法,您可以将Docker容器用于Django。
我希望这会为您提供一些基本指导以继续。
亚历杭德罗