āĻāĻĒāĻ¨āĻŋ āĻāĻā§āĻ° āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ āĻĨā§āĻā§ āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨, āĻāĻŽāĻŋ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°ā§āĻāĻŋāĨ¤ āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻĻāĻ˛ā§ āĻĒā§āĻ°āĻĨāĻŽ āĻĻāĻŋāĻ¨āĻā§āĻ˛āĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻāĻāĻāĻāĻžāĻŦā§ āĻ¯āĻžāĻ¯āĻŧ: āĻŦā§āĻ¯āĻžāĻā§āĻ¨ā§āĻĄāĻžāĻ° āĻāĻŽāĻžāĻ° āĻāĻžāĻā§ āĻŦāĻ¸ā§ āĻāĻŦāĻ āĻ
ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻāĻŋ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻŦāĻ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ¯āĻžāĻĻā§ āĻĒāĻĻāĻā§āĻˇā§āĻĒāĻā§āĻ˛āĻŋ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ āĻāĻ°ā§āĨ¤ āĻĄāĻāĻžāĻ° āĻĢā§āĻ°āĻ¨ā§āĻ-āĻāĻ¨ā§āĻĄ āĻĄā§āĻā§āĻ˛āĻĒāĻžāĻ°āĻĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ
āĻĒāĻ°āĻŋāĻšāĻžāĻ°ā§āĻ¯, āĻāĻžāĻ°āĻŖāĨ¤ āĻŦā§āĻ¯āĻžāĻāĻāĻ¨ā§āĻĄāĻāĻŋ āĻĒā§āĻ°āĻžāĻ¯āĻŧāĻļāĻ āĻĒāĻŋāĻāĻāĻāĻĒāĻŋ/āĻāĻžāĻāĻž/āĻĒāĻžāĻāĻĨāĻ¨/āĻ¸āĻŋ# āĻ¸ā§āĻā§āĻ¯āĻžāĻā§āĻ° āĻŦāĻŋāĻ¸ā§āĻ¤ā§āĻ¤ āĻĒāĻ°āĻŋāĻ¸āĻ°ā§ āĻ˛ā§āĻāĻž āĻšāĻ¯āĻŧ āĻāĻŦāĻ āĻ¸āĻŦāĻāĻŋāĻā§ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻŦāĻ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻžāĻŽāĻ¨ā§āĻ° āĻ
āĻāĻļāĻāĻŋāĻā§ āĻĒā§āĻ°āĻ¤āĻŋāĻŦāĻžāĻ° āĻĒāĻŋāĻāĻ¨ā§āĻ° āĻĻāĻŋāĻā§ āĻŦāĻŋāĻā§āĻ°āĻžāĻ¨ā§āĻ¤ āĻāĻ°āĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻšāĻ¯āĻŧ āĻ¨āĻžāĨ¤ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻāĻāĻŋ āĻāĻžāĻ¯āĻŧāĻāĻžāĻ¯āĻŧ āĻāĻŽāĻŋ āĻ¸ā§āĻŦāĻā§āĻ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻžāĻ° āĻ¸āĻžāĻĨā§ āĻĄāĻāĻžāĻ°-āĻā§āĻ¨āĻāĻŋāĻ¨ā§āĻ¸ā§āĻ° āĻāĻāĻā§āĻā§āĻ āĻĻā§āĻā§āĻāĻŋ, āĻ˛āĻāĻā§āĻ˛āĻŋ, āĻ
āĻā§āĻā§āĻ¸ā§āĻā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¸ā§āĻā§āĻ°ā§ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§āĨ¤
āĻĄāĻāĻžāĻ° āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻ
āĻ¨ā§āĻ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ āĻ˛ā§āĻāĻž āĻšāĻ¯āĻŧā§āĻā§āĨ¤ āĻāĻ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻāĻŋ 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-āĻ¤ā§ āĻ¸ā§āĻā§āĻ¯āĻžāĻāĻŋāĻā§āĻ¸ā§āĻ° āĻāĻ¨ā§āĻ¯āĨ¤ āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻāĻā§ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻāĻ¯ā§āĻā§āĻ¤ āĻāĻ°āĻ¤ā§ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§āĻ° āĻāĻĒāĻ° āĻ¨āĻŋāĻ°ā§āĻāĻ° āĻāĻ°ā§. āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° API āĻāĻ° āĻ¸āĻžāĻĨā§ MongoDB āĻ˛āĻŋāĻā§āĻ āĻāĻ°āĻ¤ā§, āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĻ¨ āĻ˛āĻŋāĻā§āĻ āĻŽāĻā§āĻā§. āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°, āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻ, āĻŽāĻā§āĻā§ āĻāĻ¸āĻŦ āĻ¸āĻžāĻ°ā§āĻāĻŋāĻ¸ā§āĻ° āĻ¨āĻžāĻŽāĨ¤
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 āĻ āĻ¯āĻžāĻ¨āĨ¤
āĻ¨ā§āĻĄāĻā§āĻāĻ¸ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° API
āĻĢā§āĻ˛ā§āĻĄāĻžāĻ°ā§ /server
āĻ¸ā§āĻˇā§āĻāĻŋ server.js āĻāĻŦāĻ āĻĄāĻāĻžāĻ°āĻĢāĻžāĻāĻ˛:
FROM node:10
WORKDIR /server
COPY ./package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node", "server.js"]
Đ 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āĻāĻŋ āĻĒāĻžāĻ¤ā§āĻ°ā§ āĻāĻ¤ā§āĻ¤ā§āĻ˛āĻ¨ āĻāĻ°āĻŦā§: āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°, āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻ, āĻŽāĻā§āĻā§. āĻāĻāĻāĻŋ NodeJS āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§āĻ° āĻāĻ¨ā§āĻ¯, āĻāĻĒāĻ¨āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§ āĻĢā§āĻ˛ā§āĻĄāĻžāĻ°ā§ āĻ˛āĻŋāĻā§āĻ āĻāĻ°ā§ āĻšāĻ-āĻ°āĻŋāĻ˛ā§āĻĄ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤ āĻāĻŦāĻ āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻ āĻšāĻ āĻ°āĻŋāĻ˛ā§āĻĄ āĻ¸āĻš āĻ¸ā§āĻĨāĻžāĻ¨ā§āĻ¯āĻŧāĻāĻžāĻŦā§ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯, āĻāĻ˛āĻžāĻĻāĻžāĻāĻžāĻŦā§ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻŦāĻŋāĻāĻžāĻļā§āĻ° āĻ
āĻ§ā§āĻ¨ā§ āĻ°āĻ¯āĻŧā§āĻā§ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° и āĻŽā§āĻā§āĻā§. āĻāĻāĻāĻŋ āĻĒā§āĻĨāĻ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻļā§āĻ°ā§ āĻāĻ°āĻ¤ā§, āĻļā§āĻ§ā§ āĻāĻ° āĻ¨āĻžāĻŽ āĻāĻ˛ā§āĻ˛ā§āĻ āĻāĻ°ā§āĻ¨ā§ˇ docker-compose up client
. āĻŽāĻžāĻā§ āĻŽāĻžāĻā§ āĻāĻāĻž āĻāĻ°āĻ¤ā§ āĻā§āĻ˛āĻŦā§āĻ¨ āĻ¨āĻž prune
āĻāĻŦāĻ āĻ°āĻŋāĻ¸ā§āĻ°ā§āĻ¸ āĻāĻžāĻ˛āĻŋ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ¨ā§āĻā§āĻāĻ¨āĻžāĻ° (āĻāĻ¨ā§āĻā§āĻāĻ¨āĻžāĻ°), āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ (āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ) āĻāĻŦāĻ āĻāĻŦāĻŋ (āĻāĻŦāĻŋ) āĻ
āĻĒāĻ¸āĻžāĻ°āĻŖ āĻāĻ°āĻžāĨ¤
āĻāĻĒāĻ¨āĻŋ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻā§āĻĄ āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨
āĻāĻ¤ā§āĻ¸: www.habr.com