Sezvaunogona kunzwisisa kubva munyaya yapfuura, ndakashanda pamapurojekiti akasiyana. Mazuva ekutanga muchikwata chitsva kazhinji anoenda nenzira imwechete: uyo anodzosera kumashure anogara pasi neni uye anoita mashiripiti zviito zvekuisa uye kutumira application. Docker yakakosha kune vanogadzira kumberi nekuti ... Iyo backend inowanzo kunyorwa mune yakakura yeFP / Java / Python / C # stacks, uye kumberi hakufanirwe kukanganisa iyo backend nguva dzese yekuisa uye kuendesa zvese. Munzvimbo imwechete chete ndakaona musanganiswa weDocker-Jenkins nekuisa pachena, matanda, uye otomatiki bvunzo.
Zvinyorwa zvakawanda zvakatsanangurwa zvakanyorwa nezve Docker. Ichi chinyorwa chichataura nezve kuendesa Single Peji Chikumbiro uchishandisa VueJS/Vue Router, sevha chikamu chiri muchimiro cheRESTful API neNodeJS, uye MongoDB inoshandiswa sedhatabhesi. Docker Compose inoshandiswa kutsanangura uye kumhanya akawanda emidziyo yekushandisa.
Nei Docker ichidikanwa
Docker inokutendera kuti uite otomatiki maitiro ekutumira application. Mugadziri haachadi kuisa zvirongwa ari ega kana kubata nekusaenderana neshanduro pamushini wake. Zvese zvaunoda kuti uite kuisa Docker uye nyora 1-2 mirairo mukoni. Nzira iri nyore yekuita izvi iri paLinux.
Kutanga
Install
Folder chimiro
Isu tinogadzira maforodha maviri emutengi uye server application. Faili rine .yml extension is a config Docker Kudzora, uko midziyo yekushandisa inotsanangurwa uye yakabatana.
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
Isu tinogadzira masevhisi matatu muDocker: yeNodeJS, MongoDB uye yeakamira ari muVue. Yakawedzerwa kubatanidza mutengi kune server zvinoenderana ne server. Kubatanidza MongoDB neserver API, shandisa links mongo. Sevha, mutengi, mongo - mazita emasevhisi.
VueJS mutengi
Mune folda /client Iko kushandiswa kwakavakirwa paVueJS. Iyo application yakagadzirwa uchishandisa
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"]
Ndokumbira utarise kuti package.json inokopwa uye yakaiswa zvakasiyana kubva kune mamwe mafaera eprojekiti. Izvi zvinoitirwa kuita, kuitira kuti zviri mukati me /node_modules folda zvichengetedzwe pakuvaka zvakare. Mutsara wega wega wekuraira wakachengetwa wakasiyana.
Pakupedzisira, kana mudziyo ukatanga, murairo unoitwa npm run dev
. Uyu murairo unotsanangurwa mu package.json:
"scripts": {
"test:dev": "http-server dist -p 8081 -c 1 --push-state"
}
Kumhanyisa mafaera kubva kune folda /dist, yakaiswa pasi rose http-server
, uye mune dev-inotsamira pasuru spa-http-server
kuitira kuti Vue Router ishande nemazvo. Iyo --push-state mureza inotungamira kune index.html. Iyo -c mureza ine kukosha kwesekondi 1 yakawedzerwa http-server haina cache zvinyorwa. Uyu muenzaniso wekuyedza; pane purojekiti chaiyo zviri nani kushandisa nginx.
Muchitoro cheVuex tinogadzira munda apiHost: 'http://localhost:3000'
, uko NodeJS Api port yakanyoreswa. Chikamu chemutengi chakagadzirira. Zvino zvikumbiro zvese kubva kumutengi kuenda kumashure enda kune iyi url.
Purogiramu inonzi NodeJS server
Mune folda /server
gadzira server.js uye Dockerfile:
FROM node:10
WORKDIR /server
COPY ./package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node", "server.js"]
Π server.js yakaratidza URL kune database const url = 'mongodb://mongo:27017/';
. Kubvumidza zvakayambuka-domain zvikumbiro kubva kumutengi:
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));
});
mhedziso
Iye zvino ngatiende kune dhairekitori reprojekiti uye timhanye docker-compose build
yekugadzira mifananidzo uye docker-compose up
kumhanya midziyo. Chikwata chichasimudza midziyo mitatu: server, mutengi, mongo. Kune sevha yeNodeJS, unogona kugadzirisa kupisa-kurodha zvakare nekuibatanidza kune folda yemushandisi. Uye mutengi ari pasi pekuvandudzwa anofanirwa kutangwa munharaunda nekupisa zvakare, ichimhanya zvakasiyana Server ΠΈ mongo. Kuti utange sevhisi yakaparadzana, ingotaura zita rayo docker-compose up client
. Usakanganwa kuzviita dzimwe nguva prune
uye kudzima midziyo, network, uye mifananidzo kusunungura zviwanikwa.
Iwe unogona kuona iyo yakazara kodhi
Source: www.habr.com