Kubernetes ื˜ื•ื˜ืึธืจื™ืึทืœ ื˜ื™ื™ืœ 1: ืึทืคึผืคึผืœื™ืงืึทื˜ื™ืึธื ืก, ืžื™ืงืจืึธ ื‘ืึทื“ื™ื ื•ื ื’ืก ืื•ืŸ ืงืึทื ื˜ื™ื™ื ืขืจื–

ืื•ื™ืฃ ืื•ื ื“ื–ืขืจ ื‘ืงืฉื”, ื”ื‘ืจ ื‘ืืฉืืคืŸ ืึท ื›ืึทื‘ Kubernetes ืื•ืŸ ืžื™ืจ ื–ืขื ืขืŸ ืฆื•ืคืจื™ื“ืŸ ืฆื• ืฉื˜ืขืœืŸ ื“ื™ ืขืจืฉื˜ืขืจ ืื•ื™ืกื’ืื‘ืข ืื™ืŸ ืขืก. ืึทื‘ืึธื ื™ืจืŸ!

ืงื•ื‘ืขืจื ืขื˜ืขืก ืื™ื– ื’ืจื™ื ื’. ืคืืจื•ื•ืืก ื˜ืึธืŸ ื‘ืึทื ืงืก ื‘ืึทืฆืึธืœืŸ ืžื™ืจ ืึท ืคึผืœืึทืฅ ืคื•ืŸ ื’ืขืœื˜ ืฆื• ืึทืจื‘ืขื˜ืŸ ืื™ืŸ ื“ืขื ื’ืขื’ื ื˜, ื‘ืฉืขืช ื•ื•ืขืจ ืขืก ื™ื– ืงืขื ืขืŸ ื‘ืขืœ ื“ืขื ื˜ืขื›ื ืึธืœืึธื’ื™ืข ืื™ืŸ ื‘ืœื•ื™ื– ืึท ื‘ื™ืกืœ ืฉืขื”?

Kubernetes ื˜ื•ื˜ืึธืจื™ืึทืœ ื˜ื™ื™ืœ 1: ืึทืคึผืคึผืœื™ืงืึทื˜ื™ืึธื ืก, ืžื™ืงืจืึธ ื‘ืึทื“ื™ื ื•ื ื’ืก ืื•ืŸ ืงืึทื ื˜ื™ื™ื ืขืจื–

ืื•ื™ื‘ ืื™ืจ ืฆื•ื•ื™ื™ืคืœ ืึทื– ืงื•ื‘ืขืจื ืขื˜ืขืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขืœืขืจื ื˜ ืึทื–ื•ื™ ื’ืขืฉื•ื•ื™ื ื“, ืื™ืš ืคึฟืึธืจืฉืœืึธื’ืŸ ืื™ืจ ืคึผืจื•ื‘ื™ืจืŸ ืขืก ื–ื™ืš. ื ืึทืžืขืœื™, ืžื™ื˜ ืžืึทืกื˜ืขืจื“ ื“ืขื ืžืึทื˜ืขืจื™ืึทืœ, ืื™ืจ ืงืขื ืขืŸ ืœื•ื™ืคืŸ ืึท ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ืžื™ืงืจืึธืกืขืจื•ื•ื™ืกืขืก ืื™ืŸ ืึท ืงื•ื‘ืขืจื ืขื˜ืขืก ืงื ื•ื™ืœ. ืื™ืš ืงืขืŸ ื’ืึทืจืึทื ื˜ื™ืจืŸ ื“ืขื, ื•ื•ื™ื™ึทืœ ืขืก ืื™ื– ืคึผื•ื ืงื˜ ื“ื™ ื–ืขืœื‘ืข ืžืขื˜ืึทื“ืึทืœืึทื“ื–ืฉื™ ื’ืขื ื™ืฆื˜ ื“ืึธ ืึทื– ืื™ืš ืœืขืจื ืขืŸ ืื•ื ื“ื–ืขืจ ืงืœื™ื™ืึทื ืฅ ืฆื• ืึทืจื‘ืขื˜ืŸ ืžื™ื˜ Kubernetes. ื•ื•ืึธืก ืžืื›ื˜ ื“ืขื ืคื™ืจืขืจ ืึทื ื“ืขืจืฉ ืคื•ืŸ ืื ื“ืขืจืข? ืื™ืŸ ืคืึทืงื˜, ืขืก ื–ืขื ืขืŸ ืึท ืคึผืœืึทืฅ ืคื•ืŸ ื–ืื›ืŸ. ืึทื–ื•ื™, ืจื•ื‘ึฟ ืคื•ืŸ ื“ื™ ืžืึทื˜ืขืจื™ืึทืœืก ืึธื ื”ื™ื™ื‘ืŸ ืžื™ื˜ ืึท ื“ืขืจืงืœืขืจื•ื ื’ ืคื•ืŸ ืคึผืฉื•ื˜ ื–ืื›ืŸ - ื“ื™ ืงืึทื ืกืขืคึผืก ืคื•ืŸ Kubernetes ืื•ืŸ ื“ื™ ืคึฟืขื™ึดืงื™ื™ื˜ืŸ ืคื•ืŸ ื“ื™ ืงื•ื‘ืขืงื˜ืœ ื‘ืึทืคึฟืขืœ. ื“ื™ ืžื—ื‘ืจื™ื ืคื•ืŸ ื“ื™ ืžืึทื˜ืขืจื™ืึทืœืก ื™ื‘ืขืจื ืขืžืขืŸ ืึทื– ื–ื™ื™ืขืจ ืœื™ื™ืขื ืขืจ ื–ืขื ืขืŸ ื‘ืึทืงืึทื ื˜ ืžื™ื˜ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’, ืžื™ืงืจืึธ ื‘ืึทื“ื™ื ื•ื ื’ืก ืื•ืŸ ื“ืึธืงืงืขืจ ืงืึทื ื˜ื™ื™ื ืขืจื–. ืžื™ืจ ื•ื•ืขืœืŸ ื’ื™ื™ืŸ ื“ื™ ืื ื“ืขืจืข ื•ื•ืขื’. ืขืจืฉื˜ืขืจ, ืžื™ืจ ื•ื•ืขืœืŸ ืจืขื“ืŸ ื•ื•ืขื’ืŸ ื•ื•ื™ ืฆื• ืœื•ื™ืคืŸ ืึท ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ืžื™ืงืจืึธ ืกืขืจื•ื•ื™ืกืขืก ืื•ื™ืฃ ืึท ืงืึธืžืคึผื™ื•ื˜ืขืจ. ื“ืขืจื ืึธืš ืžื™ืจ ื•ื•ืขืœืŸ ืงื•ืงืŸ ืื™ืŸ ื‘ื ื™ืŸ ืงืึทื ื˜ื™ื™ื ืขืจ ื‘ื™ืœื“ืขืจ ืคึฟืึทืจ ื™ืขื“ืขืจ ืžื™ืงืจืึธืกืขืจื•ื•ื™ืก. ืื•ืŸ ื ืึธืš ื“ืขื, ืžื™ืจ ื•ื•ืขืœืŸ ื‘ืึทืงืขื ืขืŸ ื–ื™ืš ืžื™ื˜ Kubernetes ืื•ืŸ ืงื•ืง ืื™ืŸ ื“ื™ืคึผืœื•ื™ื™ื ื’ ืึท ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ืžื™ืงืจืึธืกืขืจื•ื•ื™ืกืขืก ืื™ืŸ ืึท ืงื ื•ื™ืœ ื’ืขืจืื˜ืŸ ื“ื•ืจืš Kubernetes.

ื“ืขืจ ืฆื•ื’ืึทื ื’, ืžื™ื˜ ืึท ื’ืจืึทื“ื–ืฉื•ืึทืœ ืฆื•ื’ืึทื ื’ ืฆื• ืงื•ื‘ืขืจื ืขื˜ืขืก, ื•ื•ืขื˜ ื’ืขื‘ืŸ ื“ื™ ื˜ื™ืคืงื™ื™ึทื˜ ืคื•ืŸ ืคืืจืฉื˜ืื ื“ ืคื•ืŸ ื•ื•ืึธืก ืื™ื– ื’ืขืฉืขืขื ื™ืฉ ื•ื•ืึธืก ืื™ื– ื ื™ื™ื˜ื™ืง ืคึฟืึทืจ ื“ื™ ื“ื•ืจื›ืฉื ื™ื˜ืœืขืš ืžืขื ื˜ืฉ ืฆื• ืคึฟืึทืจืฉื˜ื™ื™ืŸ ื•ื•ื™ ืคึผืฉื•ื˜ ืึทืœืฅ ืึทืจื‘ืขื˜ ืื™ืŸ ืงื•ื‘ืขืจื ืขื˜ืขืก. Kubernetes ืื™ื– ื–ื™ื›ืขืจ ืึท ืคึผืฉื•ื˜ ื˜ืขื›ื ืึธืœืึธื’ื™ืข, ืื•ื™ื‘ ื“ื™ ื•ื•ืืก ื•ื•ื™ืœืŸ ืฆื• ืœืขืจื ืขืŸ ืขืก ื•ื•ื™ืกืŸ ื•ื•ื• ืื•ืŸ ื•ื•ื™ ืขืก ืื™ื– ื’ืขื ื™ืฆื˜.

ืื™ืฆื˜, ืึธืŸ ื•ื•ื™ื™ึทื˜ืขืจ ืึทื“ื™ืฉืึทืŸ, ืœืึธื–ืŸ ืื•ื ื“ื– ืึธื ื”ื™ื™ื‘ืŸ ืื•ืŸ ืจืขื“ืŸ ื•ื•ืขื’ืŸ ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืžื™ื˜ ื•ื•ืึธืก ืžื™ืจ ื•ื•ืขืœืŸ ืึทืจื‘ืขื˜ืŸ.

ืขืงืกืคึผืขืจื™ืžืขื ื˜ืึทืœ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ

ืื•ื ื“ื–ืขืจ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ื•ื•ืขื˜ ื“ื•ืจื›ืคื™ืจืŸ ื‘ืœื•ื™ื– ืื™ื™ืŸ ืคึฟื•ื ืงืฆื™ืข. ืขืก ื ืขืžื˜ ืื™ื™ืŸ ื–ืึทืฅ ื•ื•ื™ ืึทืจื™ื™ึทื ืฉืจื™ื™ึทื‘, ื ืึธืš ื•ื•ืึธืก, ื ื™ืฆืŸ ื˜ืขืงืกื˜ ืึทื ืึทืœื™ืกื™ืก ืžื›ืฉื™ืจื™ื, ืขืก ืคึผืขืจืคืึธืจืžื– ืกืขื ื˜ื™ืžืขื ื˜ ืึทื ืึทืœื™ืกื™ืก ืคื•ืŸ ื“ืขื ื–ืึทืฅ, ื‘ืืงื•ืžืขืŸ ืึทืŸ ืึทืกืขืกืžืึทื ื˜ ืคื•ืŸ ื“ื™ ืขืžืึธืฆื™ืึธื ืขืœ ืฉื˜ืขืœื•ื ื’ ืคื•ืŸ ื“ืขืจ ืžื—ื‘ืจ ืคื•ืŸ ื“ืขื ื–ืึทืฅ ืฆื• ืึท ื–ื™ื›ืขืจ ื›ื™ื™ืคืขืฅ.

ื“ืึธืก ืื™ื– ื•ื•ื™ ื“ื™ ื”ื•ื™ืคึผื˜ ืคึฟืขื ืฆื˜ืขืจ ืคื•ืŸ ื“ืขื ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืงื•ืงื˜ ื•ื•ื™.

Kubernetes ื˜ื•ื˜ืึธืจื™ืึทืœ ื˜ื™ื™ืœ 1: ืึทืคึผืคึผืœื™ืงืึทื˜ื™ืึธื ืก, ืžื™ืงืจืึธ ื‘ืึทื“ื™ื ื•ื ื’ืก ืื•ืŸ ืงืึทื ื˜ื™ื™ื ืขืจื–
ื•ื•ืขื‘ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืคึฟืึทืจ ืกืขื ื˜ื™ืžืขื ื˜ ืึทื ืึทืœื™ืกื™ืก ืคื•ืŸ ื˜ืขืงืกื˜ืŸ

ืคึฟื•ืŸ ืึท ื˜ืขื›ื ื™ืฉ ืคื•ื ื˜ ืคื•ืŸ ืžื™ื™ื ื•ื ื’, ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ื‘ืืฉื˜ื™ื™ื˜ ืคื•ืŸ ื“ืจื™ื™ ืžื™ืงืจืึธ ื‘ืึทื“ื™ื ื•ื ื’ืก, ื™ืขื“ืขืจ ืคื•ืŸ ื•ื•ืึธืก ืกืึทืœื•ื•ื– ืึท ืกืคึผืขืฆื™ืคื™ืฉ ื’ืึทื ื’ ืคื•ืŸ ืคึผืจืึธื‘ืœืขืžืก:

  • SA-Frontend ืื™ื– ืึทืŸ Nginx ื•ื•ืขื‘ ืกืขืจื•ื•ืขืจ ื•ื•ืึธืก ืกืขืจื•ื•ืขืก ืกื˜ืึทื˜ื™ืง ืจืขืึทืงื˜ ื˜ืขืงืขืก.
  • SA-WebApp ืื™ื– ืึท ื•ื•ืขื‘ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ื’ืขืฉืจื™ื‘ืŸ ืื™ืŸ Java ื•ื•ืึธืก ืคึผืจืึทืกืขืกืึทื– ืจื™ืงื•ื•ืขืก ืคึฟื•ืŸ ื“ื™ ืคืจืึธื ื˜ืขื ื“.
  • SA-Logic ืื™ื– ืึท ืคึผื™ื˜ื”ืึธืŸ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืึทื– ืคึผืขืจืคืึธืจืžื– ืกืขื ื˜ื™ืžืขื ื˜ ืึทื ืึทืœื™ืกื™ืก ืื•ื™ืฃ ื˜ืขืงืกื˜.

ืขืก ืื™ื– ื•ื•ื™ื›ื˜ื™ืง ืฆื• ื˜ืึธืŸ ืึทื– ืžื™ืงืจืึธืกืขืจื•ื•ื™ืกืขืก ื˜ืึธืŸ ื ื™ื˜ ืขืงืกื™ืกื˜ื™ืจืŸ ืื™ืŸ ืืคื’ืขื–ื•ื ื“ืขืจื˜ืงื™ื™ื˜. ื–ื™ื™ ื™ื ืกื˜ืจื•ืžืขื ื˜ ื“ืขื ื’ืขื“ืึทื ืง ืคื•ืŸ "ืฆืขืฉื™ื™ื“ื•ื ื’ ืคื•ืŸ ืจื™ืกืคึผืึทื ืกืึทื‘ื™ืœืึทื˜ื™ื–", ืึธื‘ืขืจ ืื™ืŸ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืฆื™ื™ื˜ ื–ื™ื™ ื“ืึทืจืคึฟืŸ ืฆื• ื™ื ื˜ืขืจืึทืงื˜ ืžื™ื˜ ื™ืขื“ืขืจ ืื ื“ืขืจืข.

