Conas feidhmchlár VueJS + NodeJS + MongoDB a phacáistiú i Docker

Conas feidhmchlár VueJS + NodeJS + MongoDB a phacáistiú i Docker
Mar a fheiceann tú ón alt roimhe seo, d'oibrigh mé le tionscadail éagsúla. Is gnách go dtéann na chéad laethanta i bhfoireann nua ar an mbealach céanna: suíonn an t-inneallóir síos domsa agus déanann sé na céimeanna draíochta chun an feidhmchlár a shuiteáil agus a imscaradh. Tá Docker fíor-riachtanach d'fhorbróirí tosaigh, mar gheall ar. Is minic a scríobhtar an t-inneall i raon leathan de chruach PHP/Java/Python/C# agus ní gá don tosach an cúl a bhaint gach uair chun gach rud a shuiteáil agus a imscaradh. Ach in aon áit amháin chonaic mé bunch de Docker-Jenkins le imscaradh trédhearcach, logs, screwed le autotests.

Scríobhadh go leor alt mionsonraithe faoin docker. Díreoidh an t-alt seo ar Iarratas Leathanach Aonair a imscaradh ag baint úsáide as Ródaire VueJS / Vue, an chuid freastalaí i bhfoirm API RESTful le NodeJS, agus úsáidtear MongoDB mar bhunachar sonraí. Úsáidtear Docker Compose chun cur síos a dhéanamh ar fheidhmeanna coimeádáin iolracha agus iad a rith.

Cén fáth ar gá duit Docker

Ligeann Docker duit an próiseas a bhaineann le feidhmchlár a imscaradh a uathoibriú. Ní gá don fhorbróir cláir a shuiteáil leis féin a thuilleadh, déileáil le neamh-chomhoiriúnacht an leagain ar a mheaisín. Is leor Docker a shuiteáil agus orduithe 1-2 a chlóscríobh isteach sa chonsól. Tá sé an-áisiúil é seo a dhéanamh ar Linux.

Ag tosú

Socraigh dhugaire agus Docker cum

Struchtúr fillteáin

Cruthaímid 2 fhillteán d'fheidhmchláir chliaint agus fhreastalaí. Is cumraíocht é comhad leis an síneadh .yml Comhdháil Dockeri gcás ina sainítear agus ina nasctar na coimeádáin iarratais.
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

Cruthaímid 3 sheirbhís i ndugairí: do NodeJS, MongoDB agus do stats ar Vue. Chun an cliant a nascadh leis an bhfreastalaí curtha leis ag brath ar an bhfreastalaí. Chun MongoDB a nascadh le API an fhreastalaí, bain úsáid as naisc mongo. Freastalaí, cliant, mongo is ainm do na seirbhísí.

Cliant VueJS

San fhillteán /cliant tá an feidhmchlár suite ar VueJS. Feidhmchlár cruthaithe le vue cli. Agus íomhá á thógáil, cuirtear an t-iarratas cliant isteach i sraith de chomhaid statacha i bhfillteán /dist. Déanann an Dockerfile cur síos ar shraith orduithe chun íomhá a thógáil:

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

Tabhair faoi deara go ndéantar package.json a chóipeáil agus a shuiteáil ar leithligh ón gcuid eile de chomhaid an tionscadail. Déantar é seo le haghaidh feidhmíochta ionas go mbeidh inneachar an fhillteáin /node_modules i dtaisce nuair a atógtar é. Tá gach líne ordaithe i dtaisce ar leithligh.

Ag an deireadh, nuair a thosaíonn an coimeádán, déantar an t-ordú a fhorghníomhú npm run dev. Déantar cur síos ar an ordú seo i package.json:


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

Chun comhaid a rith ó fhillteán /dist, socraithe go domhanda http-server, agus i bpacáiste dev-spleáchais spa-http-serverle go n-oibreoidh an Ródaire Vue i gceart. Atreoraíonn an bhratach --push-state chuig index.html. Tá an bhratach -c ar a bhfuil luach 1 soicind curtha leis http freastalaí níor taisceadh scripteanna. Is sampla tástála é seo, ar thionscadal fíor tá sé níos fearr nginx a úsáid.

Cruthaigh réimse sa siopa Vuex apiHost: 'http://localhost:3000', áit a bhfuil an port NodeJS Api scríofa. Tá an chuid cliant réidh. Anois téann gach iarratas ón gcliant chuig an gceann cúil chuig an url seo.

API Freastalaí NodeJS

San fhillteán /server chruthú freastalaí.js agus Dockerfile:


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

В freastalaí.js léirithe url le haghaidh bunachar sonraí const url = 'mongodb://mongo:27017/';. Ceadaímid iarratais tras-fearainn ón gcliant:


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));
  });

Conclúid

Anois téigh go dtí an eolaire tionscadail agus a reáchtáil docker-compose build le haghaidh íomháithe agus docker-compose up chun coimeádáin a rith. Ardóidh an t-ordú 3 choimeádán: freastalaí, cliant, mongo. Maidir le freastalaí NodeJS, is féidir leat te-athlódáil a chumrú trína nascadh leis an bhfillteán úsáideora. Agus tá an cliant á fhorbairt a reáchtáil go háitiúil le athlódáil te, ag rith ar leithligh freastalaí и Mongo. Chun tús a chur le seirbhís ar leith, sonraigh a ainm docker-compose up client. Ná déan dearmad é a dhéanamh uaireanta prune agus coimeádáin (coimeádáin), líonraí (líonraí) agus íomhánna (íomhánna) a bhaint chun acmhainní a shaoradh.

Is féidir leat an cód iomlán a fheiceáil anseo. Tá an tionscadal fós á fhorbairt.

Foinse: will.com

Add a comment