เจเจฟเจตเฉเจ เจเจฟ เจคเฉเจธเฉเจ เจชเจฟเจเจฒเฉ เจฒเฉเจ เจคเฉเจ เจธเจฎเจ เจธเจเจฆเฉ เจนเฉ, เจฎเฉเจ เจตเฉฑเจ-เจตเฉฑเจ เจชเฉเจฐเฉเจเฉเจเจเจพเจ 'เจคเฉ เจเฉฐเจฎ เจเฉเจคเจพ. เจจเจตเฉเจ เจเฉเจฎ เจฆเฉ เจชเจนเจฟเจฒเฉ เจฆเจฟเจจ เจเจฎ เจคเฉเจฐ 'เจคเฉ เจเจธเฉ เจคเจฐเฉเจเฉ เจจเจพเจฒ เจเจพเจเจฆเฉ เจนเจจ: เจฌเฉเจเฉเจเจกเจฐ เจฎเฉเจฐเฉ เจจเจพเจฒ เจฌเฉเจ เจฆเจพ เจนเฉ เจ
เจคเฉ เจเจชเจฒเฉเจเฉเจธเจผเจจ เจจเฉเฉฐ เจธเจฅเจพเจชเจค เจเจฐเจจ เจ
เจคเฉ เจฒเจพเจเฉ เจเจฐเจจ เจฒเจ เจเจพเจฆเฉเจ เจเจพเจฐเจตเจพเจเจเจ เจเจฐเจฆเจพ เจนเฉเฅค เจกเฉเจเจฐ เจซเจฐเฉฐเจ-เจเจเจก เจกเจฟเจตเฉเจฒเจชเจฐเจพเจ เจฒเจ เจฒเจพเจเจผเจฎเฉ เจนเฉ เจเจฟเจเจเจเจฟ ... เจฌเฉเจเจเจเจก เจจเฉเฉฐ เจ
เจเจธเจฐ PHP/Java/Python/C# เจธเจเฉเจ เจฆเฉ เจเฉฑเจ เจตเจฟเจธเจผเจพเจฒ เจธเจผเฉเจฐเฉเจฃเฉ เจตเจฟเฉฑเจ เจฒเจฟเจเจฟเจ เจเจพเจเจฆเจพ เจนเฉ, เจ
เจคเฉ เจซเจฐเฉฐเจ เจจเฉเฉฐ เจนเจฐ เจตเจพเจฐ เจธเจญ เจเฉเจ เจธเจฅเจพเจชเจค เจเจฐเจจ เจ
เจคเฉ เจคเฉเจจเจพเจค เจเจฐเจจ เจฒเจ เจฌเฉเจเจเจเจก เจจเฉเฉฐ เจญเจเจเจพเจเจฃ เจฆเฉ เจฒเฉเฉ เจจเจนเฉเจ เจนเฉเฉฐเจฆเฉ เจนเฉเฅค เจธเจฟเจฐเจซ เจเฉฑเจ เจเจเฉเจนเจพ เจตเจฟเฉฑเจ เจฎเฉเจ เจเฉฑเจ เจชเจพเจฐเจฆเจฐเจธเจผเฉ เจคเฉเจจเจพเจคเฉ, เจฒเฉเจเจธ เจ
เจคเฉ เจเจเฉเจฎเฉเจเจฟเจก เจเฉเจธเจเจพเจ เจฆเฉ เจจเจพเจฒ เจเฉฑเจ เจกเฉเจเจฐ-เจเฉเจจเจเจฟเฉฐเจธ เจธเฉเจฎเฉเจฒ เจฆเฉเจเจฟเจ.
เจกเฉเจเจฐ เจฌเจพเจฐเฉ เจฌเจนเฉเจค เจธเจพเจฐเฉ เจตเจฟเจธเจคเฉเจฐเจฟเจค เจฒเฉเจ เจฒเจฟเจเฉ เจเจ เจนเจจ. เจเจน เจฒเฉเจ VueJS/Vue เจฐเจพเจเจเจฐ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจเฉฑเจ เจธเจฟเฉฐเจเจฒ เจชเฉเจ เจเจชเจฒเฉเจเฉเจธเจผเจจ เจจเฉเฉฐ เจคเฉเจจเจพเจค เจเจฐเจจ เจฌเจพเจฐเฉ เจเฉฑเจฒ เจเจฐเฉเจเจพ, เจธเจฐเจตเจฐ เจฆเจพ เจนเจฟเฉฑเจธเจพ NodeJS เจฆเฉ เจจเจพเจฒ เจเฉฑเจ RESTful API เจฆเฉ เจฐเฉเจช เจตเจฟเฉฑเจ เจนเฉ, เจ
เจคเฉ MongoDB เจจเฉเฉฐ เจเฉฑเจ เจกเฉเจเจพเจฌเฉเจธ เจตเจเฉเจ เจตเจฐเจคเจฟเจ เจเจพเจเจฆเจพ เจนเฉเฅค เจกเฉเจเจฐ เจเฉฐเจชเฉเจเจผ เจฆเฉ เจตเจฐเจคเฉเจ เจฎเจฒเจเฉเจชเจฒ เจเฉฐเจเฉเจจเจฐ เจเจชเจฒเฉเจเฉเจธเจผเจจเจพเจ เจจเฉเฉฐ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจเจฐเจจ เจ
เจคเฉ เจเจฒเจพเจเจฃ เจฒเจ เจเฉเจคเฉ เจเจพเจเจฆเฉ เจนเฉเฅค
เจกเฉเจเจฐ เจฆเฉ เจฒเฉเฉ เจเจฟเจเจ เจนเฉ
เจกเฉเจเจฐ เจคเฉเจนเจพเจจเฉเฉฐ เจเฉฑเจ เจเจชเจฒเฉเจเฉเจธเจผเจจ เจจเฉเฉฐ เจคเฉเจจเจพเจค เจเจฐเจจ เจฆเฉ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจจเฉเฉฐ เจธเจตเฉเจเจพเจฒเจค เจเจฐเจจ เจฆเฉ เจเจเจฟเจ เจฆเจฟเฉฐเจฆเจพ เจนเฉ. เจกเจฟเจตเฉเจฒเจชเจฐ เจจเฉเฉฐ เจนเฉเจฃ เจเจชเจฃเฉ เจเจช เจชเฉเจฐเฉเจเจฐเจพเจฎเจพเจ เจจเฉเฉฐ เจธเจฅเจพเจชเจฟเจค เจเจฐเจจ เจเจพเจ เจเจธเจฆเฉ เจฎเจธเจผเฉเจจ 'เจคเฉ เจธเฉฐเจธเจเจฐเจฃ เจ เจธเฉฐเจเจคเจคเจพ เจจเจพเจฒ เจจเจเจฟเฉฑเจ เจฃ เจฆเฉ เจเจผเจฐเฉเจฐเจค เจจเจนเฉเจ เจนเฉ. เจคเฉเจนเจพเจจเฉเฉฐ เจฌเจธ เจกเฉเจเจฐ เจจเฉเฉฐ เจธเจฅเจพเจชเจฟเจค เจเจฐเจจ เจ เจคเฉ เจเฉฐเจธเฉเจฒ เจตเจฟเฉฑเจ 1-2 เจเจฎเจพเจเจกเจพเจ เจเจพเจเจช เจเจฐเจจ เจฆเฉ เจฒเฉเฉ เจนเฉเฅค เจ เจเจฟเจนเจพ เจเจฐเจจ เจฆเจพ เจธเจญ เจคเฉเจ เจธเฉเจตเจฟเจงเจพเจเจจเจ เจคเจฐเฉเจเจพ เจฒเฉเจจเจเจธ 'เจคเฉ เจนเฉเฅค
เจธเจผเฉเจฐเฉ เจเจฐเจจเจพ
เจธเจฅเจพเจชเจฟเจค เจเจฐเฉ
เจซเฉเจฒเจกเจฐ เจฌเจฃเจคเจฐ
เจ
เจธเฉเจ เจเจฒเจพเจเฉฐเจ เจ
เจคเฉ เจธเจฐเจตเจฐ เจเจชเจฒเฉเจเฉเจธเจผเจจเจพเจ เจฒเจ 2 เจซเฉเจฒเจกเจฐ เจฌเจฃเจพเจเจเจฆเฉ เจนเจพเจเฅค .yml เจเจเจธเจเฉเจเจธเจผเจจ เจตเจพเจฒเฉ เจเฉฑเจ เจซเจพเจเจฒ เจเฉฑเจ เจธเฉฐเจฐเจเจจเจพ เจนเฉ เจกเฉเจเจฐ เจเฉฐเจชเฉเจ, เจเจฟเฉฑเจฅเฉ เจเจชเจฒเฉเจเฉเจธเจผเจจ เจเฉฐเจเฉเจจเจฐเจพเจ เจจเฉเฉฐ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจ
เจคเฉ เจธเฉฐเจฌเฉฐเจงเจฟเจค เจเฉเจคเจพ เจเจฟเจ เจนเฉเฅค
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 เจธเฉเจตเจพเจตเจพเจ เจฌเจฃเจพเจเจเจฆเฉ เจนเจพเจ: NodeJS, MongoDB เจ เจคเฉ Vue เจตเจฟเฉฑเจ เจธเจฅเจฟเจฐ เจธเฉเจตเจพเจตเจพเจ เจฒเจเฅค เจเจฒเจพเจเฉฐเจ เจจเฉเฉฐ เจธเจฐเจตเจฐ เจจเจพเจฒ เจเจจเฉเจเจ เจเจฐเจจ เจฒเจ เจเฉเฉเจฟเจ เจเจฟเจ เจธเจฐเจตเจฐ 'เจคเฉ เจจเจฟเจฐเจญเจฐ เจเจฐเจฆเจพ เจนเฉ. MongoDB เจจเฉเฉฐ เจธเจฐเจตเจฐ API เจจเจพเจฒ เจฒเจฟเฉฐเจ เจเจฐเจจ เจฒเจ, เจตเจฐเจคเฉเจ เจฎเฉเจเจเฉ เจจเฉเฉฐ เจฒเจฟเฉฐเจ เจเจฐเจฆเจพ เจนเฉ. เจธเจฐเจตเจฐ, เจเจฒเจพเจเฉฐเจ, เจฎเฉเจเจเฉ - เจธเฉเจตเจพเจตเจพเจ เจฆเฉ เจจเจพเจฎเฅค
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-เจจเจฟเจฐเจญเจฐเจคเจพ เจตเจฟเฉฑเจ เจชเฉเจเฉเจ spa-http-server
เจคเจพเจ เจเฉ Vue เจฐเจพเจเจเจฐ เจธเจนเฉ เจขเฉฐเจ เจจเจพเจฒ เจเฉฐเจฎ เจเจฐเฉเฅค --push-state เจซเจฒเฉเจ index.html 'เจคเฉ เจฐเฉเจกเจพเจเจฐเฉเจเจ เจเจฐเจฆเจพ เจนเฉเฅค 1 เจธเจเจฟเฉฐเจ เจฆเฉ เจฎเฉเฉฑเจฒ เจตเจพเจฒเจพ -c เจซเจฒเฉเจ เจธเจผเจพเจฎเจฒ เจเฉเจคเจพ เจเจฟเจ เจธเฉ http-เจธเจฐเจตเจฐ เจธเจเฉเจฐเจฟเจชเจเจพเจ เจจเฉเฉฐ เจเฉเจธเจผ เจจเจนเฉเจ เจเฉเจคเจพเฅค เจเจน เจเฉฑเจ เจเฉเจธเจ เจเจฆเจพเจนเจฐเจจ เจนเฉ; เจเฉฑเจ เจ
เจธเจฒเฉ เจชเฉเจฐเฉเจเฉเจเจ 'เจคเฉ nginx เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจจเจพ เจฌเจฟเจนเจคเจฐ เจนเฉ.
Vuex เจธเจเฉเจฐ เจตเจฟเฉฑเจ เจ
เจธเฉเจ เจเฉฑเจ เจเฉเจคเจฐ เจฌเจฃเจพเจเจเจฆเฉ เจนเจพเจ apiHost: 'http://localhost:3000'
, เจเจฟเฉฑเจฅเฉ NodeJS Api เจชเฉเจฐเจ เจฐเจเจฟเจธเจเจฐเจก เจนเฉเฅค เจเจพเจนเจ เจฆเจพ เจนเจฟเฉฑเจธเจพ เจคเจฟเจเจฐ เจนเฉ. เจนเฉเจฃ เจเจฒเจพเจเฉฐเจ เจคเฉเจ เจฌเฉเจ เจฆเฉเจเจ เจธเจพเจฐเฉเจเจ เจฌเฉเจจเจคเฉเจเจ เจเจธ url 'เจคเฉ เจเจพเจเจฆเฉเจเจ เจนเจจเฅค
NodeJS เจธเจฐเจตเจฐ API
เจซเฉเจฒเจกเจฐ เจตเจฟเฉฑเจ /server
เจฌเจฃเจพเจ เจธเจฐเจตเจฐ .js เจ
เจคเฉ เจกเฉเจเจฐเจซเจพเจเจฒ:
FROM node:10
WORKDIR /server
COPY ./package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node", "server.js"]
ะ เจธเจฐเจตเจฐ .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 เจเฉฐเจเฉเจจเจฐ เจเฉเฉฑเจเฉเจเฉ: เจธเจฐเจตเจฐ, เจเจฒเจพเจเฉฐเจ, เจฎเฉเจเจเฉ. เจเฉฑเจ NodeJS เจธเจฐเจตเจฐ เจฒเจ, เจคเฉเจธเฉเจ เจเจธเจจเฉเฉฐ เจเจชเจญเฉเจเจคเจพ เจซเฉเจฒเจกเจฐ เจจเจพเจฒ เจฒเจฟเฉฐเจ เจเจฐเจเฉ เจนเฉเจ-เจฐเฉเจฒเฉเจก เจจเฉเฉฐ เจเฉเจเจซเจฟเจเจฐ เจเจฐ เจธเจเจฆเฉ เจนเฉเฅค เจ
เจคเฉ เจตเจฟเจเจพเจธ เจ
เจงเฉเจจ เจเจฒเจพเจเฉฐเจ เจจเฉเฉฐ เจตเฉฑเจเจฐเฉ เจคเฉเจฐ 'เจคเฉ เจเฉฑเจฒเจฆเฉ เจนเฉเจ, เจเจฐเจฎ เจฐเฉเจฒเฉเจก เจจเจพเจฒ เจธเจฅเจพเจจเจ เจคเฉเจฐ 'เจคเฉ เจฒเจพเจเจ เจเฉเจคเจพ เจเจพเจฃเจพ เจเจพเจนเฉเจฆเจพ เจนเฉ เจธเจฐเจตเจฐ ะธ เจฎเฉฐเจเฉ. เจเฉฑเจ เจตเฉฑเจเจฐเฉ เจธเฉเจตเจพ เจธเจผเฉเจฐเฉ เจเจฐเจจ เจฒเจ, เจธเจฟเจฐเจซเจผ เจเจธเจฆเจพ เจจเจพเจฎ เจฆเฉฑเจธเฉ docker-compose up client
. เจเจฆเฉ-เจเจฆเฉ เจ
เจเจฟเจนเจพ เจเจฐเจจเจพ เจจเจพ เจญเฉเฉฑเจฒเฉ prune
เจ
เจคเฉ เจธเจฐเฉเจคเจพเจ เจจเฉเฉฐ เจเจพเจฒเฉ เจเจฐเจจ เจฒเจ เจเฉฐเจเฉเจจเจฐเจพเจ, เจจเฉเฉฑเจเจตเจฐเจเจพเจ เจ
เจคเฉ เจเจฟเฉฑเจคเจฐเจพเจ เจจเฉเฉฐ เจฎเจฟเจเจพเจเจฃเจพเฅค
เจคเฉเจธเฉเจ เจชเฉเจฐเจพ เจเฉเจก เจฆเฉเจ เจธเจเจฆเฉ เจนเฉ
เจธเจฐเฉเจค: www.habr.com