Kubernetes ื˜ื•ื˜ืึธืจื™ืึทืœ ื˜ื™ื™ืœ 1: ืึทืคึผืคึผืœื™ืงืึทื˜ื™ืึธื ืก, ืžื™ืงืจืึธ ื‘ืึทื“ื™ื ื•ื ื’ืก ืื•ืŸ ืงืึทื ื˜ื™ื™ื ืขืจื–
ื“ืึทื˜ืข ืคืœืึธื•ื– ืื™ืŸ ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ

ืื™ืŸ ื“ื™ ื“ื™ืึทื’ืจืึทืžืข ืื•ื™ื‘ืŸ, ืื™ืจ ืงืขื ืขืŸ ื–ืขืŸ ื“ื™ ื ื•ืžืขืจืขื“ ืกื˜ืึทื’ืขืก ืคื•ืŸ ื“ื™ ืกื™ืกื˜ืขื, ืื™ืœื•ืกื˜ืจื™ืจืŸ ื“ื™ ื“ืึทื˜ืŸ ืคืœืึธื•ื– ืื™ืŸ ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ. ื–ืืœ ืก ืงื•ืง ื‘ื™ื™ึท ื–ื™ื™:

  1. ื“ืขืจ ื‘ืœืขื˜ืขืจืขืจ ืจื™ืงื•ื•ืขืก ืึท ื˜ืขืงืข ืคื•ืŸ โ€‹โ€‹ื“ื™ ืกืขืจื•ื•ืขืจ index.html (ื•ื•ืึธืก, ืื™ืŸ ืงืขืจ, ื“ืึทื•ื ืœืึธื•ื“ื– ื“ื™ ืจืขืึทืงื˜ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืคึผืขืงืœ).
  2. ื“ืขืจ ื‘ืึทื ื™ืฆืขืจ ื™ื ื˜ืขืจืึทืงืฅ ืžื™ื˜ ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ, ื“ืึธืก ืื™ื– ืึท ืจื•ืฃ ืฆื• ื“ื™ ืกืคึผืจื™ื ื’-ื‘ืื–ื™ืจื˜ ื•ื•ืขื‘ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ.
  3. ื“ื™ ื•ื•ืขื‘ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืคืึธืจื•ื•ืขืจื“ื– ื“ื™ ื‘ืงืฉื” ืฆื• ื“ื•ืจื›ืคื™ืจืŸ ื˜ืขืงืกื˜ ืึทื ืึทืœื™ืกื™ืก ืฆื• ื“ื™ ืคึผื™ื˜ื”ืึธืŸ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ.
  4. ื“ื™ ืคึผื™ื˜ื”ืึธืŸ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืคึผืขืจืคืึธืจืžื– ืกืขื ื˜ื™ืžืขื ื˜ ืึทื ืึทืœื™ืกื™ืก ืคื•ืŸ ื“ืขื ื˜ืขืงืกื˜ ืื•ืŸ ืงืขืจื˜ ื“ื™ ืจืขื–ื•ืœื˜ืึทื˜ ื•ื•ื™ ืึท ืขื ื˜ืคืขืจ ืฆื• ื“ื™ ื‘ืงืฉื”.
  5. ื“ื™ ืกืคึผืจื™ื ื’ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืกืขื ื“ื– ืึท ืขื ื˜ืคืขืจ ืฆื• ื“ื™ ืจืขืึทืงื˜ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ (ื•ื•ืึธืก, ืื™ืŸ ืงืขืจ, ื•ื•ื™ื™ึทื–ืŸ ื“ื™ ืจืขื–ื•ืœื˜ืึทื˜ ืคื•ืŸ ื“ื™ ื˜ืขืงืกื˜ ืึทื ืึทืœื™ืกื™ืก ืฆื• ื“ืขืจ ื‘ืึทื ื™ืฆืขืจ).

ื“ื™ ืงืึธื“ ืคึฟืึทืจ ืึทืœืข ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื– ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขืคึฟื•ื ืขืŸ ื“ืึธ. ืื™ืš ืจืขืงืึธืžืขื ื“ื™ืจืŸ ืึทื– ืื™ืจ ื ืึธื›ืžืึทื›ืŸ ื“ืขื ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ ืคึฟืึทืจ ื–ื™ืš ืจืขื›ื˜ ืื™ืฆื˜, ื•ื•ื™ื™ึทืœ ืขืก ื–ืขื ืขืŸ ืคื™ืœืข ื˜ืฉื™ืงืึทื•ื•ืข ื™ืงืกืคึผืขืจืึทืžืึทื ืฅ ืžื™ื˜ ืื™ื ืคืึธืจื•ื™ืก ืคื•ืŸ ืื•ื ื“ื–.

ืคืœื™ืกื ื“ื™ืง ืึท ืžื™ืงืจืึธืกืขืจื•ื•ื™ืก-ื‘ืื–ื™ืจื˜ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืื•ื™ืฃ ื“ื™ื™ืŸ ื”ื™ื’ืข ืžืึทืฉื™ืŸ

ื›ึผื“ื™ ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ื–ืึธืœ ืึทืจื‘ืขื˜ืŸ, ืžื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืึธื ื”ื™ื™ื‘ืŸ ืึทืœืข ื“ืจื™ื™ ืžื™ืงืจืึธ ื‘ืึทื“ื™ื ื•ื ื’ืก. ืœืึธืžื™ืจ ืึธื ื”ื™ื™ื‘ืŸ ืžื™ื˜ ื“ื™ ืงื™ื•ื˜ื™ืกื˜ ืคื•ืŸ ื–ื™ื™ ืึทืœืข - ื“ื™ ืคืจืึธื ื˜-ืกื•ืฃ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ.

โ–ืฉื˜ืขืœืŸ ืจืขืึทืงื˜ ืคึฟืึทืจ ื”ื™ื’ืข ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’

ืื™ืŸ ืกื“ืจ ืฆื• ืœื•ื™ืคืŸ ืึท ืจืขืึทืงื˜ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ, ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ื™ื ืกื˜ืึทืœื™ืจืŸ ื“ื™ Node.js ืคึผืœืึทื˜ืคืึธืจืžืข ืื•ืŸ NPM ืื•ื™ืฃ ื“ื™ื™ืŸ ืงืึธืžืคึผื™ื•ื˜ืขืจ. ืึทืžืึธืœ ืื™ืจ ื”ืึธื‘ืŸ ืึทืœืข ื“ืขื ืื™ื ืกื˜ืึทืœื™ืจืŸ, ื ื•ืฆืŸ ื“ื™ ื•ื•ืึธืงื–ืึทืœ ืฆื• ื ืึทื•ื•ื™ื’ื™ืจืŸ ืฆื• ื“ื™ื™ืŸ ืคึผืจื•ื™ืขืงื˜ ื˜ืขืงืข sa-frontend ืื•ืŸ ืœื•ื™ืคืŸ ื“ื™ ืคืืœื’ืขื ื“ืข ื‘ืึทืคึฟืขืœ:

npm install

ื“ื•ืจืš ืคืœื™ืกื ื“ื™ืง ื“ืขื ื‘ืึทืคึฟืขืœ ืื™ืŸ ื“ืขืจ ื˜ืขืงืข node_modules ื“ื™ ื“ื™ืคึผืขื ื“ืึทื ืกื™ื– ืคื•ืŸ ื“ื™ ืจืขืึทืงื˜ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ื•ื•ืขื˜ ื–ื™ื™ืŸ ืœืึธื•ื“ื™ื“, ืจืขืงืึธืจื“ืก ืคื•ืŸ ื•ื•ืึธืก ื–ืขื ืขืŸ ืื™ืŸ ื“ืขืจ ื˜ืขืงืข package.json. ืึทืžืึธืœ ื“ื™ ื“ื™ืคึผืขื ื“ืึทื ืกื™ื– ื–ืขื ืขืŸ ื“ืึทื•ื ืœืึธื•ื“ื™ื“ ืื™ืŸ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ื˜ืขืงืข, ืœื•ื™ืคืŸ ื“ื™ ืคืืœื’ืขื ื“ืข ื‘ืึทืคึฟืขืœ:

npm start

ืึทื– ืก ืึทืœืข. ืื™ืฆื˜ ื“ื™ React ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืื™ื– ืคืœื™ืกื ื“ื™ืง, ืื™ืจ ืงืขื ืขืŸ ืึทืงืกืขืก ืขืก ื“ื•ืจืš ื’ื™ื™ืŸ ืฆื• ื“ื™ ืคืืœื’ืขื ื“ืข ืึทื“ืจืขืก ืื™ืŸ ื“ื™ื™ืŸ ื‘ืœืขื˜ืขืจืขืจ: localhost:3000. ืื™ืจ ืงืขื ืขืŸ ื˜ื•ื™ืฉืŸ ืขืคึผืขืก ืื™ืŸ ื–ื™ื™ึทืŸ ืงืึธื“. ืื™ืจ ื•ื•ืขื˜ ื’ืœื™ื™ืš ื–ืขืŸ ื“ื™ ื•ื•ื™ืจืงื•ื ื’ ืคื•ืŸ ื“ื™ ืขื ื“ืขืจื•ื ื’ืขืŸ ืื™ืŸ ื“ืขื ื‘ืœืขื˜ืขืจืขืจ. ื“ืึธืก ืื™ื– ืžืขื’ืœืขืš ื“ืึทื ืง ืฆื• ื“ื™ ืึทื–ื•ื™ ื’ืขืจื•ืคืขื ืข "ื”ื™ื™ืก" ืคืึทืจื‘ื™ื™ึทื˜ ืคื•ืŸ ืžืึทื“ื–ืฉื•ืœื–. ื“ืึธืก ืžืื›ื˜ ืคืจืึธื ื˜-ืกื•ืฃ ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ืึท ืคึผืฉื•ื˜ ืื•ืŸ ืขื ื“ื–ืฉื•ื™ืึทื‘ืึทืœ ื“ืขืจืคืึทืจื•ื ื’.

โ– ืคึผืจื™ืคึผืขืจื™ื ื’ ืึท ืจืขืึทืงื˜ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืคึฟืึทืจ ืคึผืจืึธื“ื•ืงืฆื™ืข

ืคึฟืึทืจ ื“ื™ ืฆื•ื•ืขืง ืคื•ืŸ ืึทืงืฉืœื™ ื ื™ืฆืŸ ืึท ืจืขืึทืงื˜ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ, ืžื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ื’ืขืจ ืขืก ืื™ืŸ ืึท ืกื›ื•ื ืคื•ืŸ ืกื˜ืึทื˜ื™ืง ื˜ืขืงืขืก ืื•ืŸ ื“ื™ื ืขืŸ ื–ื™ื™ ืฆื• ืงืœื™ื™ืึทื ืฅ ื ื™ืฆืŸ ืึท ื•ื•ืขื‘ ืกืขืจื•ื•ืขืจ.

ืฆื• ื‘ื•ื™ืขืŸ ื“ื™ ืจืขืึทืงื˜ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ, ื•ื•ื™ื“ืขืจ ื ื™ืฆืŸ ื“ื™ ื•ื•ืึธืงื–ืึทืœ, ื ืึทื•ื•ื™ื’ื™ืจืŸ ืฆื• ื“ืขืจ ื˜ืขืงืข sa-frontend ืื•ืŸ ืœื•ื™ืคืŸ ื“ื™ ืคืืœื’ืขื ื“ืข ื‘ืึทืคึฟืขืœ:

npm run build

ื“ืึธืก ื•ื•ืขื˜ ืฉืึทืคึฟืŸ ืึท ื•ื•ืขื’ื•ื•ื™ื™ึทื–ืขืจ ืื™ืŸ ื“ื™ ืคึผืจื•ื™ืขืงื˜ ื˜ืขืงืข build. ืขืก ื•ื•ืขื˜ ืึทื ื˜ื”ืึทืœื˜ืŸ ืึทืœืข ื“ื™ ืกื˜ืึทื˜ื™ืง ื˜ืขืงืขืก ื ื™ื™ื˜ื™ืง ืคึฟืึทืจ ื“ื™ ืจืขืึทืงื˜ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืฆื• ืึทืจื‘ืขื˜ืŸ.

โ– ืกืขืจื•ื•ื™ื ื’ ืกื˜ืึทื˜ื™ืง ื˜ืขืงืขืก ื ื™ืฆืŸ Nginx

ืขืจืฉื˜ืขืจ ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ื™ื ืกื˜ืึทืœื™ืจืŸ ืื•ืŸ ืœื•ื™ืคืŸ ื“ื™ Nginx ื•ื•ืขื‘ ืกืขืจื•ื•ืขืจ. ื“ืึธ ืื™ืจ ืงืขื ืขืŸ ืืจืืคืงืืคื™ืข ืขืก ืื•ืŸ ื’ืขืคึฟื™ื ืขืŸ ื™ื ืกื˜ืจืึทืงืฉืึทื ื– ืื•ื™ืฃ ื•ื•ื™ ืฆื• ื™ื ืกื˜ืึทืœื™ืจืŸ ืื•ืŸ ืœื•ื™ืคืŸ ืขืก. ื“ืขืจื ืึธืš ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ื ืึธื›ืžืึทื›ืŸ ื“ื™ ืื™ื ื”ืึทืœื˜ ืคื•ืŸ ื“ื™ ื˜ืขืงืข sa-frontend/build ืฆื• ื˜ืขืงืข [your_nginx_installation_dir]/html.

ืžื™ื˜ ื“ืขื ืฆื•ื’ืึทื ื’, ื“ื™ ื˜ืขืงืข ื“ื–ืฉืขื ืขืจื™ื™ื˜ืึทื“ ื‘ืขืฉืึทืก ื“ื™ ื‘ื•ื™ืขืŸ ืคึผืจืึธืฆืขืก ืคื•ืŸ ื“ื™ ืจืขืึทืงื˜ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ index.html ื•ื•ืขื˜ ื–ื™ื™ืŸ ื‘ื ื™ืžืฆื ืื™ืŸ [your_nginx_installation_dir]/html/index.html. ื“ืึธืก ืื™ื– ื“ืขืจ ื˜ืขืงืข ื•ื•ืึธืก, ื“ื•ืจืš ืคืขืœื™ืงื™ื™ึทื˜, ื“ื™ Nginx ืกืขืจื•ื•ืขืจ ื˜ืจืื’ื˜ ื•ื•ืขืŸ ืึทืงืกืขืก ืขืก. ื“ืขืจ ืกืขืจื•ื•ืขืจ ืื™ื– ืงืึทื ืคื™ื’ื™ืขืจื“ ืฆื• ื”ืขืจืŸ ืื•ื™ืฃ ื“ื™ ืคึผืึธืจื˜ 80, ืึธื‘ืขืจ ืขืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ืงืึทืกื˜ืึทืžื™ื™ื–ื“ ื•ื•ื™ ืื™ืจ ื“ืึทืจืคึฟืŸ ื“ื•ืจืš ืขื“ื™ื˜ื™ื ื’ ื“ื™ ื˜ืขืงืข [your_nginx_installation_dir]/conf/nginx.conf.

