เบเบฑเปเบเบเบตเปเบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเบปเปเบฒเปเบเปเบเปเบเบฒเบเบเบปเบเบเบงเบฒเบกเบเบตเปเบเปเบฒเบเบกเบฒ, เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเปเบฎเบฑเบเบงเบฝเบเบเปเบฝเบงเบเบฑเบเปเบเบเบเบฒเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบ. เบกเบทเปเบเปเบฒเบญเบดเบเปเบเบเบตเบกเบเบฒเบเปเบซเบกเปเบกเบฑเบเบเบฐเปเบเปเบเบเบฒเบเบเบฝเบงเบเบฑเบ: backender เบเบฑเปเบเบฅเบปเบเบเบฑเบเบเปเบญเบเปเบฅเบฐเบเปเบฒเปเบเบตเบเบเบฒเบ magical เบเบตเปเบเบฐเบเบดเบเบเบฑเปเบเปเบฅเบฐ deploy เบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบ. Docker เปเบกเปเบเบชเบดเปเบเบเบตเปเบเบฒเบเบเปเปเปเบเปเบชเปเบฒเบฅเบฑเบเบเบฑเบเบเบฑเบเบเบฐเบเบฒเปเบเบงเบซเบเปเบฒเปเบเบฒเบฐเบงเปเบฒ ... backend เบกเบฑเบเบเบฐเบเบทเบเบเบฝเบเปเบงเปเปเบเบเบงเบฒเบกเบเบงเปเบฒเบเบเบญเบ PHP / Java / Python / C# stacks, เปเบฅเบฐเบเปเบฒเบเบซเบเปเบฒเบเปเปเบเปเบฒเปเบเบฑเบเบเปเบญเบเบฅเบปเบเบเบงเบ backend เบเบธเบเปเบเบฑเปเบเปเบเบทเปเบญเบเบดเบเบเบฑเปเบเปเบฅเบฐเบเปเบฒเปเบเปเบเบธเบเบขเปเบฒเบ. เบกเบตเบเบฝเบเปเบเปเบขเบนเปเบเปเบญเบเบเบฝเบงเบเบตเปเบเปเบญเบเปเบซเบฑเบเบเบฒเบเบเบฐเบชเบปเบกเบเบฐเบชเบฒเบ Docker-Jenkins เบเบฑเบเบเบฒเบเบเบดเบเบเบฑเปเบเบเบตเปเปเบเปเบเปเบช, เบเบฑเบเบเบถเบ, เปเบฅเบฐเบเบฒเบเบเบปเบเบชเบญเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบ.
เบเบปเบเบเบงเบฒเบกเบฅเบฒเบเบฅเบฐเบญเบฝเบเบเปเบฒเบเบงเบเบซเบผเบฒเบเปเบเปเบเบทเบเบเบฝเบเบเปเบฝเบงเบเบฑเบ Docker. เบเบปเบเบเบงเบฒเบกเบเบตเปเบเบฐเปเบงเบปเปเบฒเบเปเบฝเบงเบเบฑเบเบเบฒเบเบเปเบฒเปเบเปเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเบซเบเปเบฒเบเบฝเบงเปเบเบเปเบเป VueJS / Vue Router, เบชเปเบงเบเปเบเบตเบเปเบงเบตเปเบกเปเบเบขเบนเปเปเบเบฎเบนเบเปเบเบ RESTful API เบเบฑเบ NodeJS, เปเบฅเบฐ MongoDB เบเบทเบเบเปเบฒเปเบเปเปเบเบฑเบเบเบฒเบเบเปเปเบกเบนเบ. Docker Compose เบเบทเบเบเปเบฒเปเบเปเปเบเบทเปเบญเบเปเบฒเบเบปเบเปเบฅเบฐเบเปเบฒเปเบเบตเบเบเบฒเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเบเบฑเบเบเบธเบซเบผเบฒเบ.
เปเบเบฑเบเบซเบเบฑเบ Docker เบเบถเปเบเบเปเบญเบเบเบฒเบ
Docker เบเปเบงเบเปเบซเปเบเปเบฒเบเบชเบฒเบกเบฒเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบเบเบฐเบเบงเบเบเบฒเบเบเบญเบเบเบฒเบเบเปเบฒเปเบเปเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเปเบเป. เบเบนเปเบเบฑเบเบเบฐเบเบฒเบเปเปเบเบณเปเบเบฑเบเบเปเบญเบเบเบดเบเบเบฑเปเบเปเบเบฃเปเบเบกเบเปเบงเบเบเบปเบเปเบญเบ เบซเบผเบท เบเบฑเบเบเบฒเบเบเบฑเบเบเบงเบฒเบกเปเบเบปเปเบฒเบเบฑเบเบเบญเบเบฅเบธเปเบเปเบเปเบเบทเปเบญเบเบเบญเบเบฅเบฒเบง. เบชเบดเปเบเบเบตเปเบเปเบฒเบเบเปเบญเบเปเบฎเบฑเบเปเบกเปเบเบเบดเบเบเบฑเปเบ Docker เปเบฅเบฐเบเบดเบก 1-2 เบเปเบฒเบชเบฑเปเบเปเบเบปเปเบฒเปเบเปเบ console. เบงเบดเบเบตเบเบตเปเบชเบฐเบเบงเบเบเบตเปเบชเบธเบเบเบตเปเบเบฐเปเบฎเบฑเบเบเบตเปเปเบกเปเบเบขเบนเปเปเบ Linux.
เบเบฒเบเปเบฅเบตเปเบกเบเบปเปเบ
เบเบดเบเบเบฑเปเบ
เปเบเบเบชเปเบฒเบเปเบเบเปเบเบต
เบเบงเบเปเบฎเบปเบฒเบชเปเบฒเบ 2 เปเบเบเปเบเบตเบชเปเบฒเบฅเบฑเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเบเบญเบเบฅเบนเบเบเปเบฒเปเบฅเบฐเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ. เปเบเบฅเปเบเบตเปเบกเบตเบเบฒเบกเบชเบฐเบเบธเบ .yml เปเบกเปเบเบเบฒเบเบเบฑเปเบเบเปเบฒ Docker Compose, เบเปเบญเบเบเบตเปเบเบฑเบเบเบธเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเบเบทเบเบเปเบฒเบเบปเบเปเบฅเบฐเบเปเบฝเบงเบเปเบญเบ.
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
เบเบงเบเปเบฎเบปเบฒเบชเปเบฒเบ 3 เบเปเบฅเบดเบเบฒเบเปเบ Docker: เบชเปเบฒเบฅเบฑเบ NodeJS, MongoDB เปเบฅเบฐเบชเปเบฒเบฅเบฑเบ static ones เปเบ Vue. เปเบเบตเปเบกเปเบเบทเปเบญเปเบเบทเปเบญเบกเบเปเปเบฅเบนเบเบเปเบฒเบเบฑเบเปเบเบตเบเปเบงเบต เบเบถเปเบเบเบฑเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ. เปเบเบทเปเบญเปเบเบทเปเบญเบกเบเปเป MongoDB เบเบฑเบ server API, เปเบซเปเปเบเป เปเบเบทเปเบญเบกเบเปเป mongo. เปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ, เบฅเบนเบเบเปเบฒ, mongo - names of services .
เบฅเบนเบเบเปเบฒ VueJS
เบขเบนเปเปเบเปเบเบเปเบเบต /เบฅเบนเบโเบเปเบฒ เบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเปเบกเปเบเบญเบตเบเปเบชเป VueJS. เบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเปเบเปเบเบทเบเบชเปเบฒเบเบเบทเปเบเปเบเบเปเบเป
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"]
เบเบฐเบฅเบธเบเบฒเบฎเบฑเบเบเบฒเบเบงเปเบฒ package.json เปเบเปเบเบทเบเบเบฑเบเบฅเบญเบเปเบฅเบฐเบเบดเบเบเบฑเปเบเปเบเบเบเปเบฒเบเบซเบฒเบเบเบฒเบเบชเปเบงเบเบเบตเปเปเบซเบผเบทเบญเบเบญเบเปเบเบฅเปเปเบเบเบเบฒเบ. เบเบตเปเปเบกเปเบเปเบฎเบฑเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบฐเบเบดเบเบฑเบ, เปเบเบทเปเบญเปเบซเปเปเบเบทเปเบญเปเบเบเบญเบเปเบเบเปเบเบต /node_modules เบเบทเบเปเบเบฑเบเปเบงเปเปเบเปเบงเบฅเบฒเบเบตเปเบชเปเบฒเบเบญเบตเบเปเบเบทเปเบญเบซเบเบถเปเบ. เปเบเปเบฅเบฐเปเบเบงเบเปเบฒเบชเบฑเปเบเบเบทเบเปเบเบฑเบเปเบงเปเปเบเบเบเปเบฒเบเบซเบฒเบ.
เบชเบธเบเบเปเบฒเบ, เปเบกเบทเปเบญเบเปเบญเบเบเบฑเบเบเบธเปเบฅเบตเปเบกเบเบปเปเบ, เบเปเบฒเบชเบฑเปเบเบเบทเบเบเบฐเบเบดเบเบฑเบ npm run dev
. เบเปเบฒเบชเบฑเปเบเบเบตเปเบเบทเบเบญเบฐเบเบดเบเบฒเบเปเบงเปเปเบ package.json:
"scripts": {
"test:dev": "http-server dist -p 8081 -c 1 --push-state"
}
เปเบเบทเปเบญเปเบฅเปเบเปเบเบฅเปเบเบฒเบเปเบเบเปเบเบต / เบซเปเบฒเบ, เบเบดเบเบเบฑเปเบเบเบปเปเบงเปเบฅเบ http-server
, เปเบฅเบฐเบขเบนเปเปเบ dev-dependencies เบเบธเบ spa-http-server
เปเบเบทเปเบญเปเบซเป Vue Router เปเบฎเบฑเบเบงเบฝเบเบขเปเบฒเบเบเบทเบเบเปเบญเบ. เบเบธเบ --push-state เบเปเบฝเบเปเบชเบฑเปเบเบเบฒเบเปเบเบซเบฒ index.html. เบเบธเบ -c เบเบตเปเบกเบตเบเปเบฒ 1 เบงเบดเบเบฒเบเบตเบเบทเบเปเบเบตเปเบกเปเบชเป http-เปเบเบตเบเปเบงเบต เบเปเป cache scripts. เบเบตเปเปเบกเปเบเบเบปเบงเบขเปเบฒเบเบเบฒเบเบเบปเบเบชเบญเบ; เปเบเปเบเบเบเบฒเบเบเบตเปเปเบเปเบเบดเบเบกเบฑเบเบเบตเบเบงเปเบฒเบเบตเปเบเบฐเปเบเป nginx.
เปเบเบฎเปเบฒเบ Vuex เบเบงเบเปเบฎเบปเบฒเบชเปเบฒเบเบเบฒเบเบชเบฐเบซเบเบฒเบก apiHost: 'http://localhost:3000'
, เบเปเบญเบเบเบตเปเบเบญเบ NodeJS Api เบเบทเบเบฅเบปเบเบเบฐเบเบฝเบ. เบชเปเบงเบเบฅเบนเบเบเปเบฒเปเบกเปเบเบเบฝเบกเบเปเบญเบก. เปเบเบเบฑเบเบเบธเบเบฑเบเบเบฒเบเบฎเปเบญเบเบเปเบเบฑเบเบซเบกเบปเบเบเบฒเบเบฅเบนเบเบเปเบฒเบเบฑเบเบเบฑเบเบเบทเบเปเบเบเปเบญเบเปเบเบซเบฒ url เบเบตเป.
NodeJS server API
เบขเบนเปเปเบเปเบเบเปเบเบต /server
เบชเปเบฒเบ เปเบเบตเบเปเบงเบต เปเบฅเบฐ Dockerfile:
FROM node:10
WORKDIR /server
COPY ./package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node", "server.js"]
ะ เปเบเบตเบเปเบงเบต เบเบตเปเบเบญเบ url เบชเปเบฒเบฅเบฑเบเบเบฒเบเบเปเปเบกเบนเบ const url = 'mongodb://mongo:27017/';
. เบญเบฐเบเบธเบเบฒเบเบเบฒเบเบฎเปเบญเบเบเปเบเปเบฒเบกเปเบเปเบกเบเบเบฒเบเบฅเบนเบเบเปเบฒ:
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));
});
เบชเบฐเบซเบฅเบธเบ
เบเบญเบเบเบตเปเปเบซเปเปเบเบเบตเปเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเบญเบเปเบเบเบเบฒเบเปเบฅเบฐเบเปเบฒเปเบเบตเบเบเบฒเบ docker-compose build
เบชเปเบฒโเบฅเบฑเบโเบเบฒเบโเบเปเปโเบชเปเบฒเบโเบฎเบนเบโเบเบฒเบโเปเบฅเบฐโ docker-compose up
เปเบเบทเปเบญเบเปเบฒเปเบเบตเบเบเบฒเบเบเบฑเบเบเบธ. เบเบตเบกเบเบฒเบเบเบฐเบเบปเบ 3 เบเบนเปเบเบฑเบเบเบธ: server, client, mongo. เบชเปเบฒเบฅเบฑเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบญเบ NodeJS, เบเปเบฒเบเบชเบฒเบกเบฒเบ configure hot-reload เปเบเบเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบกเบฑเบเบเบฑเบเปเบเบเปเบเบตเบเบนเปเปเบเป. เปเบฅเบฐเบฅเบนเบเบเปเบฒเบเบฒเบเปเบเปเบเบฒเบเบเบฑเบเบเบฐเบเบฒเบเบงเบเปเบเปเบฎเบฑเบเบเบฒเบเปเบเบตเบเบเบปเบงเปเบเบเปเบญเบเบเบดเปเบเบเปเบงเบเบเบฒเบเปเบซเบผเบเบเบทเบเปเบซเบกเป, เปเบฅเปเบเปเบเบเบเปเบฒเบเบซเบฒเบ เปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ ะธ Mongo. เปเบเบทเปเบญเปเบฅเบตเปเบกเบเบปเปเบเบเบฒเบเบเปเบฅเบดเบเบฒเบเปเบเบเบเปเบฒเบเบซเบฒเบ, เบเบฝเบเปเบเปเบฅเบฐเบเบธเบเบทเปเบเบญเบเบกเบฑเบ docker-compose up client
. เบขเปเบฒเบฅเบทเบกเปเบฎเบฑเบเบกเบฑเบเบเบฒเบเบเบฑเปเบ prune
เปเบฅเบฐเบเบฒเบเบฅเบถเบเบเบนเปเบเบญเบเปเบเบเปเบเบต, เปเบเบทเบญเบเปเบฒเบ, เปเบฅเบฐเบฎเบนเบเบเบฒเบเบเปเบฒเบเปเปเบเบทเปเบญเบเบฐเบซเบเบฒเบเบเบฑเบเบเบฐเบเบฒเบเบญเบ.
เบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเบดเปเบเบฅเบฐเบซเบฑเบเปเบเบฑเบก
เปเบซเบผเปเบเบเปเปเบกเบนเบ: www.habr.com