
从上一篇文章中可以看到,我处理了不同的项目。 新团队的第一天通常是相同的:bekender坐在我旁边,表演魔术步骤来安装和deployu应用。 泊坞窗是frontenderov因为必不可少 后端往往是写在各种各样栈PHP / Java的/ Python的/ C#和分心贝克每一次,所有的设置和部署前面是没有必要的。 只在一个地方,我看到一帮码头工人,詹金斯与透明deploem,原木,拧的自动测试。
关于搬运工写了很多详细的文章。 本文将讨论使用VueJS / Vue路由器部署单页应用程序,将服务器部分作为带有NodeJS的RESTful API以及将MongoDB用作数据库的部署。 为了描述和运行多个应用程序,容器使用泊坞撰写。
为什么我需要多克
Docker允许您自动化部署应用程序的过程。 开发者不再需要自己设定的程序来处理你的机器上不兼容的版本。 只需安装多克尔和驱动1-2队在控制台中。 最方便的方式来做到这一点在Linux上。
开始使用
安装
Docker和
Docker compose资料夹结构我们为客户端和服务器应用程序创建2个文件夹。 扩展名为.yml的文件是
Docker Compose配置,其中定义和链接了应用程序容器。
Docker-compose.yml:
version: "3" services: mongo: container_name: mongo hostname: mongo image: mongo ports: - "27017:27017" server: build: server/
我们在docker中创建3个服务:用于NodeJS,MongoDB和用于Vue的静态函数。 到客户端添加的服务器关联
依赖于服务器。 链接mongo用于将MongoDB与服务器API链接。 服务器,客户端,蒙戈 - 服务名称。
客户端上VueJS
在文件夹
/客户端应用程序位于VueJS。 使用
Vue Cli创建的应用程序。 生成映像时,客户端应用程序将内置到
/ dist文件夹中的一组静态文件中。 在Dockerfile描述由该组命令来构建的图像的:
FROM node:10 WORKDIR /client COPY ./package*.json ./ RUN npm install RUN npm install -g http-server COPY . . RUN npm run build EXPOSE 8081 CMD ["npm", "test:dev"]
请注意,package.json与其他项目文件分开复制和安装。 这是为了表现该文件夹中的内容做/ node_modules缓存时重新构建。 每个命令行都单独缓存。
最后,当容器启动时,将执行
npm run dev
命令。 package.json中描述了此命令:
"scripts": { "test:dev": "http-server dist -p 8081 -c 1 --push-state" }
要运行
/ dist文件夹中的文件,将在全局范围内安装
http-server
,并在dev-dependencies中安装
spa-http-server
,以便Vue Router可以正常工作。 旗-push状态确实重定向的index.html。 将添加值为1秒的-c标志,以便
http服务器不缓存脚本。 这是一个测试案例的真实的项目是更好地使用nginx的。
在Vuex商店产生一个电场
apiHost: 'http://localhost:3000'
其被规定端口的NodeJS API。 客户端部分已准备就绪。 现在,从客户端到后台的所有请求都将转到该URL。
NodeJS服务器API
在
/server
文件夹中,创建
server.js和Dockerfile:
FROM node:10 WORKDIR /server COPY ./package*.json ./ RUN npm install COPY . . EXPOSE 3000 CMD ["node", "server.js"]
在指定的
server.js URL数据库
const url = 'mongodb://mongo:27017/';
:
const url = 'mongodb://mongo:27017/';
。 允许从客户端跨数据源请求:
const clientUrl = 'http://localhost:8081'; const corsOptions = { origin: clientUrl, optionsSuccessStatus: 200,
-Origin',clientUrl); const clientUrl = 'http://localhost:8081'; const corsOptions = { origin: clientUrl, optionsSuccessStatus: 200,
-headers', 'X-请求-随着'); const clientUrl = 'http://localhost:8081'; const corsOptions = { origin: clientUrl, optionsSuccessStatus: 200,
(corsOptions),(REQ,RES)=> { const clientUrl = 'http://localhost:8081'; const corsOptions = { origin: clientUrl, optionsSuccessStatus: 200,
),ERR => res.json(ERR)); const clientUrl = 'http://localhost:8081'; const corsOptions = { origin: clientUrl, optionsSuccessStatus: 200,
结论
现在转到项目目录并运行
docker-compose build
映像,并运行
docker-compose build
来启动容器。 命令提高容器3:
服务器,客户端,蒙戈。 服务器可经配置以热的NodeJS重装,它与用户文件夹相关联。 客户端正在开发中,可通过热重载在本地运行,分别运行
server和
mongo 。 要启动一个单独的服务,足以标明品名
docker-compose up client
。 不要忘了偶尔做
prune
,并去除容器(集装箱),网络(网络)和图片(图片),以释放资源。
完整的代码可以在
这里找到。 该项目仍在开发中。