แƒ แƒแƒ’แƒแƒ  แƒจแƒ”แƒคแƒฃแƒ—แƒแƒ— VueJS + NodeJS + MongoDB แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ Docker-แƒจแƒ˜

แƒ แƒแƒ’แƒแƒ  แƒจแƒ”แƒคแƒฃแƒ—แƒแƒ— VueJS + NodeJS + MongoDB แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ Docker-แƒจแƒ˜
แƒ แƒแƒ’แƒแƒ แƒช แƒฌแƒ˜แƒœแƒ แƒกแƒขแƒแƒขแƒ˜แƒ˜แƒ“แƒแƒœ แƒ›แƒ˜แƒฎแƒ•แƒ“แƒ˜แƒ—, แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒžแƒ แƒแƒ”แƒฅแƒขแƒ–แƒ” แƒ•แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ“แƒ˜. แƒแƒฎแƒแƒš แƒ’แƒฃแƒœแƒ“แƒจแƒ˜ แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒ“แƒฆแƒ”แƒ”แƒ‘แƒ˜, แƒ แƒแƒ’แƒแƒ แƒช แƒฌแƒ”แƒกแƒ˜, แƒ˜แƒ’แƒ˜แƒ•แƒ” แƒ’แƒ–แƒ˜แƒ— แƒ›แƒ˜แƒ“แƒ˜แƒก: แƒ“แƒแƒ›แƒฎแƒ›แƒแƒ แƒ” แƒ–แƒ˜แƒก แƒฉแƒ”แƒ›แƒ—แƒแƒœ แƒ“แƒ แƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒก แƒ›แƒแƒ’แƒ˜แƒฃแƒ  แƒ›แƒแƒฅแƒ›แƒ”แƒ“แƒ”แƒ‘แƒ”แƒ‘แƒก แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒ˜แƒœแƒกแƒขแƒแƒšแƒแƒชแƒ˜แƒ˜แƒกแƒ แƒ“แƒ แƒ’แƒแƒœแƒกแƒแƒ—แƒแƒ•แƒกแƒ”แƒ‘แƒšแƒแƒ“. Docker แƒจแƒ”แƒฃแƒชแƒ•แƒšแƒ”แƒšแƒ˜แƒ แƒฌแƒ˜แƒœแƒ แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ“แƒ’แƒแƒœ... Backend แƒฎแƒจแƒ˜แƒ แƒแƒ“ แƒ˜แƒฌแƒ”แƒ แƒ”แƒ‘แƒ PHP/Java/Python/C# แƒกแƒขแƒ”แƒ™แƒ”แƒ‘แƒ˜แƒก แƒคแƒแƒ แƒ—แƒ แƒ“แƒ˜แƒแƒžแƒแƒ–แƒแƒœแƒจแƒ˜ แƒ“แƒ แƒฌแƒ˜แƒœแƒ แƒ›แƒฎแƒแƒ แƒ”แƒก แƒแƒ  แƒแƒ แƒ˜แƒก แƒกแƒแƒญแƒ˜แƒ แƒ แƒงแƒแƒ•แƒ”แƒš แƒฏแƒ”แƒ แƒ–แƒ” แƒ‘แƒ”แƒฅแƒ”แƒœแƒ“แƒ˜แƒก แƒงแƒฃแƒ แƒแƒ“แƒฆแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ“แƒแƒขแƒแƒœแƒ แƒงแƒ•แƒ”แƒšแƒแƒคแƒ แƒ˜แƒก แƒ˜แƒœแƒกแƒขแƒแƒšแƒแƒชแƒ˜แƒ˜แƒกแƒ แƒ“แƒ แƒ’แƒแƒœแƒกแƒแƒ—แƒแƒ•แƒกแƒ”แƒ‘แƒšแƒแƒ“. แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ”แƒ แƒ— แƒแƒ“แƒ’แƒ˜แƒšแƒแƒก แƒ“แƒแƒ•แƒ˜แƒœแƒแƒฎแƒ” Docker-Jenkins แƒ™แƒแƒ›แƒ‘แƒ˜แƒœแƒแƒชแƒ˜แƒ แƒ’แƒแƒ›แƒญแƒ•แƒ˜แƒ แƒ•แƒแƒšแƒ” แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ˜แƒ—, แƒŸแƒฃแƒ แƒœแƒแƒšแƒ”แƒ‘แƒ˜แƒ—แƒ แƒ“แƒ แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ แƒ˜ แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜แƒ—.

แƒ“แƒแƒ™แƒ”แƒ แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘ แƒ‘แƒ”แƒ•แƒ แƒ˜ แƒ“แƒ”แƒขแƒแƒšแƒฃแƒ แƒ˜ แƒกแƒขแƒแƒขแƒ˜แƒ แƒ“แƒแƒ˜แƒฌแƒ”แƒ แƒ. แƒแƒ› แƒกแƒขแƒแƒขแƒ˜แƒแƒจแƒ˜ แƒ•แƒ˜แƒกแƒแƒฃแƒ‘แƒ แƒ”แƒ‘แƒ— VueJS/Vue แƒ แƒแƒฃแƒขแƒ”แƒ แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— แƒ”แƒ แƒ—แƒ˜ แƒ’แƒ•แƒ”แƒ แƒ“แƒ˜แƒก แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒœแƒ—แƒแƒ•แƒกแƒ”แƒ‘แƒแƒ–แƒ”, แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒœแƒแƒฌแƒ˜แƒšแƒ˜ แƒแƒ แƒ˜แƒก RESTful API-แƒ˜แƒก แƒกแƒแƒฎแƒ˜แƒ— NodeJS-แƒ˜แƒ—, แƒฎแƒแƒšแƒ MongoDB แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒ แƒแƒ’แƒแƒ แƒช แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ. Docker Compose แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒ›แƒ แƒแƒ•แƒแƒšแƒ˜ แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ˜แƒก แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒœแƒกแƒแƒ–แƒฆแƒ•แƒ แƒ˜แƒกแƒ แƒ“แƒ แƒ’แƒแƒกแƒแƒจแƒ•แƒ”แƒ‘แƒแƒ“.

แƒ แƒแƒขแƒแƒ› แƒแƒ แƒ˜แƒก แƒกแƒแƒญแƒ˜แƒ แƒ แƒ“แƒแƒ™แƒ”แƒ แƒ˜

Docker แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ’แƒแƒซแƒšแƒ”แƒ•แƒ— แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒ˜แƒ–แƒ˜แƒ แƒแƒ— แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜. แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒก แƒแƒฆแƒแƒ  แƒกแƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒ›แƒแƒฃแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒšแƒแƒ“ แƒ˜แƒœแƒกแƒขแƒแƒšแƒแƒชแƒ˜แƒ แƒแƒœ แƒ•แƒ”แƒ แƒกแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒฃแƒ—แƒแƒ•แƒกแƒ”แƒ‘แƒšแƒแƒ‘แƒ แƒ—แƒแƒ•แƒ˜แƒก แƒแƒžแƒแƒ แƒแƒขแƒ–แƒ”. แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒ แƒแƒช แƒ—แƒฅแƒ•แƒ”แƒœ แƒ’แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒแƒ— แƒแƒ แƒ˜แƒก แƒ“แƒแƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒแƒ— Docker แƒ“แƒ แƒฉแƒแƒฌแƒ”แƒ แƒ”แƒ— 1-2 แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ แƒ™แƒแƒœแƒกแƒแƒšแƒจแƒ˜. แƒแƒ›แƒ˜แƒก แƒ’แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒ˜แƒก แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒ›แƒแƒกแƒแƒฎแƒ”แƒ แƒฎแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ’แƒ–แƒแƒ Linux-แƒ–แƒ”.

แƒœแƒแƒชแƒœแƒแƒ‘แƒแƒ‘แƒ

แƒฃแƒชแƒœแƒแƒ‘แƒ˜แƒ docker แƒ›แƒ“แƒ” แƒ“แƒแƒ™แƒ”แƒ แƒ˜แƒก แƒจแƒ”แƒ“แƒ’แƒ”แƒœแƒ

แƒกแƒแƒฅแƒแƒฆแƒแƒšแƒ“แƒ˜แƒก แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ

แƒฉแƒ•แƒ”แƒœ แƒ•แƒฅแƒ›แƒœแƒ˜แƒ— 2 แƒกแƒแƒฅแƒแƒฆแƒแƒšแƒ“แƒ”แƒก แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒกแƒ แƒ“แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒคแƒแƒ˜แƒšแƒ˜ .yml แƒ’แƒแƒคแƒแƒ แƒ—แƒแƒ”แƒ‘แƒ˜แƒ— แƒแƒ แƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ Docker แƒจแƒ”แƒ“แƒ’แƒ”แƒœแƒ, แƒกแƒแƒ“แƒแƒช แƒ’แƒแƒœแƒแƒชแƒฎแƒแƒ“แƒ˜แƒก แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ”แƒ‘แƒ˜ แƒ’แƒแƒœแƒ˜แƒกแƒแƒ–แƒฆแƒ•แƒ แƒ”แƒ‘แƒ แƒ“แƒ แƒแƒกแƒแƒชแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ.
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-แƒกแƒ—แƒ•แƒ˜แƒก แƒ“แƒ Vue-แƒจแƒ˜ แƒกแƒขแƒแƒขแƒ˜แƒ™แƒฃแƒ แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒก แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ—แƒแƒœ แƒ“แƒแƒกแƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒšแƒแƒ“ แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ–แƒ”. MongoDB แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก API-แƒกแƒ—แƒแƒœ แƒ“แƒแƒกแƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒšแƒแƒ“ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ— แƒšแƒ˜แƒœแƒ™แƒ”แƒ‘แƒ˜ mongo. แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜, แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜, แƒ›แƒแƒœแƒ’แƒ - แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ”แƒ‘แƒ˜.

VueJS แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜

แƒกแƒแƒฅแƒแƒฆแƒแƒšแƒ“แƒ”แƒจแƒ˜ /แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ แƒ“แƒแƒคแƒฃแƒซแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ VueJS-แƒ–แƒ”. แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ แƒจแƒ”แƒ˜แƒฅแƒ›แƒœแƒ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— Vue Cli. แƒกแƒฃแƒ แƒแƒ—แƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒกแƒแƒก, แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒก แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ แƒฉแƒแƒจแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒกแƒแƒฅแƒแƒฆแƒแƒšแƒ“แƒ”แƒจแƒ˜ แƒกแƒขแƒแƒขแƒ˜แƒ™แƒฃแƒ แƒ˜ แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒ”แƒ แƒ—แƒแƒ‘แƒšแƒ˜แƒแƒ‘แƒแƒจแƒ˜ /แƒ“แƒ˜แƒกแƒข. Dockerfile แƒแƒฆแƒฌแƒ”แƒ แƒก แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ”แƒ แƒ—แƒแƒ‘แƒšแƒ˜แƒแƒ‘แƒแƒก แƒ’แƒแƒ›แƒแƒกแƒแƒฎแƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฅแƒ›แƒœแƒ”แƒšแƒแƒ“:

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 Router-แƒ›แƒ แƒกแƒฌแƒแƒ แƒแƒ“ แƒ˜แƒ›แƒฃแƒจแƒแƒแƒก. --push-state แƒ“แƒ แƒแƒจแƒ แƒ’แƒแƒ“แƒแƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ“แƒ”แƒ‘แƒ index.html-แƒ–แƒ”. แƒ“แƒแƒ”แƒ›แƒแƒขแƒ -c แƒ“แƒ แƒแƒจแƒ 1 แƒฌแƒแƒ›แƒ˜แƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ˜แƒ— http-แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜ แƒแƒ  แƒฅแƒ”แƒจแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ”แƒ‘แƒ˜. แƒ”แƒก แƒแƒ แƒ˜แƒก แƒขแƒ”แƒกแƒขแƒ˜แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜; แƒ แƒ”แƒแƒšแƒฃแƒ  แƒžแƒ แƒแƒ”แƒฅแƒขแƒ–แƒ” แƒฃแƒ›แƒฏแƒแƒ‘แƒ”แƒกแƒ˜แƒ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒ— nginx.

Vuex แƒ›แƒแƒฆแƒแƒ–แƒ˜แƒแƒจแƒ˜ แƒ•แƒฅแƒ›แƒœแƒ˜แƒ— แƒ•แƒ”แƒšแƒก apiHost: 'http://localhost:3000', แƒกแƒแƒ“แƒแƒช แƒ แƒ”แƒ’แƒ˜แƒกแƒขแƒ แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ NodeJS Api แƒžแƒแƒ แƒขแƒ˜. แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒก แƒœแƒแƒฌแƒ˜แƒšแƒ˜ แƒ›แƒ–แƒแƒ“ แƒแƒ แƒ˜แƒก. แƒแƒฎแƒšแƒ แƒงแƒ•แƒ”แƒšแƒ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒ“แƒแƒœ แƒฃแƒ™แƒแƒœ แƒ’แƒแƒ“แƒแƒ“แƒ˜แƒก แƒแƒ› url-แƒ–แƒ”.

NodeJS แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก API

แƒกแƒแƒฅแƒแƒฆแƒแƒšแƒ“แƒ”แƒจแƒ˜ /server แƒจแƒ”แƒฅแƒ›แƒœแƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜. js แƒ“แƒ Dockerfile:


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

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