ืื™ืฆื˜ ืขืคืขื ืขืŸ ื“ื™ื™ืŸ ื‘ืœืขื˜ืขืจืขืจ ืื•ืŸ ื’ื™ื™ืŸ ืฆื• localhost:80. ืื™ืจ ื•ื•ืขื˜ ื–ืขืŸ ื“ื™ ืจืขืึทืงื˜ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ื‘ืœืึทื˜.

Kubernetes ื˜ื•ื˜ืึธืจื™ืึทืœ ื˜ื™ื™ืœ 1: ืึทืคึผืคึผืœื™ืงืึทื˜ื™ืึธื ืก, ืžื™ืงืจืึธ ื‘ืึทื“ื™ื ื•ื ื’ืก ืื•ืŸ ืงืึทื ื˜ื™ื™ื ืขืจื–
ืจืขืึทื’ื™ืจืŸ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ื’ืขื“ื™ื ื˜ ื“ื•ืจืš Nginx ืกืขืจื•ื•ืขืจ

ืื•ื™ื‘ ืื™ืจ ืื™ืฆื˜ ืึทืจื™ื™ึทืŸ ืขืคึผืขืก ืื™ืŸ ื“ื™ ืคืขืœื“ Type your sentence ืื•ืŸ ื“ืจื™ืงืŸ ื“ืขื ืงื ืขืคึผืœ Send - ื’ืึธืจื ื™ืฉื˜ ื•ื•ืขื˜ ืคึผืึทืกื™ืจืŸ. ืึธื‘ืขืจ, ืื•ื™ื‘ ืื™ืจ ืงื•ืง ืื™ืŸ ื“ื™ ืงืึทื ืกืึธื•ืœ, ืื™ืจ ืงืขื ืขืŸ ื–ืขืŸ ื˜ืขื•ืช ืึทืจื˜ื™ืงืœืขืŸ ื“ืึธืจื˜. ืื™ืŸ ืกื“ืจ ืฆื• ืคึฟืึทืจืฉื˜ื™ื™ืŸ ื•ื•ื• ืคึผื•ื ืงื˜ ื“ื™ ืขืจืจืึธืจืก ืคืึทืœืŸ, ืœืึธื–ืŸ ืื•ื ื“ื– ืึทื ืึทืœื™ื™ื– ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืงืึธื“.

โ–ืคืจืึธื ื˜-ืกื•ืฃ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืงืึธื“ ืึทื ืึทืœื™ืกื™ืก

ื ืขืžืขืŸ ืึท ืงื•ืง ืื™ืŸ ื“ื™ ื˜ืขืงืข ืงืึธื“ App.js, ืžื™ืจ ืงืขื ืขืŸ ื–ืขืŸ ืึทื– ื“ืจื™ื ื’ืœืขืš ื“ื™ ืงื ืขืคึผืœ Send ืจื•ืคื˜ ื–ื™ืš ื ืžืขื˜ืื“ analyzeSentence(). ื“ืขืจ ืงืึธื“ ืคึฟืึทืจ ื“ืขื ืื•ืคึฟืŸ ืื™ื– ื’ืขื’ืขื‘ืŸ ืื•ื ื˜ืŸ. ื‘ื™ื˜ืข ื˜ืึธืŸ ืึทื– ืคึฟืึทืจ ื™ืขื“ืขืจ ืฉื•ืจื” ื•ื•ืึธืก ื”ืื˜ ืึท ื‘ืึทืžืขืจืงื•ื ื’ ืคื•ืŸ ื“ื™ ืคืึธืจืขื # ะะพะผะตั€, ืขืก ืื™ื– ืึท ื“ืขืจืงืœืขืจื•ื ื’ ื’ืขื’ืขื‘ืŸ ืื•ื ื˜ืขืจ ื“ื™ ืงืึธื“. ืžื™ืจ ื•ื•ืขืœืŸ ืึทื ืึทืœื™ื™ื– ืื ื“ืขืจืข ืงืึธื“ ืคืจืึทื’ืžืึทื ืฅ ืื™ืŸ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ื•ื•ืขื’.

analyzeSentence() {
    fetch('http://localhost:8080/sentiment', {  // #1
        method: 'POST',
        headers: {
            'Content-Type': 'application/json'
        },
        body: JSON.stringify({
                       sentence: this.textField.getValue()})// #2
    })
        .then(response => response.json())
        .then(data => this.setState(data));  // #3
}

1. ื“ื™ URL ืฆื• ื•ื•ืึธืก ื“ื™ POST ื‘ืขื˜ืŸ ืื™ื– ื’ืขืžืื›ื˜. ืขืก ืื™ื– ืื ื’ืขื ื•ืžืขืŸ ืึทื– ืขืก ืื™ื– ืึท ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืื™ืŸ ื“ืขื ืึทื“ืจืขืก ื•ื•ืึธืก ื™ืงืกืคึผืขืงืฅ ืึทื–ืึท ืจื™ืงื•ื•ืขืก.

2.ื“ืขืจ ื‘ืงืฉื” ื’ื•ืฃ ื’ืขืฉื™ืงื˜ ืฆื• ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ. ื“ืึธ ืื™ื– ืึท ื‘ื™ื™ึทืฉืคึผื™ืœ ืคื•ืŸ ื‘ืขื˜ืŸ ื’ื•ืฃ:

{
    sentence: "I like yogobella!"
}

3.ื•ื•ืขืŸ ืึท ืขื ื˜ืคืขืจ ืฆื• ืึท ื‘ืงืฉื” ืื™ื– ื‘ืืงื•ืžืขืŸ, ื“ื™ ืฉื˜ืึทื˜ ืคื•ืŸ ื“ื™ ืงืึธืžืคึผืึธื ืขื ื˜ ืื™ื– ื“ืขืจื”ื™ื™ึทื ื˜ื™ืงื˜. ื“ืขื ื– ื“ื™ ืงืึธืžืคึผืึธื ืขื ื˜ ืฆื• ื–ื™ื™ืŸ ืฉื™ื™ึทืขืš-ืจืขื ื“ืขืจื“. ืื•ื™ื‘ ืžื™ืจ ื‘ืึทืงื•ืžืขืŸ ื“ืึทื˜ืŸ (ื“ืึธืก ืื™ื–, ืึท JSON ื›ื™ื™ืคืขืฅ ืžื™ื˜ ื“ื™ ืึทืจื™ื™ึทื ืฉืจื™ื™ึทื‘ ื“ืึทื˜ืŸ ืื•ืŸ ื“ื™ ืงืึทืœืงื™ืึทืœื™ื™ื˜ื™ื“ ื˜ืขืงืกื˜ ื›ืขื–ืฉื‘ืŸ), ืžื™ืจ ื•ื•ืขืœืŸ ืจืขื–ื•ืœื˜ืึทื˜ ื“ื™ ืงืึธืžืคึผืึธื ืขื ื˜ Polarity, ืฐืฒ ืœ ื“ ื™ ื’ืขื”ืขืจื™ืง ืข ื‘ืื“ื™ื ื’ื•ื ื’ืข ืŸ ืฐืข ื˜ ืฐืขืจืŸ . ื“ืึธืก ืื™ื– ื•ื•ื™ ืžื™ืจ ื‘ืึทืฉืจื™ื™ึทื‘ืŸ ื“ืขื ืงืึธืžืคึผืึธื ืขื ื˜:

const polarityComponent = this.state.polarity !== undefined ?
    <Polarity sentence={this.state.sentence} 
              polarity={this.state.polarity}/> :
    null;

ื“ืขืจ ืงืึธื“ ืื•ื™ืก ืฆื• ืึทืจื‘ืขื˜ืŸ ื’ืึทื ืฅ ื’ื•ื˜. ื•ื•ืึธืก ืื™ื– ืคืึทืœืฉ ืžื™ื˜ ื“ืขื, ืกื™ื™ึท ื•ื•ื™ ืกื™ื™ึท? ืื•ื™ื‘ ืื™ืจ ื™ื‘ืขืจื ืขืžืขืŸ ืึทื– ืื™ืŸ ื“ื™ ืึทื“ืจืขืก ืฆื• ื•ื•ืึธืก ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืื™ื– ื˜ืจื™ื™ื ื’ ืฆื• ืฉื™ืงืŸ ืึท POST ื‘ืขื˜ืŸ, ืขืก ืื™ื– ื’ืึธืจื ื™ืฉื˜ ื ืึธืš ื•ื•ืึธืก ืงืขื ืขืŸ ืึธื ื ืขืžืขืŸ ืื•ืŸ ืคึผืจืึธืฆืขืก ื“ืขื ื‘ืขื˜ืŸ, ืื™ืจ ื•ื•ืขื˜ ื–ื™ื™ืŸ ืœืขื’ืึทืžืจืข ืจืขื›ื˜. ื ื™ื™ืžืœื™, ืฆื• ืคึผืจืึธืฆืขืก ืจื™ืงื•ื•ืขืก ื‘ืืงื•ืžืขืŸ ืื™ืŸ http://localhost:8080/sentiment, ืžื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืœื•ื™ืคืŸ ืึท ื•ื•ืขื‘ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ืกืคึผืจื™ื ื’.

Kubernetes ื˜ื•ื˜ืึธืจื™ืึทืœ ื˜ื™ื™ืœ 1: ืึทืคึผืคึผืœื™ืงืึทื˜ื™ืึธื ืก, ืžื™ืงืจืึธ ื‘ืึทื“ื™ื ื•ื ื’ืก ืื•ืŸ ืงืึทื ื˜ื™ื™ื ืขืจื–
ืžื™ืจ ื“ืึทืจืคึฟืŸ ืึท ืกืคึผืจื™ื ื’ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ื•ื•ืึธืก ืงืขื ืขืŸ ืึธื ื ืขืžืขืŸ ืึท POST ื‘ืขื˜ืŸ

โ– ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ ืึท ืกืคึผืจื™ื ื’ ื‘ืื–ื™ืจื˜ ื•ื•ืขื‘ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ

ืื™ืŸ ืกื“ืจ ืฆื• ืฆืขื•ื•ื™ืงืœืขืŸ ืึท ืกืคึผืจื™ื ื’ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ, ืื™ืจ ื•ื•ืขื˜ ื“ืึทืจืคึฟืŸ JDK8 ืื•ืŸ Maven ืื•ืŸ ืจืขื›ื˜ ืงืึทื ืคื™ื’ื™ืขืจื“ ืกื•ื•ื™ื•ื•ืข ื•ื•ืขืจื™ืึทื‘ืึทืœื–. ืึทืžืึธืœ ืื™ืจ ื”ืึธื‘ืŸ ืึทืœืข ื“ืขื ืื™ื ืกื˜ืึทืœื™ืจืŸ, ืื™ืจ ืงืขื ืขืŸ ืคืึธืจื–ืขืฆืŸ ืืจื‘ืขื˜ืŸ ืื•ื™ืฃ ืื•ื ื“ื–ืขืจ ืคึผืจื•ื™ืขืงื˜.

โ– ืคึผืึทืงืงืึทื’ื™ื ื’ ืึท ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืื™ืŸ ืึท ืกืœื•ื™ ื˜ืขืงืข

ื ืึทื•ื•ื™ื’ื™ืจืŸ, ื ื™ืฆืŸ ืึท ื•ื•ืึธืงื–ืึทืœ, ืฆื• ื“ืขืจ ื˜ืขืงืข sa-webapp ืื•ืŸ ืึทืจื™ื™ึทืŸ ื“ื™ ืคืืœื’ืขื ื“ืข ื‘ืึทืคึฟืขืœ:

mvn install

ื ืึธืš ืคืœื™ืกื ื“ื™ืง ื“ืขื ื‘ืึทืคึฟืขืœ ืื™ืŸ ื“ืขืจ ื˜ืขืงืข sa-webapp ืึท ื•ื•ืขื’ื•ื•ื™ื™ึทื–ืขืจ ื•ื•ืขื˜ ื–ื™ื™ืŸ ื‘ืืฉืืคืŸ target. ื“ืึธืก ืื™ื– ื•ื•ื• ื“ื™ Java ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ื•ื•ืขื˜ ื–ื™ื™ืŸ ืœื™ื’ืŸ, ืคึผืึทืงื™ื“ื–ืฉื“ ืื™ืŸ ืึท ืกืœื•ื™ ื˜ืขืงืข, ืจืขืคึผืจื™ื–ืขื ื˜ื™ื“ ื“ื•ืจืš ื“ื™ ื˜ืขืงืข sentiment-analysis-web-0.0.1-SNAPSHOT.jar.

โ– ืคืœื™ืกื ื“ื™ืง ืึท Java ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ

ื’ื™ื™ืŸ ืฆื• ื“ื™ ื˜ืขืงืข target ืื•ืŸ ืœื•ื™ืคืŸ ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืžื™ื˜ ื“ื™ ืคืืœื’ืขื ื“ืข ื‘ืึทืคึฟืขืœ:

java -jar sentiment-analysis-web-0.0.1-SNAPSHOT.jar

ืึท ื˜ืขื•ืช ื•ื•ืขื˜ ืคึผืึทืกื™ืจืŸ ื‘ืฉืขืช ืขืงืกืึทืงื™ื•ื˜ื™ื ื’ ื“ืขื ื‘ืึทืคึฟืขืœ. ืฆื• ืึธื ื”ื™ื™ื‘ืŸ ืคื™ืงืกื™ืจ ืขืก, ืžื™ืจ ืงืขื ืขืŸ ืคื•ื ืึทื ื“ืขืจืงืœื™ื™ึทื‘ืŸ ื“ื™ ื•ื™ืกื ืขื ื“ืขื˜ืึทื™ืœืก ืื™ืŸ ื“ื™ ืกื˜ืึทืง ืฉืคึผื•ืจ ื“ืึทื˜ืŸ:

Error creating bean with name 'sentimentController': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'sa.logic.api.url' in value "${sa.logic.api.url}"

ืคึฟืึทืจ ืื•ื ื“ื–, ื“ื™ ืžืขืจืกื˜ ื•ื•ื™ื›ื˜ื™ืง ื–ืึทืš ื“ืึธ ืื™ื– ื“ืขืจ ื“ืขืจืžืึธื ืขืŸ ืคื•ืŸ ื“ื™ ื™ืžืคึผืึธืกื™ื‘ื™ืœื™ื˜ื™ ืคื•ืŸ ืงืœืขืจืึทืคื™ื™ื™ื ื’ ื“ื™ ื˜ื™ื™ึทื˜ืฉ sa.logic.api.url. ื–ืืœ ืก ืคื•ื ืึทื ื“ืขืจืงืœื™ื™ึทื‘ืŸ ื“ื™ ืงืึธื“ ืื™ืŸ ื•ื•ืึธืก ื“ืขืจ ื˜ืขื•ืช ืึทืงืขืจื–.

โ– Java ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืงืึธื“ ืึทื ืึทืœื™ืกื™ืก

ื“ืึธ ืื™ื– ื“ื™ ืงืึธื“ ืกื ื™ืคึผืึทื˜ ื•ื•ื• ื“ืขืจ ื˜ืขื•ืช ืึทืงืขืจื–.

