E like me kāu e hoʻomaopopo ai mai ka ʻatikala mua, ua hana wau i nā papahana like ʻole. ʻO nā lā mua i loko o kahi hui hou e hele maʻamau i ke ala like: noho ka backender me aʻu a hana i nā hana hoʻokalakupua e hoʻokomo a kau i ka noi. Pono ʻo Docker no nā mea hoʻomohala mua no ka mea ... Hoʻopaʻa pinepine ʻia ka backend ma kahi ākea o PHP/Java/Python/C# stacks, a ʻaʻole pono ka mua e hoʻohuli i ka backend i kēlā me kēia manawa e hoʻokomo a hoʻokau i nā mea āpau. Ma kahi hoʻokahi wale nō wau i ʻike ai i kahi hui Docker-Jenkins me kahi hoʻolaha ʻike, nā lāʻau, a me nā hoʻāʻo automated.
Nui nā ʻatikala kikoʻī i kākau ʻia e pili ana iā Docker. E kamaʻilio kēia ʻatikala e pili ana i ka hoʻohana ʻana i kahi palapala ʻaoʻao hoʻokahi me ka hoʻohana ʻana iā VueJS/Vue Router, aia ka ʻāpana kikowaena ma ke ʻano o kahi RESTful API me NodeJS, a hoʻohana ʻia ʻo MongoDB ma ke ʻano he waihona. Hoʻohana ʻia ʻo Docker Compose e wehewehe a holo i nā noi pahu he nui.
No ke aha e pono ai ʻo Docker
Hāʻawi ʻo Docker iā ʻoe e hoʻomaʻamaʻa i ke kaʻina hana o ka lawe ʻana i kahi noi. ʻAʻole pono ka mea hoʻomohala e hoʻokomo i nā polokalamu iā ia iho a i ʻole e hoʻoponopono i ka pili ʻole o ka mana ma kāna mīkini. ʻO nā mea a pau āu e hana ai, ʻo ia ke kau iā Docker a hoʻokomo i nā kauoha 1-2 i loko o ka console. ʻO ke ala maʻalahi loa e hana i kēia ma Linux.
Ke hoʻomaka
E hoʻouka
Kapili waihona
Hana mākou i 2 mau waihona no ka mea kūʻai aku a me nā noi kikowaena. ʻO kahi faila me ka hoʻonui .yml he config Docker papa inoa, kahi i wehewehe ʻia ai nā pahu noi a pili.
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
Hana mākou i nā lawelawe 3 ma Docker: no NodeJS, MongoDB a no nā mea static ma Vue. Hoʻohui ʻia e hoʻohui i ka mea kūʻai aku i ke kikowaena pili i ke kikowaena. No ka hoʻopili ʻana iā MongoDB me ka API server, e hoʻohana loulou mongo. Server, mea kūʻai, mongo - inoa o nā lawelawe.
VueJS mea kūʻai
Ma nā palapala /mea kūʻai Hoʻokumu ʻia ka palapala noi ma VueJS. Ua hana ʻia ka polokalamu me ka hoʻohana ʻana
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"]
E ʻoluʻolu e hoʻomaopopo ʻia ua kope ʻia ka package.json a hoʻonohonoho ʻokoʻa ʻia mai ke koena o nā faila papahana. Hana ʻia kēia no ka hana, i hūnā ʻia nā mea o ka waihona / node_modules i ke kūkulu hou ʻana. Hoʻokaʻawale ʻia kēlā me kēia laina kauoha.
ʻO ka hope, ke hoʻomaka ka pahu, hoʻokō ʻia ke kauoha npm run dev
. Ua wehewehe ʻia kēia kauoha ma package.json:
"scripts": {
"test:dev": "http-server dist -p 8081 -c 1 --push-state"
}
No ka holo ʻana i nā faila mai kahi waihona /dist, hoʻokomo ʻia ma ka honua holoʻokoʻa http-server
, a ma dev-dependencies ka pūʻolo spa-http-server
i hana pono ai ka Vue Router. Hoʻihoʻi hou ka hae --push-state i index.html. Ua hoʻohui ʻia ka hae -c me ka waiwai o 1 kekona http-server ʻaʻole i hūnā i nā palapala. He hōʻike hōʻike kēia; ma kahi papahana maoli ʻoi aku ka maikaʻi o ka hoʻohana ʻana i ka nginx.
Ma ka hale kūʻai Vuex hana mākou i kahi kahua apiHost: 'http://localhost:3000'
, kahi i hoʻopaʻa inoa ʻia ai ka awa NodeJS Api. Ua mākaukau ka ʻāpana o ka mea kūʻai aku. I kēia manawa, hele nā noi āpau mai ka mea kūʻai aku a i hope i kēia url.
API nodeJS kikowaena
Ma nā palapala /server
hana kikowaena.js a me Dockerfile:
FROM node:10
WORKDIR /server
COPY ./package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node", "server.js"]
В kikowaena.js i kuhikuhi ʻia henua pilikia no ka waihona const url = 'mongodb://mongo:27017/';
. E ʻae ana i nā noi kāʻei kapu mai ka mea kūʻai mai:
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));
});
hopena
E hele kāua i ka papa kuhikuhi papahana a holo docker-compose build
no ke kukulu ana i na kii a docker-compose up
e holo ipu. E hāpai ka hui i 3 pahu: kikowaena, mea kūʻai, mongo. No kahi kikowaena NodeJS, hiki iā ʻoe ke hoʻonohonoho i ka hoʻouka hou ʻana ma o ka hoʻopili ʻana iā ia i ka waihona mea hoʻohana. A ʻo ka mea kūʻai aku ma lalo o ka hoʻomohala ʻia e hoʻokuʻu ʻia ma ka ʻāina me ka hoʻouka hou ʻana, e holo kaʻawale kikowaena и ʻo Mongo. No ka hoʻomaka ʻana i kahi lawelawe ʻokoʻa, e kuhikuhi wale i kona inoa docker-compose up client
. Mai poina e hana i kekahi manawa prune
a me ka holoi ʻana i nā ipu, nā pūnaewele, a me nā kiʻi e hoʻokuʻu i nā kumuwaiwai.
Hiki iā ʻoe ke ʻike i ke code piha
Source: www.habr.com