Ka taea e koe te mohio mai i te tuhinga o mua, i mahi ahau i runga i nga kaupapa rereke. Ko nga ra tuatahi i roto i te roopu hou he rite tonu te haere: ka noho te kaihuri ki raro ki ahau, ka mahi i nga mahi makutu hei whakauru me te tuku i te tono. He mea nui a Docker mo nga kaihanga o mua na te mea ... He maha nga wa ka tuhia te tuara i roto i te maha o nga puranga PHP / Java / Python / C #, a kaore te mua o mua ki te whakararuraru i te tuara i nga wa katoa ki te whakauru me te tuku i nga mea katoa. I te waahi kotahi anake ka kite ahau i te huinga Docker-Jenkins me te whakatakotoranga maamaa, nga raarangi, me nga whakamatautau aunoa.
He maha nga tuhinga taipitopito kua tuhia mo Docker. Ko tenei tuhinga ka korero mo te tuku i tetahi Tono Wharangi Kotahi ma te whakamahi i te VueJS/Vue Router, ko te waahanga tūmau kei te ahua o te RESTful API me NodeJS, ka whakamahia a MongoDB hei papaarangi. Ka whakamahia a Docker Compose ki te tautuhi me te whakahaere i nga tono ipu maha.
He aha te take e hiahiatia ana a Docker
Ka taea e Docker te whakaaunoa i te mahi tuku tono. Ko te kaiwhakawhanake kaore e hiahia ki te whakauru i nga papatono ki a ia ake, ki te whakahaere ranei i te koretake o te putanga ki tana miihini. Ko nga mea katoa e hiahia ana koe ki te whakauru i a Docker ka patohia nga whakahau 1-2 ki te papatohu. Ko te huarahi tino watea ki te mahi i tenei kei runga i te Linux.
Tīmata
Whakauruhia
Hanganga kōpaki
Ka waihangahia e matou nga kōpaki e 2 mo nga tono a te kiritaki me te tūmau. He whirihora te konae me te toronga .yml Whakaritea e Docker, kei reira nga ipu tono kua tautuhia me te hono.
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
Ka hangaia e matou nga ratonga e 3 ki Docker: mo NodeJS, MongoDB me nga mea tuuturu i Vue. Kua taapirihia hei hono i te kiritaki ki te tūmau kei runga i te tūmau. Hei hono MongoDB ki te API tūmau, whakamahia hononga mongo. Tūmau, kiritaki, mongo - ingoa o ngā ratonga.
Kiritaki VueJS
Kei te kōpaki /kiritaki Ko te tono kei runga i te VueJS. I hangaia te tono ma te whakamahi
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"]
Kia mahara ko package.json te kape me te whakauru motuhake mai i te toenga o nga konae kaupapa. Ka mahia tenei mo te mahi, kia noho keteroki nga ihirangi o te kōpaki /node_modules ina hanga ano. He keteroki motuhake ia rarangi whakahau.
Ka mutu, ka timata te ipu, ka mahia te whakahau npm run dev
. Kei te whakaahuahia tenei tono i te package.json:
"scripts": {
"test:dev": "http-server dist -p 8081 -c 1 --push-state"
}
Hei whakahaere i nga konae mai i te kōpaki /dist, kua whakauruhia ki te ao katoa http-server
, a i roto i nga dev-whakawhirinaki te kete spa-http-server
kia tika te mahi a Vue Router. Ka anga te haki --push-state ki index.html. Ko te haki -c me te uara 1 hēkona i tāpirihia ki http-tūmau kaore i keteroki nga tuhinga. He tauira whakamatautau tenei; i runga i te kaupapa pono he pai ake te whakamahi nginx.
I roto i te toa Vuex ka hangaia e matou he mara apiHost: 'http://localhost:3000'
, kei te rehitatia te tauranga NodeJS Api. Kua reri te wahanga o te kiritaki. Inaianei ko nga tono katoa mai i te kiritaki ki muri ka haere ki tenei url.
API tūmau NodeJS
Kei te kōpaki /server
hanga tūmau.js me Dockerfile:
FROM node:10
WORKDIR /server
COPY ./package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node", "server.js"]
В tūmau.js kua tohua url mō te pātengi raraunga const url = 'mongodb://mongo:27017/';
. Whakaaetia nga tono whakawhiti-rohe mai i te kiritaki:
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));
});
mutunga
Inaianei me haere ki te raarangi kaupapa ka oma docker-compose build
mo te hanga whakaahua me docker-compose up
ki te whakahaere ipu. Ka hikina e te kapa e toru nga ipu: tūmau, kiritaki, mongo. Mo te tūmau NodeJS, ka taea e koe te whirihora i te wera-hou ma te hono ki te kōpaki kaiwhakamahi. A ko te kiritaki kei te whakawhanake me whakarewahia ki te rohe me te uta wera, ka rere wehe tūmau и mongo. Hei timata i tetahi ratonga motuhake, tohua noa tona ingoa docker-compose up client
. Kaua e wareware ki te mahi i etahi wa prune
me te whakakore i nga ipu, nga whatunga, me nga whakaahua kia waatea ai nga rauemi.
Ka taea e koe te kite i te waehere katoa
Source: will.com