@CrossOrigin(origins = "*")
@RestController
public class SentimentController {
    @Value("${sa.logic.api.url}")    // #1
    private String saLogicApiUrl;
    @PostMapping("/sentiment")
    public SentimentDto sentimentAnalysis(
        @RequestBody SentenceDto sentenceDto) 
    {
        RestTemplate restTemplate = new RestTemplate();
        return restTemplate.postForEntity(
                saLogicApiUrl + "/analyse/sentiment",    // #2
                sentenceDto, SentimentDto.class)
                .getBody();
    }
}

  1. ืื™ืŸ SentimentController ืขืก ืื™ื– ืึท ืคืขืœื“ saLogicApiUrl. ื–ื™ื™ึทืŸ ื•ื•ืขืจื˜ ืื™ื– ืกืคึผืขืกื™ืคื™ืขื“ ื“ื•ืจืš ื“ื™ ืคืึทืจืžืึธื’ sa.logic.api.url.
  2. ืคึผืึทืก saLogicApiUrl ืงืึทื ืงืึทื˜ืึทื ื™ื™ืฅ ืžื™ื˜ ื“ื™ ื•ื•ืขืจื˜ /analyse/sentiment. ืฆื•ื–ืึทืžืขืŸ ื–ื™ื™ ืคืึธืจืขื ื“ื™ ืึทื“ืจืขืก ืคึฟืึทืจ ืึท ืจื•ืคืŸ ืฆื• ื“ื™ ืžื™ืงืจืึธืกืขืจื•ื•ื™ืก ื•ื•ืึธืก ืคึผืขืจืคืึธืจืžื– ื˜ืขืงืกื˜ ืึทื ืึทืœื™ืกื™ืก.

โ– ืฉื˜ืขืœืŸ ืึท ืคืึทืจืžืึธื’ ื•ื•ืขืจื˜

ืื™ืŸ ืคืจื™ืœื™ื ื’, ื“ืขืจ ื ืึธืจืžืึทืœ ืžืงื•ืจ ืคื•ืŸ ืคืึทืจืžืึธื’ ื•ื•ืึทืœื•ืขืก ืื™ื– ืึท ื˜ืขืงืข application.properties, ื•ื•ืึธืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขืคึฟื•ื ืขืŸ ืื™ืŸ sa-webapp/src/main/resources. ืื‘ืขืจ ื–ื™ื™ึทืŸ ื ื•ืฆืŸ ืื™ื– ื ื™ืฉื˜ ื“ืขืจ ื‘ืœื•ื™ื– ื•ื•ืขื’ ืฆื• ืฉื˜ืขืœืŸ ืคืึทืจืžืึธื’ ื•ื•ืึทืœื•ืขืก. ื“ืึธืก ืงืขืŸ ืื•ื™ืš ื–ื™ื™ืŸ ื’ืขื˜ืืŸ ืžื™ื˜ ื“ื™ ืคืืœื’ืขื ื“ืข ื‘ืึทืคึฟืขืœ:

java -jar sentiment-analysis-web-0.0.1-SNAPSHOT.jar --sa.logic.api.url=WHAT.IS.THE.SA.LOGIC.API.URL

ื“ื™ ื•ื•ืขืจื˜ ืคื•ืŸ ื“ืขื ืคืึทืจืžืึธื’ ื–ืึธืœ ืคื•ื ื˜ ืฆื• ื“ื™ ืึทื“ืจืขืก ืคื•ืŸ ืื•ื ื“ื–ืขืจ ืคึผื™ื˜ื”ืึธืŸ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ.

ื“ื•ืจืš ืงืึทื ืคื™ื’ื™ืขืจื™ื ื’ ืขืก, ืžื™ืจ ื–ืึธื’ืŸ ื“ื™ ืกืคึผืจื™ื ื’ ื•ื•ืขื‘ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ื•ื•ื• ืขืก ื“ืึทืจืฃ ื’ื™ื™ืŸ ืฆื• ื“ื•ืจื›ืคื™ืจืŸ ื˜ืขืงืกื˜ ืึทื ืึทืœื™ืกื™ืก ืจื™ืงื•ื•ืขืก.

ื›ึผื“ื™ ื ื™ืฉื˜ ืฆื• ืงืึธืžืคึผืœื™ืฆื™ืจืŸ ืื•ื ื“ื–ืขืจ ืœืขื‘ืŸ, ืžื™ืจ ื•ื•ืขืœืŸ ื‘ืึทืฉืœื™ืกืŸ ืึทื– ื“ื™ Python ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ื•ื•ืขื˜ ื–ื™ื™ืŸ ื‘ืืจืขื›ื˜ื™ื’ื˜ ื‘ื™ื™ localhost:5000 ืื•ืŸ ืœืึธืžื™ืจ ืคึผืจื•ื‘ื™ืจืŸ ื ื™ืฉื˜ ืฆื• ืคืึทืจื’ืขืกืŸ ื•ื•ืขื’ืŸ ืื™ื. ื•ื•ื™ ืึท ืจืขื–ื•ืœื˜ืึทื˜, ื“ื™ ื‘ืึทืคึฟืขืœ ืฆื• ืงืึทื˜ืขืจ ื“ื™ ืกืคึผืจื™ื ื’ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ื•ื•ืขื˜ ืงื•ืงืŸ ื•ื•ื™ ื“ืึธืก:

java -jar sentiment-analysis-web-0.0.1-SNAPSHOT.jar --sa.logic.api.url=http://localhost:5000

Kubernetes ื˜ื•ื˜ืึธืจื™ืึทืœ ื˜ื™ื™ืœ 1: ืึทืคึผืคึผืœื™ืงืึทื˜ื™ืึธื ืก, ืžื™ืงืจืึธ ื‘ืึทื“ื™ื ื•ื ื’ืก ืื•ืŸ ืงืึทื ื˜ื™ื™ื ืขืจื–
ืื•ื ื“ื–ืขืจ ืกื™ืกื˜ืขื ืคืขืœื ื“ื™ืง ืึท ืคึผื™ื˜ื”ืึธืŸ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ

ืื™ืฆื˜ ืึทืœืข ืžื™ืจ ื”ืึธื‘ืŸ ืฆื• ื˜ืึธืŸ ืื™ื– ืœื•ื™ืคืŸ ื“ื™ Python ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืื•ืŸ ื“ื™ ืกื™ืกื˜ืขื ื•ื•ืขื˜ ืึทืจื‘ืขื˜ืŸ ื•ื•ื™ ื“ืขืจื•ื•ืึทืจื˜.

โ– ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ ืึท ืคึผื™ื˜ื”ืึธืŸ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ

ืฆื• ืœื•ื™ืคืŸ ืึท ืคึผื™ื˜ื”ืึธืŸ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ, ืื™ืจ ืžื•ื–ืŸ ื”ืึธื‘ืŸ Python 3 ืื•ืŸ Pip ืื™ื ืกื˜ืึทืœื™ืจืŸ, ืื•ืŸ ื“ื™ ืฆื•ื ืขืžืขืŸ ืกื•ื•ื™ื•ื•ืข ื•ื•ืขืจื™ืึทื‘ืึทืœื– ืžื•ื–ืŸ ื–ื™ื™ืŸ ืฉื˜ืขืœืŸ ืจื™ื›ื˜ื™ืง.

โ– ื™ื ืกื˜ืึธืœื™ื ื’ ื“ื™ืคึผืขื ื“ืึทื ืกื™ื–

ื’ื™ื™ืŸ ืฆื• ื“ื™ื™ืŸ ืคึผืจื•ื™ืขืงื˜ ื˜ืขืงืข sa-logic/sa ืื•ืŸ ืœื•ื™ืคืŸ ื“ื™ ืคืืœื’ืขื ื“ืข ืงืึทืžืึทื ื“ื–:

python -m pip install -r requirements.txt
python -m textblob.download_corpora

โ– ืงืึทื˜ืขืจ ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ

ื ืึธืš ื™ื ืกื˜ืึธืœื™ื ื’ ื“ื™ ื“ื™ืคึผืขื ื“ืึทื ืกื™ื–, ืžื™ืจ ื–ืขื ืขืŸ ื’ืจื™ื™ื˜ ืฆื• ืœื•ื™ืคืŸ ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ:

python sentiment_analysis.py

ื ืึธืš ืคืœื™ืกื ื“ื™ืง ื“ืขื ื‘ืึทืคึฟืขืœ ืžื™ืจ ื•ื•ืขื˜ ื–ื™ื™ืŸ ื’ืขื–ืึธื’ื˜ ื“ื™ ืคืืœื’ืขื ื“ืข:

* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)

ื“ืขื ืžื™ื˜ืœ ืึทื– ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืื™ื– ืคืœื™ืกื ื“ื™ืง ืื•ืŸ ื•ื•ืืจื˜ืŸ ืคึฟืึทืจ ืจื™ืงื•ื•ืขืก ื‘ื™ื™ึท localhost:5000/

โ– ืงืึธื“ ืคืึธืจืฉื•ื ื’

ืœืึธืžื™ืจ ืงื•ืงืŸ ืื™ืŸ ื“ื™ Python ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืงืึธื“ ืฆื• ืคึฟืึทืจืฉื˜ื™ื™ืŸ ื•ื•ื™ ืขืก ืจื™ืกืคึผืึทื ื“ื– ืฆื• ืจื™ืงื•ื•ืขืก:

from textblob import TextBlob
from flask import Flask, request, jsonify
app = Flask(__name__)                                   #1
@app.route("/analyse/sentiment", methods=['POST'])      #2
def analyse_sentiment():
    sentence = request.get_json()['sentence']           #3
    polarity = TextBlob(sentence).sentences[0].polarity #4
    return jsonify(                                     #5
        sentence=sentence,
        polarity=polarity
    )
if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)                #6

  1. ื™ื ื™ื˜ื™ืึทืœื™ื–ื™ื ื’ ืึท ื›ื™ื™ืคืขืฅ Flask.
  2. ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ ืึทืŸ ืึทื“ืจืขืก ืคึฟืึทืจ ืคึผืขืจืคืึธืจืžื™ื ื’ POST ืจื™ืงื•ื•ืขืก ืฆื• ืขืก.
  3. ืจื™ื˜ืจื™ื•ื•ื™ื ื’ ืึท ืคืึทืจืžืึธื’ sentence ืคื•ืŸ ื“ื™ ื‘ืงืฉื” ื’ื•ืฃ.
  4. ื™ื ื™ื˜ื™ืึทืœื™ื™ื–ื™ื ื’ ืึทืŸ ืึทื ืึธื ื™ืžืข ื‘ืึทื ื•ืฆืขืจืก ืึธื‘ื“ื–ืฉืขืงื˜ TextBlob ืื•ืŸ ื‘ืึทืงื•ืžืขืŸ ื“ื™ ื•ื•ืขืจื˜ polarity ืคึฟืึทืจ ื“ืขืจ ืขืจืฉื˜ืขืจ ื–ืึทืฅ ื‘ืืงื•ืžืขืŸ ืื™ืŸ ื“ื™ ื’ื•ืฃ ืคื•ืŸ ื“ื™ ื‘ืงืฉื” (ืื™ืŸ ืื•ื ื“ื–ืขืจ ืคืึทืœ, ื“ืึธืก ืื™ื– ื“ืขืจ ื‘ืœื•ื™ื– ื–ืึทืฅ ื’ืขืฉื™ืงื˜ ืคึฟืึทืจ ืึทื ืึทืœื™ืกื™ืก).
  5. ืฆื•ืจื™ืงืงื•ืžืขืŸ ืึท ืขื ื˜ืคืขืจ ื•ื•ืขืžืขื ืก ื’ื•ืฃ ื›ึผื•ืœืœ ื“ื™ ื˜ืขืงืกื˜ ืคื•ืŸ ื“ืขื ื–ืึทืฅ ืื•ืŸ ื“ื™ ืงืึทืœืงื™ืึทืœื™ื™ื˜ื™ื“ ื’ืจืื“ืŸ ืคึฟืึทืจ ืื™ื polarity.
  6. ืงืึทื˜ืขืจ ืึท ืคืœืึทืกืง ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ, ื•ื•ืึธืก ื•ื•ืขื˜ ื–ื™ื™ืŸ ื‘ืืจืขื›ื˜ื™ื’ื˜ ื‘ื™ื™ 0.0.0.0:5000 (ืื™ืจ ืงืขื ื˜ ืื•ื™ืš ืึทืงืกืขืก ืขืก ืžื™ื˜ ืึท ืงืึทื ืกื˜ืจืึทืงืฉืึทืŸ ืคื•ืŸ ื“ื™ ืคืึธืจืขื localhost:5000).

ื“ื™ ืžื™ืงืจืึธ ืกืขืจื•ื•ื™ืกืขืก ื•ื•ืึธืก ืžืึทื›ืŸ ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ื–ืขื ืขืŸ ืื™ืฆื˜ ืคืœื™ืกื ื“ื™ืง. ื–ื™ื™ ื–ืขื ืขืŸ ื˜ื•ื ื“ ืฆื• ื™ื ื˜ืขืจืึทืงื˜ ืžื™ื˜ ื™ืขื“ืขืจ ืื ื“ืขืจืข. ื“ืึธืก ืื™ื– ื•ื•ื™ ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ื“ื™ืึทื’ืจืึทืžืข ืงื•ืงื˜ ื•ื•ื™ ืื™ืŸ ื“ืขื ื‘ื™ื ืข ืคื•ืŸ โ€‹โ€‹ืึทืจื‘ืขื˜.

Kubernetes ื˜ื•ื˜ืึธืจื™ืึทืœ ื˜ื™ื™ืœ 1: ืึทืคึผืคึผืœื™ืงืึทื˜ื™ืึธื ืก, ืžื™ืงืจืึธ ื‘ืึทื“ื™ื ื•ื ื’ืก ืื•ืŸ ืงืึทื ื˜ื™ื™ื ืขืจื–
ื›ืœ ืžื™ืงืจืึธืกืขืจื•ื•ื™ืกืขืก ื•ื•ืึธืก ืžืึทื›ืŸ ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ื–ืขื ืขืŸ ื’ืขื‘ืจืื›ื˜ ืื™ืŸ ืืจื‘ืขื˜ืŸ ืกื“ืจ

ืื™ืฆื˜, ืื™ื™ื“ืขืจ ืื™ืจ ืคืึธืจื–ืขืฆืŸ, ืขืคึฟืขื ืขืŸ ื“ื™ื™ืŸ ืจืขืึทืงื˜ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืื™ืŸ ืึท ื‘ืœืขื˜ืขืจืขืจ ืื•ืŸ ืคึผืจื•ึผื•ื•ื˜ ืฆื• ืคึผืึทืจืกื™ืจืŸ ืขื˜ืœืขื›ืข ื–ืึทืฅ ืžื™ื˜ ืื™ื. ืื•ื™ื‘ ืึทืœืฅ ืื™ื– ื’ืขื˜ืืŸ ืจื™ื›ื˜ื™ืง - ื ืึธืš ื“ืจื™ื ื’ืœืขืš ื“ื™ ืงื ืขืคึผืœ Send ืื™ืจ ื•ื•ืขื˜ ื–ืขืŸ ื“ื™ ืึทื ืึทืœื™ืกื™ืก ืจืขื–ื•ืœื˜ืึทื˜ืŸ ืื•ื ื˜ืขืจ ื“ื™ ื˜ืขืงืกื˜ ืคืขืœื“.

