
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдореИрдВрдиреЗ рд╡рд┐рднрд┐рдиреНрди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛ред рдПрдХ рдирдИ рдЯреАрдо рдореЗрдВ рдкрд╣рд▓реЗ рджрд┐рди рдЖрдорддреМрд░ рдкрд░ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдЬрд╛рддреЗ рд╣реИрдВ: рдмреИрдХ-рдПрдВрдб рдореЗрд░реЗ рдкрд╛рд╕ рдмреИрдарддрд╛ рд╣реИ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреЗ рдФрд░ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рджреБрдИ рдХреНрд░рд┐рдпрд╛ рдХрд░рддрд╛ рд╣реИред рдбреЙрдХрд░ рд╕рд╛рдордиреЗ рдХреЗ рдЕрдВрдд рдХреЗ рд▓рд┐рдП рдЕрдкрд░рд┐рд╣рд╛рд░реНрдп рд╣реИ рдмреИрдХрдПрдВрдб рдХреЛ рдЕрдХреНрд╕рд░ PHP / Java / Python / C # рд╕реНрдЯреИрдХ рдХреА рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╢реНрд░реГрдВрдЦрд▓рд╛ рдкрд░ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╕рдм рдХреБрдЫ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдФрд░ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлреНрд░рдВрдЯ рдХреЛ рдмреИрдХрдПрдВрдб рдХреЛ рд╡рд┐рдЪрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдХреЗрд╡рд▓ рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ рдореИрдВрдиреЗ рдбреЙрдХрд░-рдЬреЗрдирдХрд┐рдиреНрд╕ рдХреЗ рдПрдХ рдЭреБрдВрдб рдХреЛ рдПрдХ рдкрд╛рд░рджрд░реНрд╢реА рддреИрдирд╛рддреА, рд▓реЙрдЧ рдХреЗ рд╕рд╛рде рджреЗрдЦрд╛, рд╕реНрд╡-рдкрд░реАрдХреНрд╖рдгреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЦрд░рд╛рдм рдХрд░ рджрд┐рдпрд╛ред
рдбреЙрдХрдЯрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╡рд┐рд╕реНрддреГрдд рд▓реЗрдЦ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВред рдпрд╣ рдЖрд▓реЗрдЦ VueJS / Vue Router, NodeJS рдХреЗ рд╕рд╛рде RESTful API рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд░реНрд╡рд░ рднрд╛рдЧ рдФрд░ MongoDB рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХрдИ рдХрдВрдЯреЗрдирд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдФрд░ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЙрдХрд░ рдХрдореНрдкреЛрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдореБрдЭреЗ рдбреЙрдХрдЯрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ
рдбреЙрдХрд░ рдЖрдкрдХреЛ рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдЕрдм рдЕрдкрдиреА рдорд╢реАрди рдкрд░ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреА рдЕрд╕рдВрдЧрддрд┐ рдХрд╛ рдореБрдХрд╛рдмрд▓рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдбреЙрдХрд░ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдФрд░ 1-2 рдЯреАрдореЛрдВ рдХреЛ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рд▓рд┐рдирдХреНрд╕ рдкрд░ рдРрд╕рд╛ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред
рд╢реБрд░реБрдЖрдд рд╣реЛ рд░рд╣реА рд╣реИ
Docker рдФрд░
Docker рдХрдВрдкреЛрдЬрд╝ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
рдлрд╝реЛрд▓реНрдбрд░ рд╕рдВрд░рдЪрдирд╛рд╣рдо рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП 2 рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рддреЗ рд╣реИрдВред .Yml рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рд╛рдЗрд▓ рдПрдХ
рдбреЙрдХрд░ рдХрдВрдкреЛрдЬрд╝ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╣реИ рдЬрд╣рд╛рдБ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрдВрдЯреЗрдирд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдФрд░ рд▓рд┐рдВрдХ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
рдбреЛрдХрд░-compose.yml:
version: "3" services: mongo: container_name: mongo hostname: mongo image: mongo ports: - "27017:27017" server: build: server/
рд╣рдо docker рдореЗрдВ 3 рд╕реЗрд╡рд╛рдПрдБ рдмрдирд╛рддреЗ рд╣реИрдВ: NodeJS, MongoDB рдФрд░ Vue рдкрд░ рд╕реНрдЯреИрдЯрд┐рдХреНрд╕ рдХреЗ рд▓рд┐рдПред рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рд░реНрд╡рд░
рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ ред
рд▓рд┐рдВрдХ рдореЛрдВрдЧреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ MongoDB рдХреЛ рд╕рд░реНрд╡рд░ API рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рд░реНрд╡рд░, рдХреНрд▓рд╛рдЗрдВрдЯ, рдорд╛рдирдЧреЛ - рд╕реЗрд╡рд╛ рдирд╛рдоред
VueJS рдкрд░ рдЧреНрд░рд╛рд╣рдХ
/ рдХреНрд▓рд╛рдЗрдВрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ VueJS рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реЛрддрд╛ рд╣реИред
Vue Cli рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧред рдЫрд╡рд┐ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╕рдордп, рдХреНрд▓рд╛рдЗрдВрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди
/ рдбрд┐рд╕реНрдЯрд░реНрдм рдлреЛрд▓реНрдбрд░ рдореЗрдВ рд╕реНрдЯреИрдЯрд┐рдХ рдлрд╛рдЗрд▓реНрд╕ рдХреЗ рд╕реЗрдЯ рдореЗрдВ рдмрдирд╛рддрд╛ рд╣реИред 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 рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдИ рдЧрдИ рд╣реИ рдФрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдмрд╛рдХреА рд╣рд┐рд╕реНрд╕реЛрдВ рд╕реЗ рдЕрд▓рдЧ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рд╣реИред рдпрд╣ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдкреБрдирдГ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╕рдордп / рдиреЛрдб_рдореЙрдбрд▓ рдлрд╝реЛрд▓реНрдбрд░ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдХреИрд╢ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдкреНрд░рддреНрдпреЗрдХ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЕрд▓рдЧ рд╕реЗ рдХреИрд╢ рдХреА рдЬрд╛рддреА рд╣реИред
рдЕрдВрдд рдореЗрдВ, рдЬрдм рдХрдВрдЯреЗрдирд░ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ
npm run dev
рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддрд╛ рд╣реИред рдЗрд╕ рдЖрджреЗрд╢ рдХреЛ рдкреИрдХреЗрдЬ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╕рдВрджреЗрд╢:
"scripts": { "test:dev": "http-server dist -p 8081 -c 1 --push-state" }
/ рдбрд┐рд╕реНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП,
http-server
рд╡рд┐рд╢реНрд╡ рд╕реНрддрд░ рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░
spa-http-server
рдкреИрдХреЗрдЬ рджреЗрд╡-рдирд┐рд░реНрднрд░рддрд╛ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рддрд╛рдХрд┐ Vue Router рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░реЗред тАУPush-state рдлреНрд▓реИрдЧ рдХреЛ index.html рдкрд░ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд░рддрд╛ рд╣реИред 1 рд╕реЗрдХрдВрдб рдХреЗ рдорд╛рди рдХреЗ рд╕рд╛рде -c рдзреНрд╡рдЬ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐
http-server рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рдХреЛ рдХреИрд╢ рди рдХрд░реЗрдВред рдпрд╣ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИ, рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдпрд╣ рдирдЧреАрдирдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред
Vuex рд╕реНрдЯреЛрд░ рдореЗрдВ,
apiHost: 'http://localhost:3000'
рдлрд╝реАрд▓реНрдб, рдЬрд╣рд╛рдВ NodeJS Api рдкреЛрд░реНрдЯ рдкрдВрдЬреАрдХреГрдд рд╣реИред рдЧреНрд░рд╛рд╣рдХ рднрд╛рдЧ рддреИрдпрд╛рд░ рд╣реИред рдЕрдм рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗ рдмреИрдХ рддрдХ рдХреЗ рд╕рднреА рдЕрдиреБрд░реЛрдз рдЗрд╕ рдпреВрдЖрд░рдПрд▓ рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВред
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 рдбреЗрдЯрд╛рдмреЗрд╕
const url = 'mongodb://mongo:27017/';
рд▓рд┐рдП
url рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ
const url = 'mongodb://mongo:27017/';
ред рд╣рдо рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗ рдХреНрд░реЙрд╕-рдбреЛрдореЗрди рдЕрдиреБрд░реЛрдз рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ:
const clientUrl = 'http://localhost:8081'; const corsOptions = { origin: clientUrl, optionsSuccessStatus: 200,
рдирд┐рд╖реНрдХрд░реНрд╖
рдЕрдм рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рд╢реБрд░реВ
docker-compose build
рдЗрдореЗрдЬ
docker-compose build
рдФрд░
docker-compose up
рд▓рд┐рдП
docker-compose up
ред рдХрдорд╛рдВрдб 3 рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рдмрдврд╝рд╛рдПрдЧрд╛:
рд╕рд░реНрд╡рд░, рдХреНрд▓рд╛рдЗрдВрдЯ, рдореЛрдВрдЧреЛ ред NodeJS рдкрд░ рдПрдХ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЗрд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рдХрд░ рд╣реЙрдЯ-рд░реАрд▓реЛрдб рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рд╣реЙрдЯ рд░реАрд▓реЛрдб рдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рд╕реЗ
рд╕рд░реНрд╡рд░ рдФрд░
рдорд╛рдирдЧреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╛рд╕ рдХреЗ рдЕрдзреАрди рд╣реИред рдПрдХ рдЕрд▓рдЧ рд╕реЗрд╡рд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рдЕрдкрдирд╛ рдирд╛рдо
docker-compose up client
рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдЦрд╛рд▓реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрднреА-рдХрднреА рдХрдВрдЯреЗрдирд░, рдиреЗрдЯрд╡рд░реНрдХ рдФрд░ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ
prune
рдФрд░ рд╣рдЯрд╛рдирд╛ рдпрд╛рдж рд░рдЦреЗрдВред
рдкреВрд░реНрдг рдХреЛрдб
рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╣реИ ред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЕрднреА рднреА рд╡рд┐рдХрд╛рд╕ рдХреЗ рдЕрдзреАрди рд╣реИред