Otu esi etinye ngwa VueJS + NodeJS + MongoDB na Docker

Otu esi etinye ngwa VueJS + NodeJS + MongoDB na Docker
Dị ka ị nwere ike ịghọta site na isiokwu gara aga, arụrụ m ọrụ dị iche iche. Ụbọchị mbụ n'ime otu ọhụrụ na-emekarị otu ụzọ ahụ: onye na-azụ ya na-anọdụ ala na m ma na-eme ihe anwansi iji wụnye na ibuga ngwa ahụ. Docker dị mkpa maka ndị mmepe n'ihu n'ihi na ... A na-edekarị azụ azụ n'ọtụtụ dị iche iche nke PHP / Java / Python / C #, na n'ihu adịghị mkpa ịdọpụ azụ azụ mgbe ọ bụla iji wụnye na ibuga ihe niile. Naanị n'otu ebe ka ahụrụ m nchikota Docker-Jenkins yana ntinye n'ụzọ doro anya, ndekọ ndekọ na ule akpaghị aka.

Edela ọtụtụ akụkọ zuru ezu gbasara Docker. Edemede a ga-ekwu maka ibuga ngwa otu ibe site na iji VueJS/Vue Router, akụkụ nkesa dị n'ụdị API RESTful nwere NodeJS, a na-ejikwa MongoDB dị ka nchekwa data. A na-eji Docker Compose kọwaa ma mee ọtụtụ ngwa akpa.

Kedu ihe kpatara ịchọrọ Docker?

Docker na-enye gị ohere ịmegharị usoro nke ibuga ngwa. Onye nrụpụta ahụ adịkwaghị mkpa ịwụnye mmemme n'onwe ya ma ọ bụ na-ahụ maka enweghị ndakọrịta ụdị na igwe ya. Ihe niile ị ga - eme bụ ịwụnye Docker wee pịnye iwu 1-2 n'ime njikwa. Ụzọ kachasị mma iji mee nke a bụ na Linux.

Na-amalite

Wụnye Docker na Docker dere

Ọdịdị nchekwa

Anyị na-emepụta nchekwa 2 maka ngwa ahịa na nkesa. Otu faịlụ nwere ndọtị .yml bụ nhazi Docker Dezie, ebe a na-akọwapụta ngwa ngwa ma jikọta ya.
Docker-compose.yml:

version: "3"
services:
  mongo:
    container_name: mongo
    hostname: mongo
    image: mongo
    ports:
      - "27017:27017"
  server:
    build: server/
    #command: node ./server.js #здесь можно перезаписать CMD из Dockerfile в /server
    ports:
      - "3000:3000"
    links:
      - mongo
  client:
    build: client/
    #command: http-server ./dist #здесь можно перезаписать CMD из Dockerfile в /client
    network_mode: host
    ports:
      - "8089:8089"
    depends_on:
      - server

Anyị na-emepụta ọrụ 3 na Docker: maka NodeJS, MongoDB na maka ndị kwụ ọtọ na Vue. Agbakwunyere iji jikọọ onye ahịa na nkesa dabere na ihe nkesa. Iji jikọta MongoDB na API nkesa, jiri njikọ mongo. Ihe nkesa, onye ahịa, mongo - aha ọrụ.

VueJS ahịa

Na nchekwa / onye ahịa Ngwa a dabere na VueJS. Emepụtara ngwa a site na iji Vue Cli. Mgbe ị na-ewu onyonyo, a na-ewu ngwa ndị ahịa n'ime faịlụ static dị na folda ahụ /dist. Dockerfile na-akọwa usoro iwu maka iwulite onyonyo:

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"]

Biko mara na a na-edepụtaghachi ma tinye ngwugwu package.json iche na faịlụ ọrụ ndị ọzọ. Emere nke a maka ịrụ ọrụ, nke mere na a na-echekwa ọdịnaya nke folda / node_modules mgbe arụrụ ya ọzọ. A na-echekwa ahịrị iwu ọ bụla iche iche.

N'ikpeazụ, mgbe akpa ahụ malitere, a na-eme iwu ahụ npm run dev. A kọwara iwu a na ngwugwu.json:


"scripts": {
	 "test:dev": "http-server dist -p 8081 -c 1 --push-state"
}

Iji mee faịlụ site na folda /dist, arụnyere n'ụwa niile http-server, na na dev-dependencies ngwugwu spa-http-servernke mere na Vue Router na-arụ ọrụ nke ọma. Ọkọlọtọ --push-state na-atụgharị gaa na index.html. Agbakwunyere ọkọlọtọ -c nwere uru nke 1 sekọnd http-ihe nkesa emeghị cache scripts. Nke a bụ ihe atụ nnwale; na ezigbo ọrụ ọ ka mma iji nginx.

Na Vuex ụlọ ahịa anyị na-emepụta ubi apiHost: 'http://localhost:3000', ebe edebanyere ọdụ ụgbọ mmiri NodeJS Api. Akụkụ ndị ahịa dị njikere. Ugbu a arịrịọ niile sitere n'aka onye ahịa gaa n'azụ gaa na url a.

API sava NodeJS

Na nchekwa /server mepụta nkesa na Dockerfile:


FROM node:10
WORKDIR /server
COPY ./package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node", "server.js"]

В nkesa egosi url maka nchekwa data const url = 'mongodb://mongo:27017/';. Na-enye ohere ịrịọ ngalaba n'ofe nke onye ahịa:


const clientUrl = 'http://localhost:8081';
const corsOptions = {
  origin: clientUrl,
  optionsSuccessStatus: 200, // some legacy browsers (IE11, various SmartTVs) choke on 204
};
app.use(cors());
app.all('/*', (req, res, next) => {
  res.header('Access-Control-Allow-Origin', clientUrl);
  res.header('Access-Control-Allow-Headers', 'X-Requested-With');
  next();
});
  app.get('/getProducts', cors(corsOptions), (req, res) => {
    products.getContent
      .then(data => res.json(data), err => res.json(err));
  });
  app.get('/getUsers', cors(corsOptions), (req, res) => {
    db.getUsers()
      .then(data => res.json(data), err => res.json(err));
  });

nkwubi

Ugbu a, ka anyị gaa na ndekọ ndekọ ọrụ wee gbaa ọsọ docker-compose build maka ịrụ ihe oyiyi na docker-compose up na-agba ọsọ containers. Otu a ga-ebuli arịa atọ: ihe nkesa, onye ahịa, mongo. Maka ihe nkesa NodeJS, ị nwere ike hazie ibugharị ọkụ site na ijikọ ya na nchekwa onye ọrụ. Na onye ahịa nọ n'okpuru mmepe kwesịrị ịmalite na mpaghara ya na-ebugharị ọkụ, na-agba ọsọ iche server и Mongo. Ka ịmalite ọrụ dị iche, naanị ezipụta aha ya docker-compose up client. Echefula ime ya mgbe ụfọdụ prune na ihichapụ akpa, netwọkụ na onyonyo iji wepụta akụrụngwa.

Ị nwere ike ịhụ koodu zuru ezu ebe a. A ka na-arụ ọrụ a.

isi: www.habr.com

Tinye a comment