ืื™ืŸ ื“ืขืจ ื•ื•ื™ื™ึทื˜ืขืจ ืึธืคึผื˜ื™ื™ืœื•ื ื’, ืžื™ืจ ื•ื•ืขืœืŸ ืจืขื“ืŸ ื•ื•ืขื’ืŸ ื•ื•ื™ ืฆื• ืœื•ื™ืคืŸ ืื•ื ื“ื–ืขืจ ืžื™ืงืจืึธ ื‘ืึทื“ื™ื ื•ื ื’ืก ืื™ืŸ ื“ืึธืงืงืขืจ ืงืึทื ื˜ื™ื™ื ืขืจื–. ื“ืึธืก ืื™ื– ื ื™ื™ื˜ื™ืง ืื™ืŸ ืกื“ืจ ืฆื• ืฆื•ื’ืจื™ื™ื˜ืŸ ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืฆื• ืœื•ื™ืคืŸ ืื•ื™ืฃ ื“ื™ Kubernetes ืงื ื•ื™ืœ.

ื“ืึธืงืงืขืจ ืงืึทื ื˜ื™ื™ื ืขืจื–

Kubernetes ืื™ื– ืึท ืกื™ืกื˜ืขื ืคึฟืึทืจ ืึธื˜ืึทืžื™ื™ื˜ื™ื ื’ ื“ื™ ื“ื™ืคึผืœื•ื™ืžืึทื ื˜, ืกืงื™ื™ืœื™ื ื’ ืื•ืŸ ืคืึทืจื•ื•ืึทืœื˜ื•ื ื’ ืคื•ืŸ ืงืึทื ื˜ื™ื™ื ืขืจื™ื™ื–ื“ ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื–. ืขืก ืื™ื– ืื•ื™ืš ื’ืขืจื•ืคืŸ ืึท "ืงืึธื ื˜ืึทื™ื ืขืจ ืึธืจืงืขืกื˜ืจืึทื˜ืึธืจ". ืื•ื™ื‘ Kubernetes ืึทืจื‘ืขื˜ ืžื™ื˜ ืงืึทื ื˜ื™ื™ื ืขืจื–, ืื™ื™ื“ืขืจ ื ื™ืฆืŸ ื“ืขื ืกื™ืกื˜ืขื, ืžื™ืจ ืžื•ื–ืŸ ืขืจืฉื˜ืขืจ ืงืจื™ื’ืŸ ื“ื™ ืงืึทื ื˜ื™ื™ื ืขืจื–. ืื‘ืขืจ ืขืจืฉื˜ืขืจ, ืœืึธื–ืŸ ืก ืจืขื“ืŸ ื•ื•ืขื’ืŸ ื•ื•ืึธืก ืงืึทื ื˜ื™ื™ื ืขืจื– ื–ืขื ืขืŸ. ื˜ืึธืžืขืจ ื“ืขืจ ื‘ืขืกื˜ืขืจ ืขื ื˜ืคืขืจ ืฆื• ื“ื™ ืงืฉื™ื ืคื•ืŸ ื•ื•ืึธืก ืขืก ืื™ื– ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขืคึฟื•ื ืขืŸ ืื™ืŸ ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ ืฆื• ื“ืึธืงืงืขืจ:

ื ืงืึทื ื˜ื™ื™ื ืขืจ ื‘ื™ืœื“ ืื™ื– ืึท ืœื™ื™ื˜ื•ื•ื™ื™ื˜, ื–ื™ืš-ืงืึทื ื˜ื™ื™ื ื“, ืขืงืกืขืงื•ื˜ืึทื‘ืœืข ืคึผืขืงืœ ืžื™ื˜ ืึท ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ, ื•ื•ืึธืก ื›ื•ืœืœ ืึทืœืฅ ื ื™ื™ื˜ื™ืง ืฆื• ืœื•ื™ืคืŸ ืขืก: ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืงืึธื“, ื“ื•ืจื›ืคื™ืจื•ื ื’ ืกื•ื•ื™ื•ื•ืข, ืกื™ืกื˜ืขื ืžื›ืฉื™ืจื™ื ืื•ืŸ ืœื™ื™ื‘ืจืขืจื™ื–, ืกืขื˜ื˜ื™ื ื’ืก. ืงืึทื ื˜ื™ื™ื ืขืจื–ืขื“ ืžื’ื™ืœื” ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื™ื ื˜ ืื™ืŸ ืœื™ื ื•ืงืก ืื•ืŸ ื•ื•ื™ื ื“ืึธื•ื– ื™ื ื•ื•ื™ื™ืจืึทื ืžืึทื ืฅ, ืื•ืŸ ื–ื™ื™ ื•ื•ืขืœืŸ ืฉื˜ืขื ื“ื™ืง ืึทืจื‘ืขื˜ ื“ื™ ื–ืขืœื‘ืข ืจืึทื’ืึทืจื“ืœืึทืก ืคื•ืŸ ื“ื™ ื™ื ืคืจืึทืกื˜ืจืึทืงื˜ืฉืขืจ.

ื“ืขื ืžื™ื˜ืœ ืึทื– ืงืึทื ื˜ื™ื™ื ืขืจื– ืงืขื ืขืŸ ื–ื™ื™ืŸ ืœื•ื™ืคืŸ ืื•ื™ืฃ ืงื™ื™ืŸ ืงืึธืžืคึผื™ื•ื˜ืขืจ, ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜ ืคึผืจืึธื“ื•ืงืฆื™ืข ืกืขืจื•ื•ืขืจืก, ืื•ืŸ ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื– ืงืึทื ื˜ื™ื™ื ื“ ืื™ืŸ ื–ื™ื™ ื•ื•ืขืœืŸ ืึทืจื‘ืขื˜ืŸ ื“ื™ ื–ืขืœื‘ืข ืื™ืŸ ืงื™ื™ืŸ ืกื•ื•ื™ื•ื•ืข.

ืฆื• ื•ื™ืกืคืึธืจืฉืŸ ื“ื™ ืคึฟืขื™ึดืงื™ื™ื˜ืŸ ืคื•ืŸ ืงืึทื ื˜ื™ื™ื ืขืจื– ืื•ืŸ ืคืึทืจื’ืœื™ื™ึทื›ืŸ ื–ื™ื™ ืžื™ื˜ ืื ื“ืขืจืข ื•ื•ืขื’ืŸ ืฆื• ืœื•ื™ืคืŸ ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื–, ืœืึธืžื™ืจ ื–ืขืŸ ืึท ื‘ื™ื™ืฉืคึผื™ืœ ืคื•ืŸ ืกืขืจื•ื•ื™ื ื’ ืึท ืจืขืึทืงื˜ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืžื™ื˜ ืึท ื•ื•ื™ืจื˜ื•ืึทืœ ืžืึทืฉื™ืŸ ืื•ืŸ ืึท ืงืึทื ื˜ื™ื™ื ืขืจ.

โ– ืกืขืจื•ื•ื™ื ื’ ืกื˜ืึทื˜ื™ืง ื˜ืขืงืขืก ืคื•ืŸ ืึท ืจืขืึทืงื˜ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ื ื™ืฆืŸ ืึท ื•ื•ื™ืจื˜ื•ืึทืœ ืžืึทืฉื™ืŸ

ื˜ืจื™ื™ื ื’ ืฆื• ืึธืจื’ืึทื ื™ื–ื™ืจืŸ ื“ื™ ืกืขืจื•ื•ื™ืก ืคื•ืŸ ืกื˜ืึทื˜ื™ืง ื˜ืขืงืขืก ืžื™ื˜ ื•ื•ื™ืจื˜ื•ืึทืœ ืžืืฉื™ื ืขืŸ, ืžื™ืจ ื•ื•ืขืœืŸ ื˜ืจืขืคืŸ ื“ื™ ืคืืœื’ืขื ื“ืข ื“ื™ืกืึทื“ื•ื•ืึทื ื˜ื™ื“ื–ืฉื™ื–:

  1. ื‘ืึทื˜ืœืึธื ื™ืฉ ื ื•ืฆืŸ ืคื•ืŸ ืจืขืกื•ืจืกืŸ, ื•ื•ื™ื™ึทืœ ื™ืขื“ืขืจ ื•ื•ื™ืจื˜ื•ืึทืœ ืžืึทืฉื™ืŸ ืื™ื– ืึท ืคื•ืœ-ืคืœืขื“ื–ืฉื“ ืึธืคึผืขืจื™ื™ื˜ื™ื ื’ ืกื™ืกื˜ืขื.
  2. ืคึผืœืึทื˜ืคืึธืจืžืข ื“ืขืคึผืขื ื“ืขื ืกื™. ื•ื•ืึธืก ืึทืจื‘ืขื˜ ืื•ื™ืฃ ืึท ื”ื™ื’ืข ืงืึธืžืคึผื™ื•ื˜ืขืจ ืงืขืŸ ื ื™ืฉื˜ ืึทืจื‘ืขื˜ืŸ ืื•ื™ืฃ ืึท ืคึผืจืึธื“ื•ืงืฆื™ืข ืกืขืจื•ื•ืขืจ.
  3. ืคึผืึทืžืขืœืขืš ืื•ืŸ ืžื™ื˜ืœ-ืื™ื ื˜ืขื ืกื™ื•ื•ืข ืกืงื™ื™ืœื™ื ื’ ืคื•ืŸ ืึท ื•ื•ื™ืจื˜ื•ืึทืœ ืžืึทืฉื™ืŸ-ื‘ืื–ื™ืจื˜ ืœื™ื™ื–ื•ื ื’.

Kubernetes ื˜ื•ื˜ืึธืจื™ืึทืœ ื˜ื™ื™ืœ 1: ืึทืคึผืคึผืœื™ืงืึทื˜ื™ืึธื ืก, ืžื™ืงืจืึธ ื‘ืึทื“ื™ื ื•ื ื’ืก ืื•ืŸ ืงืึทื ื˜ื™ื™ื ืขืจื–
Nginx ื•ื•ืขื‘ ืกืขืจื•ื•ืขืจ ืกืขืจื•ื•ื™ื ื’ ืกื˜ืึทื˜ื™ืง ื˜ืขืงืขืก ืคืœื™ืกื ื“ื™ืง ืื•ื™ืฃ ืึท ื•ื•ื™ืจื˜ื•ืึทืœ ืžืึทืฉื™ืŸ

ืื•ื™ื‘ ืงืึทื ื˜ื™ื™ื ืขืจื– ื–ืขื ืขืŸ ื’ืขื ื™ืฆื˜ ืฆื• ืกืึธืœื•ื•ืข ืึท ืขื ืœืขืš ืคึผืจืึธื‘ืœืขื, ืื™ืŸ ืคืึทืจื’ืœื™ื™ึทืš ืžื™ื˜ ื•ื•ื™ืจื˜ื•ืึทืœ ืžืืฉื™ื ืขืŸ, ื“ื™ ืคืืœื’ืขื ื“ืข ืกื˜ืจืขื ื’ืงื˜ืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ื‘ืืžืขืจืงื˜:

  1. ืขืคืขืงื˜ื™ื•ื• ื ื•ืฆืŸ ืคื•ืŸ ืจืขืกื•ืจืกืŸ: ืืจื‘ืขื˜ืŸ ืžื™ื˜ ื“ื™ ืึธืคึผืขืจื™ื™ื˜ื™ื ื’ ืกื™ืกื˜ืขื ื ื™ืฆืŸ ื“ืึธืงืขืจ.
  2. ืคึผืœืึทื˜ืคืึธืจืžืข ืคืจื™ื™ึท. ื ืงืึทื ื˜ื™ื™ื ืขืจ ืึทื– ืึท ื“ืขื•ื•ืขืœืึธืคึผืขืจ ืงืขื ืขืŸ ืœื•ื™ืคืŸ ืื•ื™ืฃ ื–ื™ื™ืŸ ืงืึธืžืคึผื™ื•ื˜ืขืจ ื•ื•ืขื˜ ืึทืจื‘ืขื˜ืŸ ืขืจื’ืขืฅ.
  3. ืœื™ื™ื˜ื•ื•ื™ื™ื˜ ื“ื™ืคึผืœื•ื™ืžืึทื ื˜ ื“ื•ืจืš ื“ื™ ื ื•ืฆืŸ ืคื•ืŸ ื‘ื™ืœื“ ืœื™ื™ึทืขืจืก.

Kubernetes ื˜ื•ื˜ืึธืจื™ืึทืœ ื˜ื™ื™ืœ 1: ืึทืคึผืคึผืœื™ืงืึทื˜ื™ืึธื ืก, ืžื™ืงืจืึธ ื‘ืึทื“ื™ื ื•ื ื’ืก ืื•ืŸ ืงืึทื ื˜ื™ื™ื ืขืจื–
Nginx ื•ื•ืขื‘ ืกืขืจื•ื•ืขืจ ืกืขืจื•ื•ื™ื ื’ ืกื˜ืึทื˜ื™ืง ื˜ืขืงืขืก ืคืœื™ืกื ื“ื™ืง ืื™ืŸ ืึท ืงืึทื ื˜ื™ื™ื ืขืจ

ืžื™ืจ ื”ืึธื‘ืŸ ื‘ืœื•ื™ื– ืงืึทืžืคึผืขืจื“ ื•ื•ื™ืจื˜ื•ืึทืœ ืžืืฉื™ื ืขืŸ ืื•ืŸ ืงืึทื ื˜ื™ื™ื ืขืจื– ืื•ื™ืฃ ืึท ื‘ื™ืกืœ ืคื•ื ืงื˜ืŸ, ืึธื‘ืขืจ ืืคื™ืœื• ื“ืึธืก ืื™ื– ื’ืขื ื•ื’ ืฆื• ื‘ืึทืงื•ืžืขืŸ ืึท ื’ืขืคื™ืœ ืคึฟืึทืจ ื“ื™ ืกื˜ืจืขื ื’ืงื˜ืก ืคื•ืŸ ืงืึทื ื˜ื™ื™ื ืขืจื–. ื“ืึธ ืื™ืจ ืงืขื ืขืŸ ื’ืขืคึฟื™ื ืขืŸ ื“ืขื˜ืึทื™ืœืก ื•ื•ืขื’ืŸ Docker ืงืึทื ื˜ื™ื™ื ืขืจื–.

โ– ื‘ื•ื™ืขืŸ ืึท ืงืึทื ื˜ื™ื™ื ืขืจ ื‘ื™ืœื“ ืคึฟืึทืจ ืึท ืจืขืึทืงื˜ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ

ื“ื™ ื’ืจื•ื ื˜ ื‘ื ื™ืŸ ื‘ืœืึธืง ืคื•ืŸ ืึท ื“ืึธืงืงืขืจ ืงืึทื ื˜ื™ื™ื ืขืจ ืื™ื– ื“ื™ ื˜ืขืงืข Dockerfile. ืื™ืŸ ื“ื™ ืึธื ื”ื™ื™ื‘ ืคื•ืŸ ื“ืขื ื˜ืขืงืข, ืึท ืจืขืงืึธืจื“ ืื™ื– ื’ืขืžืื›ื˜ ืคื•ืŸ ื“ื™ ื‘ืึทื–ืข ื‘ื™ืœื“ ืคื•ืŸ ื“ืขื ืงืึทื ื˜ื™ื™ื ืขืจ, ื“ืขืจื ืึธืš ืขืก ืื™ื– ืึท ืกื™ืงื•ื•ืึทื ืก ืคื•ืŸ ื™ื ืกื˜ืจืึทืงืฉืึทื ื– ื•ื•ืึธืก ื™ื ื“ื™ืงื™ื™ืฅ ื•ื•ื™ ืฆื• ืฉืึทืคึฟืŸ ืึท ืงืึทื ื˜ื™ื™ื ืขืจ ื•ื•ืึธืก ื•ื•ืขื˜ ื˜ืจืขืคืŸ ื“ื™ ื‘ืื“ืขืจืคืขื ื™ืฉืŸ ืคื•ืŸ ืึท ื–ื™ื›ืขืจ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ.

ืื™ื™ื“ืขืจ ืžื™ืจ ืึธื ื”ื™ื™ื‘ืŸ ืืจื‘ืขื˜ืŸ ืžื™ื˜ ื“ื™ ื˜ืขืงืข Dockerfile, ืœืึธื–ืŸ ืื•ื ื“ื– ื’ืขื“ืขื ืงืขืŸ ื•ื•ืึธืก ืžื™ืจ ื”ืื‘ืŸ ืฆื• ืฆื•ื’ืจื™ื™ื˜ืŸ ื“ื™ ืจืขืึทืงื˜ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ื˜ืขืงืขืก ืคึฟืึทืจ ื•ืคึผืœืึธืึทื“ื™ื ื’ ืฆื• ื“ื™ Nginx ืกืขืจื•ื•ืขืจ:

  1. ื‘ื•ื™ืขืŸ ืึท ืจืขืึทืงื˜ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืคึผืขืงืœ (npm run build).
  2. ืกื˜ืึทืจื˜ื™ื ื’ ื“ื™ Nginx ืกืขืจื•ื•ืขืจ.
  3. ืงืึทืคึผื™ื™ื ื’ Directory ืื™ื ื”ืึทืœื˜ build ืคึฟื•ืŸ ืคึผืจื•ื™ืขืงื˜ ื˜ืขืงืข sa-frontend ืฆื• ื“ื™ ืกืขืจื•ื•ืขืจ ื˜ืขืงืข nginx/html.

ื•ื ื˜ืขืจ ืื™ืจ ืงืขื ืขืŸ ื–ืขืŸ ื“ื™ ืคึผืึทืจืึทืœืึทืœื– ืฆื•ื•ื™ืฉืŸ ืงืจื™ื™ื™ื˜ื™ื ื’ ืึท ืงืึทื ื˜ื™ื™ื ืขืจ ืื•ืŸ ื“ื™ ืื•ื™ื‘ืŸ ืกื˜ืขืคึผืก ื’ืขื˜ืืŸ ืื•ื™ืฃ ื“ื™ื™ืŸ ื”ื™ื’ืข ืงืึธืžืคึผื™ื•ื˜ืขืจ.

โ– ืคึผืจื™ืคึผืขืจื™ื ื’ ื“ื™ Dockerfile ืคึฟืึทืจ ื“ื™ SA-Frontend ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ

ื“ื™ ื™ื ืกื˜ืจืึทืงืฉืึทื ื– ื•ื•ืึธืก ื•ื•ืขื˜ ื–ื™ื™ืŸ ืงืึทื ื˜ื™ื™ื ื“ ืื™ืŸ Dockerfile ืคึฟืึทืจ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ SA-Frontend, ื‘ืืฉื˜ื™ื™ื˜ ืคื•ืŸ ื‘ืœื•ื™ื– ืฆื•ื•ื™ื™ ื˜ื™ืžื–. ื“ืขืจ ืคืึทืงื˜ ืื™ื– ืึทื– ื“ื™ Nginx ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ืžืึทื ืฉืึทืคึฟื˜ ื”ืื˜ ืฆื•ื’ืขื’ืจื™ื™ื˜ ืึท ื™ืงืขืจื“ื™ืง ื‘ื™ืœื“ ืคึฟืึทืจ Nginx, ื•ื•ืึธืก ืžื™ืจ ื•ื•ืขืœืŸ ื ื•ืฆืŸ ืฆื• ืฉืึทืคึฟืŸ ืื•ื ื“ื–ืขืจ ื‘ื™ืœื“. ื“ืึธืก ื–ืขื ืขืŸ ื“ื™ ืฆื•ื•ื™ื™ ืกื˜ืขืคึผืก ื•ื•ืึธืก ืžื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ื‘ืึทืฉืจื™ื™ึทื‘ืŸ:

  1. ื“ื™ ื™ืงืขืจ ืคื•ืŸ ื“ื™ ื‘ื™ืœื“ ื–ืึธืœ ื–ื™ื™ืŸ ื“ื™ Nginx ื‘ื™ืœื“.
  2. ื˜ืขืงืข ืื™ื ื”ืึทืœื˜ sa-frontend/build ื“ืึทืจืคึฟืŸ ืฆื• ื–ื™ื™ืŸ ืงืึทืคึผื™ื“ ืฆื• ื“ื™ ื‘ื™ืœื“ ื˜ืขืงืข nginx/html.

ืื•ื™ื‘ ืื™ืจ ื’ื™ื™ืŸ ืคื•ืŸ ื“ืขื ื‘ืึทืฉืจื™ื™ึทื‘ื•ื ื’ ืฆื• ื“ืขืจ ื˜ืขืงืข Dockerfile, ื“ืขืžืึธืœื˜ ืขืก ื•ื•ืขื˜ ืงื•ืงืŸ ื•ื•ื™ ื“ืึธืก:

FROM nginx
COPY build /usr/share/nginx/html

ื•ื•ื™ ืื™ืจ ืงืขื ืขืŸ ื–ืขืŸ, ืึทืœืฅ ื“ืึธ ืื™ื– ื–ื™ื™ืขืจ ืคึผืฉื•ื˜, ืื•ืŸ ื“ืขืจ ืื™ื ื”ืึทืœื˜ ืคื•ืŸ ื“ืขืจ ื˜ืขืงืข ืื™ื– ืืคื™ืœื• ื’ืึทื ืฅ ืœื™ื™ื ืขื•ื•ื“ื™ืง ืื•ืŸ ืคืึทืจืฉื˜ื™ื™ื™ืง. ื“ืขืจ ื˜ืขืงืข ื“ืขืจืฆื™ื™ืœื˜ ื“ื™ ืกื™ืกื˜ืขื ืฆื• ื ืขืžืขืŸ ื“ื™ ื‘ื™ืœื“ nginx ืžื™ื˜ ืึทืœืฅ ื•ื•ืึธืก ืื™ื– ืฉื•ื™ืŸ ืื™ืŸ ืขืก, ืื•ืŸ ื ืึธื›ืžืึทื›ืŸ ื“ื™ ืื™ื ื”ืึทืœื˜ ืคื•ืŸ ื“ื™ ื•ื•ืขื’ื•ื•ื™ื™ึทื–ืขืจ build ืฆื• ื“ืขืจ ื•ื•ืขื’ื•ื•ื™ื™ึทื–ืขืจ nginx/html.

ื“ืึธ ืื™ืจ ืงืขืŸ ื”ืึธื‘ืŸ ืึท ืงืฉื™ื ื•ื•ืขื’ืŸ ื•ื•ื™ ืื™ืš ื•ื•ื™ืกืŸ ื•ื•ื• ืคึผื•ื ืงื˜ ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืฆื™ื™ื›ืขื ืขืŸ ื˜ืขืงืขืก ืคึฟื•ืŸ ื“ืขืจ ื˜ืขืงืข build, ื“ืึธืก ื”ืฒืกื˜, ืคึฟื•ืŸ ืฐืึทื ืขืŸ ืื™ื– ื’ืขืงื•ืžืขืŸ ื“ืขืจ ืฐืขื’ /usr/share/nginx/html. ืื™ืŸ ืคืึทืงื˜, ืขืก ืื™ื– ืื•ื™ืš ื’ืึธืจื ื™ืฉื˜ ืงืึธืžืคึผืœื™ืฆื™ืจื˜ ื“ืึธ. ื“ืขืจ ืคืึทืงื˜ ืื™ื– ืึทื– ื“ื™ ื‘ืึทื˜ื™ื™ึทื˜ื™ืง ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขืคึฟื•ื ืขืŸ ืื™ืŸ ื‘ืึทืฉืจื™ื™ึทื‘ื•ื ื’ ื‘ื™ืœื“.

โ– ื‘ื•ื™ืขืŸ ื“ื™ ื‘ื™ืœื“ ืื•ืŸ ื•ืคึผืœืึธืึทื“ื™ื ื’ ืขืก ืฆื• ื“ื™ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™

ืื™ื™ื“ืขืจ ืžื™ืจ ืงืขื ืขืŸ ืึทืจื‘ืขื˜ืŸ ืžื™ื˜ ื“ื™ ืคืึทืจื˜ื™ืง ื‘ื™ืœื“, ืžื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืฉื˜ื•ืคึผืŸ ืขืก ืฆื• ื“ื™ ื‘ื™ืœื“ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™. ืฆื• ื˜ืึธืŸ ื“ืึธืก, ืžื™ืจ ื•ื•ืขืœืŸ ื ื•ืฆืŸ ื“ื™ ืคืจื™ื™ ื•ื•ืึธืœืงืŸ ื‘ื™ืœื“ ื”ืึธืกื˜ื™ื ื’ ืคึผืœืึทื˜ืคืึธืจืžืข Docker Hub. ืื™ืŸ ื“ืขื ื‘ื™ื ืข ืคื•ืŸ โ€‹โ€‹ืึทืจื‘ืขื˜ ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ื˜ืึธืŸ ื“ื™ ืคืืœื’ืขื ื“ืข:

  1. ื™ื ืกื˜ืึทืœื™ืจืŸ ื“ืึธืงืงืขืจ.
  2. ืจืขื’ื™ืกื˜ืจื™ืจืŸ ืื•ื™ืฃ ื“ื™ Docker Hub ื•ื•ืขื‘ื–ื™ื™ื˜ืœ.
  3. ืงืœืึธืฅ ืื™ืŸ ืฆื• ื“ื™ื™ืŸ ื—ืฉื‘ื•ืŸ ื“ื•ืจืš ืœื•ื™ืคืŸ ื“ื™ ืคืืœื’ืขื ื“ืข ื‘ืึทืคึฟืขืœ ืื™ืŸ ื“ื™ ื•ื•ืึธืงื–ืึทืœ:
    docker login -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD"

ืื™ืฆื˜ ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ื ื•ืฆืŸ ื“ื™ ื•ื•ืึธืงื–ืึทืœ ืฆื• ื’ื™ื™ืŸ ืฆื• ื“ื™ ื•ื•ืขื’ื•ื•ื™ื™ึทื–ืขืจ sa-frontend ืื•ืŸ ืœื•ื™ืคืŸ ื“ื™ ืคืืœื’ืขื ื“ืข ื‘ืึทืคึฟืขืœ ื“ืึธืจื˜:

docker build -f Dockerfile -t $DOCKER_USER_ID/sentiment-analysis-frontend .

ื“ื ืื•ืŸ ื•ื•ื™ื™ื˜ืขืจ ืื™ืŸ ืขื ืœื™ื›ืข ื‘ืืคืขืœืŸ $DOCKER_USER_ID ื–ืึธืœ ื–ื™ื™ืŸ ืจื™ืคึผืœื™ื™ืกื˜ ืžื™ื˜ ื“ื™ื™ืŸ Docker Hub ื ืืžืขืŸ. ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ื“ืขื ื˜ื™ื™ืœ ืคื•ืŸ ื“ื™ ื‘ืึทืคึฟืขืœ ืงืขืŸ ืงื•ืงืŸ ื•ื•ื™ ื“ืึธืก: rinormaloku/sentiment-analysis-frontend.

ืื™ืŸ ื“ืขื ืคืึทืœ, ื“ืขื ื‘ืึทืคึฟืขืœ ืงืขื ืขืŸ ื–ื™ื™ืŸ ืคืึทืจืงื™ืจืฆื˜ ื“ื•ืจืš ืจื™ืžื•ื•ื•ื™ื ื’ ืคื•ืŸ ืขืก -f Dockerfile, ื–ื™ื ื˜ ื“ื™ ื˜ืขืงืข ืื™ื– ืฉื•ื™ืŸ ืื™ืŸ ื“ืขืจ ื˜ืขืงืข ืื™ืŸ ื•ื•ืึธืก ืžื™ืจ ื“ื•ืจื›ืคื™ืจืŸ ื“ืขื ื‘ืึทืคึฟืขืœ.

ืื™ืŸ ืกื“ืจ ืฆื• ืฉื™ืงืŸ ื“ื™ ืคืึทืจื˜ื™ืง ื‘ื™ืœื“ ืฆื• ื“ื™ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™, ืžื™ืจ ื“ืึทืจืคึฟืŸ ื“ื™ ืคืืœื’ืขื ื“ืข ื‘ืึทืคึฟืขืœ:

docker push $DOCKER_USER_ID/sentiment-analysis-frontend

ื ืึธืš ืงืึทืžืคึผืœื™ื˜ื™ื ื’ ืขืก, ืงืึธื ื˜ืจืึธืœื™ืจืŸ ื“ื™ ืจืฉื™ืžื” ืคื•ืŸ ื“ื™ื™ืŸ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ื– ืื•ื™ืฃ Docker Hub ืฆื• ืคึฟืึทืจืฉื˜ื™ื™ืŸ ืฆื™ ื“ื™ ื•ืคึผืœืึธืึทื“ ืคื•ืŸ ื“ื™ ื‘ื™ืœื“ ืฆื• ื“ื™ ื•ื•ืึธืœืงืŸ ืกื˜ืึธืจื™ื“ื–ืฉ ืื™ื– ื’ืขื•ื•ืขืŸ ื’ืขืจืึธื˜ืŸ.

โ– ืœื•ื™ืคืŸ ืึท ืงืึทื ื˜ื™ื™ื ืขืจ

ืื™ืฆื˜ ื•ื•ืขืจ ืขืก ื™ื– ืงืขื ืขืŸ ืืจืืคืงืืคื™ืข ืื•ืŸ ืœื•ื™ืคืŸ ื“ื™ ื‘ื™ืœื“, ื‘ืืงืื ื˜ ื•ื•ื™ $DOCKER_USER_ID/sentiment-analysis-frontend. ืฆื• ื˜ืึธืŸ ื“ืึธืก, ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืœื•ื™ืคืŸ ื“ื™ ืคืืœื’ืขื ื“ืข ืกื™ืงื•ื•ืึทื ืก ืคื•ืŸ ืงืึทืžืึทื ื“ื–:

docker pull $DOCKER_USER_ID/sentiment-analysis-frontend
docker run -d -p 80:80 $DOCKER_USER_ID/sentiment-analysis-frontend

ืื™ืฆื˜ ื“ืขืจ ืงืึทื ื˜ื™ื™ื ืขืจ ืื™ื– ืคืœื™ืกื ื“ื™ืง, ืžื™ืจ ืงืขื ืขืŸ ืคืึธืจื–ืขืฆืŸ ืืจื‘ืขื˜ืŸ ื“ื•ืจืš ืงืจื™ื™ื™ื˜ื™ื ื’ ืื ื“ืขืจืข ื‘ื™ืœื“ืขืจ ื•ื•ืึธืก ืžื™ืจ ื“ืึทืจืคึฟืŸ. ืื‘ืขืจ ืื™ื™ื“ืขืจ ืžื™ืจ ืคืึธืจื–ืขืฆืŸ, ืœืึธื–ืŸ ืื•ื ื“ื– ืคึฟืึทืจืฉื˜ื™ื™ืŸ ื“ืขื ืคึผืœืึทืŸ 80:80, ื•ื•ืึธืก ืื™ื– ืืจื•ื™ืก ืื™ืŸ ื“ื™ ื‘ื™ืœื“ ืงืึทื˜ืขืจ ื‘ืึทืคึฟืขืœ ืื•ืŸ ืงืขืŸ ื•ื™ืกืงื•ืžืขืŸ ืงืึทื ืคื™ื•ื–ื™ื ื’.

  • ืขืจืฉื˜ืขืจ ื ื•ืžืขืจ 80 - ื“ืึธืก ืื™ื– ื“ืขืจ ื‘ืึทืœืขื‘ืึธืก ืคึผืึธืจื˜ ื ื•ืžืขืจ (ื“ืึธืก ืื™ื– ื“ื™ ื”ื™ื’ืข ืงืึธืžืคึผื™ื•ื˜ืขืจ).
  • ืฆื•ื•ื™ื™ื˜ืข ื ื•ืžืขืจ 80 ืื™ื– ื“ืขืจ ืคึผืึธืจื˜ ืคื•ืŸ ื“ืขื ืงืึทื ื˜ื™ื™ื ืขืจ ืฆื• ื•ื•ืึธืก ื“ื™ ื‘ืงืฉื” ื–ืึธืœ ื–ื™ื™ืŸ ืคืึธืจื•ื•ืขืจื“ื™ื“.

ื‘ืึทื˜ืจืึทื›ื˜ืŸ ื“ื™ ืคืืœื’ืขื ื“ืข ื’ืขืžืขืœ.

Kubernetes ื˜ื•ื˜ืึธืจื™ืึทืœ ื˜ื™ื™ืœ 1: ืึทืคึผืคึผืœื™ืงืึทื˜ื™ืึธื ืก, ืžื™ืงืจืึธ ื‘ืึทื“ื™ื ื•ื ื’ืก ืื•ืŸ ืงืึทื ื˜ื™ื™ื ืขืจื–
ืคึผืึธืจื˜ ืคืึธืจื•ื•ืขืจื“ื™ื ื’

ื“ื™ ืกื™ืกื˜ืขื ืจื™ื“ืขืจืขืงืฅ ืจื™ืงื•ื•ืขืก ืคื•ืŸ ื“ื™ ืคึผืึธืจื˜ <hostPort> ืฆื• ื“ื™ ืคึผืึธืจื˜ <containerPort>. ืึทื– ืื™ื–, ืึทืงืกืขืก ืฆื• ื“ื™ ืคึผืึธืจื˜ 80 ืงืึธืžืคึผื™ื•ื˜ืขืจ ืื™ื– ืจื™ื“ืขืจืขืงื˜ื™ื“ ืฆื• ื“ื™ ืคึผืึธืจื˜ 80 ืงืื ื˜ืขื™ื ืขืจ.

ื–ื™ื ื˜ ื“ื™ ืคึผืึธืจื˜ 80 ืขืคึฟื ื˜ ืื•ื™ืฃ ื“ื™ ื”ื™ื’ืข ืงืึธืžืคึผื™ื•ื˜ืขืจ, ืื•ืŸ ืื™ืจ ืงืขื ืขืŸ ืึทืงืกืขืก ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืคึฟื•ืŸ ื“ืขื ืงืึธืžืคึผื™ื•ื˜ืขืจ ืื™ืŸ localhost:80. ืื•ื™ื‘ ื“ื™ื™ืŸ ืกื™ืกื˜ืขื ืฉื˜ื™ืฆื˜ ื ื™ืฉื˜ ื“ืึธืงืงืขืจ, ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืงืขื ืขืŸ ื–ื™ื™ืŸ ืœื•ื™ืคืŸ ืื•ื™ืฃ ืึท ื“ืึธืงืงืขืจ ื•ื•ื™ืจื˜ื•ืึทืœ ืžืึทืฉื™ืŸ, ื“ื™ ืึทื“ืจืขืก ืคื•ืŸ ื•ื•ืึธืก ื•ื•ืขื˜ ืงื•ืงืŸ ื•ื•ื™ <docker-machine ip>:80. ืฆื• ื’ืขืคึฟื™ื ืขืŸ ื“ื™ IP ืึทื“ืจืขืก ืคื•ืŸ ื“ื™ ื“ืึธืงืงืขืจ ื•ื•ื™ืจื˜ื•ืึทืœ ืžืึทืฉื™ืŸ, ืื™ืจ ืงืขื ืขืŸ ื ื•ืฆืŸ ื“ืขื ื‘ืึทืคึฟืขืœ docker-machine ip.

ืื™ืŸ ื“ืขื ืคื•ื ื˜, ื ืึธืš ื”ืฆืœื—ื” ืœืึธื ื˜ืฉื™ื ื’ ื“ื™ ืคืจืึธื ื˜-ืกื•ืฃ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืงืึทื ื˜ื™ื™ื ืขืจ, ืื™ืจ ื–ืึธืœ ืงืขื ืขืŸ ืฆื• ืขืคึฟืขื ืขืŸ ื–ื™ื™ืŸ ื‘ืœืึทื˜ ืื™ืŸ ื“ืขื ื‘ืœืขื˜ืขืจืขืจ.

โ–ื“ื™ .dockerignore ื˜ืขืงืข

ืงืึทืœืขืงื˜ื™ื ื’ ืึท ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ื‘ื™ืœื“ SA-Frontend, ืžื™ืจ ืงืขืŸ ื‘ืึทืžืขืจืงืŸ ืึทื– ื“ืขืจ ืคึผืจืึธืฆืขืก ื˜ื•ืจื ืก ืื•ื™ืก ืฆื• ื–ื™ื™ืŸ ื’ืึธืจ ืคึผืึทืžืขืœืขืš. ื“ืึธืก ื›ืึทืคึผืึทื ื– ื•ื•ื™ื™ึทืœ ื“ื™ ื‘ื™ืœื“ ื‘ื•ื™ืขืŸ ืงืึธื ื˜ืขืงืกื˜ ืžื•ื–ืŸ ื–ื™ื™ืŸ ื’ืขืฉื™ืงื˜ ืฆื• ื“ื™ ื“ืึธืงืงืขืจ ื“ื™ื™ืžืึทืŸ. ื“ืขืจ ื•ื•ืขื’ื•ื•ื™ื™ึทื–ืขืจ ืจืขืคึผืจื™ื–ืขื ื˜ื™ื ื’ ื“ื™ ื‘ื•ื™ืขืŸ ืงืึธื ื˜ืขืงืกื˜ ืื™ื– ืกืคึผืขืกื™ืคื™ืขื“ ื•ื•ื™ ื“ื™ ืœืขืฆื˜ืข ืึทืจื’ื•ืžืขื ื˜ ืคื•ืŸ ื“ื™ ื‘ืึทืคึฟืขืœ docker build. ืื™ืŸ ืื•ื ื“ื–ืขืจ ืคืึทืœ, ืขืก ืื™ื– ืึท ืคึผื•ื ืงื˜ ืื™ืŸ ื“ื™ ืกื•ืฃ ืคื•ืŸ ื“ืขื ื‘ืึทืคึฟืขืœ. ื“ืขื ื– ื“ื™ ืคืืœื’ืขื ื“ืข ืกื˜ืจื•ืงื˜ื•ืจ ืฆื• ื–ื™ื™ืŸ ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜ ืื™ืŸ ื“ื™ ื‘ื•ื™ืขืŸ ืงืึธื ื˜ืขืงืกื˜:

sa-frontend:
|   .dockerignore
|   Dockerfile
|   package.json
|   README.md
+---build
+---node_modules
+---public
---src

ืื‘ืขืจ ืคื•ืŸ ืึทืœืข ื“ื™ ืคืึธืœื“ืขืจืก ืคืึธืจืฉื˜ืขืœืŸ ื“ืึธ, ืžื™ืจ ื ืึธืจ ื“ืึทืจืคึฟืŸ ื“ื™ ื˜ืขืงืข build. ืœืึธื•ื“ื™ื ื’ ืขืคึผืขืก ืึทื ื“ืขืจืฉ ืื™ื– ืึท ื•ื•ื™ืกื˜ ืคื•ืŸ ืฆื™ื™ื˜. ืื™ืจ ืงืขื ืขืŸ ืคืึทืจื’ื™ื›ืขืจืŸ ื“ื™ ื‘ื•ื™ืขืŸ ื“ื•ืจืš ื˜ืขืœื™ื ื’ Docker ื•ื•ืึธืก ื“ื™ื™ืจืขืงื˜ืขืจื™ื– ืฆื• ืื™ื’ื ืึธืจื™ืจืŸ. ืขืก ืื™ื– ืื™ืŸ ืกื“ืจ ืฆื• ื˜ืึธืŸ ื“ืึธืก ืึทื– ืžื™ืจ ื“ืึทืจืคึฟืŸ ื“ื™ ื˜ืขืงืข .dockerignore. ืื™ืจ, ืื•ื™ื‘ ืื™ืจ ื–ืขื ื˜ ื‘ืึทืงืึทื ื˜ ืžื™ื˜ ื“ืขืจ ื˜ืขืงืข .gitignore, ื“ื™ ืกื˜ืจื•ืงื˜ื•ืจ ืคื•ืŸ ื“ืขื ื˜ืขืงืข ื•ื•ืขื˜ ืžื™ืกื˜ืึธืžืข ื•ื™ืกืงื•ืžืขืŸ ื‘ืึทืงืึทื ื˜. ืขืก ืœื™ืกื˜ืขื“ ื“ื™ืจืขืงื˜ืขืจื™ื– ื•ื•ืึธืก ื“ื™ ื‘ื™ืœื“ ื‘ื•ื™ืขืŸ ืกื™ืกื˜ืขื ืงืขื ืขืŸ ืื™ื’ื ืึธืจื™ืจืŸ. ืื™ืŸ ืื•ื ื“ื–ืขืจ ืคืึทืœ, ื“ื™ ืื™ื ื”ืึทืœื˜ ืคื•ืŸ ื“ืขื ื˜ืขืงืข ืงื•ืงื˜ ื•ื•ื™ ื“ืึธืก:

node_modules
src
public

ื˜ืขืงืข .dockerignore ืžื•ื–ืŸ ื–ื™ื™ืŸ ืื™ืŸ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ื˜ืขืงืข ื•ื•ื™ ื“ื™ ื˜ืขืงืข Dockerfile. ืื™ืฆื˜ ื‘ื ื™ืŸ ื“ื™ ื‘ื™ืœื“ ื•ื•ืขื˜ ื ืขืžืขืŸ ืึท ืขื ื™ืŸ ืคื•ืŸ ืกืขืงื•ื ื“ืขืก.

ืœืึธืžื™ืจ ืื™ืฆื˜ ืึทืจื‘ืขื˜ืŸ ืื•ื™ืฃ ื“ื™ ื‘ื™ืœื“ ืคึฟืึทืจ ื“ื™ Java ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ.

โ– ื‘ื•ื™ืขืŸ ืึท ืงืึทื ื˜ื™ื™ื ืขืจ ื‘ื™ืœื“ ืคึฟืึทืจ ืึท Java ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ

ืื™ืจ ื•ื•ื™ืกืŸ ื•ื•ืึธืก, ืื™ืจ ื”ืึธื˜ ืฉื•ื™ืŸ ื’ืขืœืขืจื ื˜ ืึทืœืฅ ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ื•ื•ื™ืกืŸ ืฆื• ืฉืึทืคึฟืŸ ืงืึทื ื˜ื™ื™ื ืขืจ ื‘ื™ืœื“ืขืจ. ื“ืขืจืคึฟืึทืจ ื•ื•ืขื˜ ื“ืขืจ ืึธืคึผื˜ื™ื™ืœื•ื ื’ ื–ื™ื™ืŸ ื–ื™ื™ืขืจ ืงื•ืจืฅ.

ืขืคืขื ืขืŸ ื“ื™ ื˜ืขืงืข Dockerfileื•ื•ืึธืก ืื™ื– ืื™ืŸ ื“ื™ ืคึผืจื•ื™ืขืงื˜ ื˜ืขืงืข sa-webapp. ืื•ื™ื‘ ืื™ืจ ืœื™ื™ืขื ืขืŸ ื“ืขื ื˜ืขืงืกื˜ ืคื•ืŸ ื“ืขื ื˜ืขืงืข, ืื™ืจ ื•ื•ืขื˜ ื–ืขืŸ ื‘ืœื•ื™ื– ืฆื•ื•ื™ื™ ื ื™ื™ึทืข ืงืึทื ืกื˜ืจืึทืงืฉืึทื ื– ืื™ืŸ ืขืก, ืกื˜ืึทืจื˜ื™ื ื’ ืžื™ื˜ ื“ื™ ื˜ืขืจืžื™ื ืขืŸ ENV ะธ EXPOSE:

ENV SA_LOGIC_API_URL http://localhost:5000
โ€ฆ
EXPOSE 8080

ืงื™ื™ื•ื•ืึธืจื“ ENV ืึทืœืึทื•ื– ืื™ืจ ืฆื• ื“ืขืจืงืœืขืจืŸ ื™ื ื•ื•ื™ื™ืจืึทื ืžืขื ืึทืœ ื•ื•ืขืจื™ืึทื‘ืึทืœื– ืื™ืŸ ื“ืึธืงืงืขืจ ืงืึทื ื˜ื™ื™ื ืขืจื–. ืื™ืŸ ื‘ืึทื–ื•ื ื“ืขืจ, ืื™ืŸ ืื•ื ื“ื–ืขืจ ืคืึทืœ, ืขืก ืึทืœืึทื•ื– ืื™ืจ ืฆื• ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ ืึท URL ืฆื• ืึทืงืกืขืก ื“ื™ ืึทืคึผื™ ืคื•ืŸ ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ื•ื•ืึธืก ืคึผืขืจืคืึธืจืžื– ื˜ืขืงืกื˜ ืึทื ืึทืœื™ืกื™ืก.

ืงื™ื™ื•ื•ืึธืจื“ EXPOSE ืึทืœืึทื•ื– ืื™ืจ ืฆื• ื–ืึธื’ืŸ Docker ืฆื• ืขืคึฟืขื ืขืŸ ืึท ืคึผืึธืจื˜. ืžื™ืจ ื•ื•ืขืœืŸ ื ื•ืฆืŸ ื“ืขื ืคึผืึธืจื˜ ื‘ืฉืขืช ืคืœื™ืกื ื“ื™ืง ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ. ื“ืึธ ืื™ืจ ืงืขื ืขืŸ ื‘ืึทืžืขืจืงืŸ ืึทื– ืื™ืŸ Dockerfile ืคึฟืึทืจ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ SA-Frontend ืขืก ืื™ื– ื ื™ื˜ ืึทื–ืึท ื‘ืึทืคึฟืขืœ. ื“ืึธืก ืื™ื– ื‘ืœื•ื™ื– ืคึฟืึทืจ ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ ืฆื•ื•ืขืงืŸ, ืื™ืŸ ืื ื“ืขืจืข ื•ื•ืขืจื˜ืขืจ, ื“ื™ ืงืึทื ืกื˜ืจืึทืงืฉืึทืŸ ืื™ื– ื‘ื“ืขื” ืคึฟืึทืจ ื“ืขืจ ืื™ื™ื ืขืจ ื•ื•ืึธืก ื•ื•ืขื˜ ืœื™ื™ืขื ืขืŸ Dockerfile.

ื‘ื™ืœื“ื™ื ื’ ื“ื™ ื‘ื™ืœื“ ืื•ืŸ ืคึผื•ืฉื™ื ื’ ืขืก ืฆื• ื“ื™ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ ืงื•ืงื˜ ืคึผื•ื ืงื˜ ื“ื™ ื–ืขืœื‘ืข ื•ื•ื™ ืื™ืŸ ื“ื™ ืคืจื™ืขืจื“ื™ืงืข ื‘ื™ื™ึทืฉืคึผื™ืœ. ืื•ื™ื‘ ืื™ืจ ื–ืขื ื˜ ื ื™ืฉื˜ ื ืึธืš ื–ื™ื™ืขืจ ื–ื™ื›ืขืจ ืื™ืŸ ื“ื™ื™ืŸ ืึทื‘ื™ืœืึทื˜ื™ื–, ื“ื™ ืงืึธืจืึทืกืคึผืึทื ื“ื™ื ื’ ืงืึทืžืึทื ื“ื– ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขืคึฟื•ื ืขืŸ ืื™ืŸ ื“ืขืจ ื˜ืขืงืข README.md ืื™ืŸ ื˜ืขืงืข sa-webapp.

โ– ื‘ื•ื™ืขืŸ ืึท ืงืึทื ื˜ื™ื™ื ืขืจ ื‘ื™ืœื“ ืคึฟืึทืจ ืึท ืคึผื™ื˜ื”ืึธืŸ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ

ืื•ื™ื‘ ืื™ืจ ืงื•ืง ืื™ืŸ ื“ื™ ืื™ื ื”ืึทืœื˜ ืคื•ืŸ ื“ื™ ื˜ืขืงืข Dockerfile ืื™ืŸ ื˜ืขืงืข sa-logic, ื“ืขืžืึธืœื˜ ืื™ืจ ื•ื•ืขื˜ ื ื™ืฉื˜ ื’ืขืคึฟื™ื ืขืŸ ืขืคึผืขืก ื ื™ื™ึท ืคึฟืึทืจ ื–ื™ืš ื“ืึธืจื˜. ื“ื™ ืงืึทืžืึทื ื“ื– ืคึฟืึทืจ ื‘ื ื™ืŸ ื“ื™ ื‘ื™ืœื“ ืื•ืŸ ืฉื™ืงืŸ ืขืก ืฆื• ื“ื™ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ ื–ืึธืœ ืื•ื™ืš ื–ื™ื™ืŸ ื‘ืึทืงืึทื ื˜ ืฆื• ืื™ืจ, ืึธื‘ืขืจ, ื•ื•ื™ ืžื™ื˜ ืื•ื ื“ื–ืขืจ ืื ื“ืขืจืข ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื–, ื–ื™ื™ ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขืคึฟื•ื ืขืŸ ืื™ืŸ ื“ืขืจ ื˜ืขืงืข. README.md ืื™ืŸ ื˜ืขืงืข sa-logic.

โ– ื˜ืขืกื˜ื™ื ื’ ืงืึทื ื˜ืึทืžืึทื ื™ื™ื–ื“ ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื–

ืงืขื ืขืŸ ืื™ืจ ืฆื•ื˜ืจื•ื™ ืขืคึผืขืก ื•ื•ืึธืก ืื™ืจ ื”ืึธื˜ ื ื™ืฉื˜ ื˜ืขืกื˜ืขื“? ืื™ืš ืงืขืŸ ืื•ื™ืš ื ื™ืฉื˜. ื–ืืœ ืก ืคึผืจื•ื‘ื™ืจืŸ ืื•ื ื“ื–ืขืจ ืงืึทื ื˜ื™ื™ื ืขืจื–.

  1. ืœืึธืžื™ืจ ืงืึทื˜ืขืจ ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืงืึทื ื˜ื™ื™ื ืขืจ sa-logic ืื•ืŸ ืงืึทื ืคื™ื’ื™ืขืจ ืขืก ืฆื• ื”ืขืจืŸ ืื•ื™ืฃ ื“ื™ ืคึผืึธืจื˜ 5050:
    docker run -d -p 5050:5000 $DOCKER_USER_ID/sentiment-analysis-logic
  2. ืœืึธืžื™ืจ ืงืึทื˜ืขืจ ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืงืึทื ื˜ื™ื™ื ืขืจ sa-webapp ืื•ืŸ ืงืึทื ืคื™ื’ื™ืขืจ ืขืก ืฆื• ื”ืขืจืŸ ืื•ื™ืฃ ื“ื™ ืคึผืึธืจื˜ 8080. ืื™ืŸ ืึทื“ื™ืฉืึทืŸ, ืžื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืงืึทื ืคื™ื’ื™ืขืจ ื“ื™ ืคึผืึธืจื˜ ืื•ื™ืฃ ื•ื•ืึธืก ื“ื™ ืคึผื™ื˜ื”ืึธืŸ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ื•ื•ืขื˜ ื”ืขืจืŸ ืคึฟืึทืจ ืจื™ืงื•ื•ืขืก ืคื•ืŸ ื“ื™ Java ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ื“ื•ืจืš ืจื™ืึทืกื™ื™ื ื™ื ื’ ื“ื™ ืกื•ื•ื™ื•ื•ืข ื‘ื™ื™ึทื˜ืขื•ื•ื“ื™ืง. SA_LOGIC_API_URL:
    $ docker run -d -p 8080:8080 -e SA_LOGIC_API_URL='http://<container_ip or docker machine ip>:5000' $DOCKER_USER_ID/sentiment-analysis-web-app

ืฆื• ืœืขืจื ืขืŸ ื•ื•ื™ ืฆื• ื’ืขืคึฟื™ื ืขืŸ ื“ื™ IP ืึทื“ืจืขืก ืคื•ืŸ ืึท ื“ืึธืงืงืขืจ ืงืึทื ื˜ื™ื™ื ืขืจ ืึธื“ืขืจ ื•ื•ื™ืจื˜ื•ืึทืœ ืžืึทืฉื™ืŸ, ืึธืคึผืฉื™ืงืŸ ืฆื• ื“ืขืจ ื˜ืขืงืข ืจืขืึทื“ืžืข.

ืœืึธืžื™ืจ ืงืึทื˜ืขืจ ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืงืึทื ื˜ื™ื™ื ืขืจ sa-frontend:

docker run -d -p 80:80 $DOCKER_USER_ID/sentiment-analysis-frontend

ืื™ืฆื˜ ืึทืœืฅ ืื™ื– ื’ืจื™ื™ื˜ ืฆื• ื’ื™ื™ืŸ ืฆื• ื“ื™ ืึทื“ืจืขืก ืื™ืŸ ื“ืขื ื‘ืœืขื˜ืขืจืขืจ localhost:80 ืื•ืŸ ืคึผืจื•ื‘ื™ืจืŸ ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ.

ื‘ื™ื˜ืข ื˜ืึธืŸ ืึทื– ืื•ื™ื‘ ืื™ืจ ื˜ืฉื™ื™ื ื“ื–ืฉื“ ื“ื™ ืคึผืึธืจื˜ ืคึฟืึทืจ sa-webapp, ืึธื“ืขืจ ืื•ื™ื‘ ืื™ืจ ืœื•ื™ืคืŸ ืึท ื“ืึธืงืงืขืจ ื•ื•ื™ืจื˜ื•ืึทืœ ืžืึทืฉื™ืŸ, ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืจืขื“ืึทื’ื™ืจืŸ ื“ื™ ื˜ืขืงืข App.js ืคื•ืŸ ืึท ื˜ืขืงืข sa-frontendื“ื•ืจืš ื˜ืฉืึทื ื’ื™ื ื’ ื“ื™ IP ืึทื“ืจืขืก ืึธื“ืขืจ ืคึผืึธืจื˜ ื ื•ืžืขืจ ืื™ืŸ ื“ืขื ืื•ืคึฟืŸ analyzeSentence(), ืกืึทื‘ืกื˜ื™ื˜ื•ื˜ื™ื ื’ ืงืจืึทื ื˜ ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข ืึทื ืฉื˜ืึธื˜ ืคื•ืŸ ืึทื•ื˜ื“ื™ื™ื˜ื™ื“ ื“ืึทื˜ืŸ. ื ืึธืš ื“ืขื, ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืจื™ืึทืกืขืžื‘ืึทืœ ื“ื™ ื‘ื™ืœื“ ืื•ืŸ ื ื•ืฆืŸ ืขืก.

ื“ืึธืก ืื™ื– ื•ื•ืึธืก ืื•ื ื“ื–ืขืจ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ื“ื™ืึทื’ืจืึทืžืข ืงื•ืงื˜ ื•ื•ื™ ืื™ืฆื˜.

Kubernetes ื˜ื•ื˜ืึธืจื™ืึทืœ ื˜ื™ื™ืœ 1: ืึทืคึผืคึผืœื™ืงืึทื˜ื™ืึธื ืก, ืžื™ืงืจืึธ ื‘ืึทื“ื™ื ื•ื ื’ืก ืื•ืŸ ืงืึทื ื˜ื™ื™ื ืขืจื–
ืžื™ืงืจืึธืกืขืจื•ื•ื™ืกืขืก ืœื•ื™ืคืŸ ืื™ืŸ ืงืึทื ื˜ื™ื™ื ืขืจื–

ืงื™ืฆืขืจ: ื•ื•ืึธืก ื˜ืึธืŸ ืžื™ืจ ื“ืึทืจืคึฟืŸ ืึท ืงื•ื‘ืขืจื ืขื˜ืขืก ืงื ื•ื™ืœ?

ืžื™ืจ ื”ืึธื‘ืŸ ืคึผื•ื ืงื˜ ื™ื’ื–ืึทืžืึทื ื“ ื“ื™ ื˜ืขืงืขืก Dockerfile, ื’ืขืจืขื“ื˜ ื•ื•ืขื’ืŸ ื•ื•ื™ ืฆื• ื‘ื•ื™ืขืŸ ื‘ื™ืœื“ืขืจ ืื•ืŸ ืฉื˜ื•ืคึผืŸ ื–ื™ื™ ืฆื• ืึท ื“ืึธืงืงืขืจ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™. ืื™ืŸ ืึทื“ื™ืฉืึทืŸ, ืžื™ืจ ื’ืขืœืขืจื ื˜ ื•ื•ื™ ืฆื• ืคืึทืจื’ื™ื›ืขืจืŸ ื‘ื™ืœื“ ืคึฟืึทืจื–ืึทืžืœื•ื ื’ ื ื™ืฆืŸ ื“ื™ ื˜ืขืงืข .dockerignore. ื•ื•ื™ ืึท ืจืขื–ื•ืœื˜ืึทื˜, ืื•ื ื“ื–ืขืจ ืžื™ืงืจืึธ ื‘ืึทื“ื™ื ื•ื ื’ืก ืื™ืฆื˜ ืœื•ื™ืคืŸ ืื™ืŸ ื“ืึธืงืงืขืจ ืงืึทื ื˜ื™ื™ื ืขืจื–. ื“ืึธ ืื™ืจ ืงืขืŸ ื”ืึธื‘ืŸ ืึท ื’ืึธืจ ื’ืขืจืขื›ื˜ืคืืจื˜ื™ืงื˜ ืงืฉื™ื ื•ื•ืขื’ืŸ ื•ื•ืึธืก ืžื™ืจ ื“ืึทืจืคึฟืŸ Kubernetes. ื“ืขืจ ืฆื•ื•ื™ื™ื˜ืขืจ ื˜ื™ื™ืœ ืคื•ืŸ ื“ืขื ืžืึทื˜ืขืจื™ืึทืœ ื•ื•ืขื˜ ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื“ืžืขื˜ ืฆื• ืขื ื˜ืคึฟืขืจืŸ ื“ื™ ืงืฉื™ื. ืื™ืŸ ื“ืขืจ ื“ืขืจื•ื•ื™ื™ืœ, ื‘ืึทื˜ืจืึทื›ื˜ืŸ ื“ื™ ืคืืœื’ืขื ื“ืข ืงืฉื™ื:
ืœืึธืžื™ืจ ื™ื‘ืขืจื ืขืžืขืŸ ืึทื– ืื•ื ื“ื–ืขืจ ื•ื•ืขื‘ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืคึฟืึทืจ ื˜ืขืงืกื˜ ืึทื ืึทืœื™ืกื™ืก ืื™ื– ื’ืขื•ื•ืืจืŸ ื’ืœืึธื•ื‘ืึทืœื™ ืคืึธืœืงืก. ืžื™ืœื™ืื ืขืŸ ื‘ืขื˜ืŸ ืงื•ืžืขืŸ ืฆื• ืื™ื ื™ืขื“ืข ืžื™ื ื•ื˜. ื“ืขื ืžื™ื˜ืœ ืึทื– ืžื™ืงืจืึธืกืขืจื•ื•ื™ืกืขืก sa-webapp ะธ sa-logic ื•ื•ืขื˜ ื–ื™ื™ืŸ ืื•ื ื˜ืขืจ ืจื™ื–ื™ืง ืžืึทืกืข. ื•ื•ื™ ืฆื• ื•ื•ืึธื’ ืงืึทื ื˜ื™ื™ื ืขืจื– ืžื™ื˜ ืžื™ืงืจืึธ ื‘ืึทื“ื™ื ื•ื ื’ืก?

Kubernetes ื˜ื•ื˜ืึธืจื™ืึทืœ ื˜ื™ื™ืœ 1: ืึทืคึผืคึผืœื™ืงืึทื˜ื™ืึธื ืก, ืžื™ืงืจืึธ ื‘ืึทื“ื™ื ื•ื ื’ืก ืื•ืŸ ืงืึทื ื˜ื™ื™ื ืขืจื–

ืžืงื•ืจ: www.habr.com

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’