แฉแแแ แแแ แแแแ แกแแแขแแแ 90-แแแแ แฌแแแแแก แแแแแก แแแแฌแแ แ. แแแจแแ แซแแแแแ แแแแแแ แแงแ แแแแ แแฃแจแ แแแแแแแ แแแแแจแ แแแงแแแแ. แแงแ Apache แกแแ แแแ แ แแแแแแ แ แกแแแ แแ แฐแแกแขแแแแแ, แแฅแแแ แจแแแแซแแแ แจแแฎแแแแแ แแ แกแแ แแแ แแ FTP-แแก แกแแจแฃแแแแแแ แแกแแแแกแ แ แแแแก แแแฌแแ แแ ftp://ftp.example.com
. แจแแแแแ แแฅแแแ แฃแแแ แจแแแงแแแแแ แแฅแแแแ แกแแฎแแแ แแ แแแ แแแ แแ แแขแแแ แแแ แคแแแแแแ แกแแ แแแ แแ. แกแฎแแแแแกแฎแแ แแ แ แแงแ, แแแจแแ แงแแแแแคแแ แ แฃแคแ แ แแแ แขแแแ แแงแ, แแแแ แ แแฎแแ.
แแแก แจแแแแแ แแ แ แแแฌแแแฃแแแก แแแแแแแแแแแจแ แงแแแแแคแแ แ แซแแแแแ แจแแแชแแแแ. แแแแกแแแขแแแ แฃแคแ แ แ แแฃแแ แแแฎแแ; แแกแแแ แฃแแแ แจแแแแ แแแแ แฌแแ แแแแแแจแ แแแจแแแแแแแ. แแ แแ แกแแ แแแ แ แแแฎแแ แแ แแแแแ แกแแ แแแ แ, แ แแแแแแช แแฃแจแแแแก แแแขแแแ แแแแก แแแแแแกแแ แแแแก แฃแแแ แแ แแแ แกแแแแแก แแแแขแ แแแแก แกแแกแขแแแแแแก แแแแแงแแแแแ แฉแแแฃแแแแ แแแ แแแฎแแ.
แฉแแแ แแแ แแแ แแ แแแฅแขแแกแแแแก แแฅแแแแ แกแแแชแแแแฃแ แ แแแแคแแแฃแ แแชแแ. แแ แแแชแแแ, แ แแ แแญแแ แแแแแแ แกแแแขแแก แฌแแ แแแแแแจแ แแแแแแแแแแก แจแแกแแซแแแแแแแ แแฎแแแแ แแ แแ แแแฅแแแแแแแก แจแแกแ แฃแแแแแ: แแแแแก แแแฌแแ แ แคแแแแแแจแ master
GitHub-แแ. แแแ แแ แแแแกแ, แแแชแแแ, แ แแ แฉแแแ แแแขแแ แ แแแ แแแแแแแชแแแก แแฃแจแแแแแก แฃแแ แฃแแแแแกแแงแแคแแ, แแ แแแแแแแ แแแแแ แแ แฃแแแ แแแแแ แ Kubernetes แแแแกแขแแ แ, แแ แแแแแแแงแแแแแแแ Docker Swarm แขแแฅแแแแแแแ, แแ แจแแแแแแ แฉแฃแแแแแแ แกแแ แแแ แแแแก แคแแแขแ แแแแแแแ, แแแแแขแแแแ แแ แกแฎแแ แกแฎแแแแแแ. แกแแ แแฃแแแแแ. แแแแกแแแแก, แ แแ แแแแแฆแฌแแ แแแแแแก แแแฆแฌแแแ, แ แแ แแฃแจแแแแ แแแฅแกแแแแแฃแ แแ แแแแแแแแแแฃแแแงแ, แแแแญแแ แแ CI/CD-แแก แแแชแแแแ.
แแฃ แแฅแแแ แแแฅแแ แแชแแ แ แแ แแแฅแขแ (แแ แจแแแแฎแแแแแจแ, Node.js แแ แแแฅแขแ) แแ แแกแฃแ แ แแชแแแแ แ แแแแ แแแแฎแแแแแ แแ แแ แแแฅแขแแก แแแแแแแแแแก แแแขแแแแขแแแแชแแ, แแแแแแ แแฃแแแ แแแ แฌแแฃแแแแ, แ แแ แแก แ แแช แแแแฎแแแ แกแแชแแแจแ แแฃแกแขแแ แแแแฎแแแแ แแแแก, แ แแช แแฃแจแแแแก แฌแแ แแแแแแจแ, แแแจแแ แแ แคแแฅแ แแแ, แ แแ แแแแแแแขแแ แแกแแแ แแก แกแขแแขแแ.
แฌแแแแแแ แแแแแ
แแ แกแขแแขแแแก แแแแแฎแแแแก แฃแแแ แฐแฅแแแแแก แกแแแแแแกแ แแแแแแ แแ แซแแแแแแก แฎแแแแกแ แแ Bash แกแแ แแแขแแแแก แแแฌแแ แแก แจแแกแแฎแแ. แแแ แแ แแแแกแ, แแแก แแแกแญแแ แแแแ แแแแแ แแจแแแ
แแแแแแแ
แแ แแ แแแขแงแแ, แ แแ แแ แกแขแแขแแแก แฃแแแ แแแแ แจแแแซแแแแ แแฌแแแแก "แขแฃแขแแ แแแแ". แแก แฃแคแ แ แแแขแแ แแ แแก แแแแฃแแแแขแ, แ แแแแแจแแช แแ แแกแแฃแแ แแ แแแแแ, แ แแช แแแกแฌแแแแ แแ แแฆแแฌแแ แแ แแ แแชแแกแก, แ แแแแแแช แแ แแแ แแ แขแแกแขแแ แแแแกแ แแ แแแแแก แฌแแ แแแแแแจแ แแแแกแแแแแกแแแแแ, แ แแแแแแช แจแแกแ แฃแแแแฃแแแ แแ แแ แแแขแแแแขแฃแ แ แแแกแแ.
แแก แแ แแก แแก, แ แแช แฉแแแ แกแแแฃแจแแ แแ แแชแแกแ แแแกแ แฃแแแ.
แแแแแกแแแแ แ แกแแชแแแแก แคแแแแแแจแ แแแแแแแกแแแฃแแ แแแแแกแแแแก, แแแ แแ master
, แฎแแ แชแแแแแแแ แจแแแแแแ แแแฅแแแแแแแแ:
- Travis CI-แแ แแแแแฃแแ แแ แแแฅแขแ แแฌแงแแแ.
- แจแแกแ แฃแแแแฃแแแ แงแแแแ แแ แแแฃแแ, แแแขแแแ แแชแแ แแ แแแแแแแ แแแแแแแ แขแแกแขแ.
แแฎแแแแ แแแแแกแแแแก, แ แแแแแแช แจแแแแก master
, แจแแกแ แฃแแแแฃแแแ แจแแแแแแ:
- แงแแแแแคแแ แ แแแแแ แแแฎแกแแแแแ, แแแฃแก...
- แแแแแ แแก แกแฃแ แแแแก แจแแฅแแแ แแแแแแแแ แ แแแแแ, แแแ แแแแขแ แแแแ แแ แแแ แแแแแ แแแงแ แแแแแแ.
- แกแฃแ แแแแก แแแแแแแแแ Docker Hub-แแ.
- แแแแจแแ แ แฌแแ แแแแแแก แกแแ แแแ แแแ.
- แกแฃแ แแแแก แแขแแแ แแแ Docker Hub-แแแ แกแแ แแแ แแ.
- แแแแแแแแ แ แแแแขแแแแแ แแก แแแฉแแ แแแ แแ แแฎแแแ แกแฃแ แแแแก แกแแคแฃแซแแแแแ แแฎแแแก แแแฌแงแแแ.
แแฃ แแฅแแแ แแแกแแแฃแขแฃแ แแ แแ แแคแแ แ แแชแแ Docker-แแก, แกแฃแ แแแแแแกแ แแ แแแแขแแแแแ แแแแก แจแแกแแฎแแ, แแ แแแแ แแแฃแแแ. แงแแแแแคแแ แก แแแแแงแแแแ.
แ แ แแ แแก CI/CD?
แแแ แแแแแขแฃแ แ CI/CD แแแจแแแแก "แฃแฌแงแแแขแ แแแขแแแ แแชแแ/แฃแฌแงแแแขแ แแแแแแแแแ".
โ แฃแฌแงแแแขแ แแแขแแแ แแชแแ
แฃแฌแงแแแขแ แแแขแแแ แแชแแ แแ แแก แแ แแชแแกแ, แ แแแแแก แแ แแกแแช แแแแแแแแแ แแแ แแฆแแแแ แแแแแแแฃแแแแแแก แแ แแแฅแขแแก แซแแ แแแแแ แแแแแก แกแแชแแแแแ (แฉแแแฃแแแแ แแ แคแแแแแแแแ) master
). แแแแแแ แแฃแแแ, แแแแแก แฎแแ แแกแฎแ แฃแแ แฃแแแแแงแแคแแแแ แแแขแแแแขแฃแ แ แขแแกแขแแ แแแแก แแแแ.
โ แฃแฌแงแแแขแ แแแแแแแแแ
แฃแฌแงแแแขแ แแแแแแแแแ แแ แแก แแแแแก แฎแจแแ แ, แแแขแแแแขแฃแ แ แแแแแแแแแ แฌแแ แแแแแแจแ. CI/CD แแแ แแแแแแก แแแแ แ แแแฌแแแ แแแแฏแแ แแฌแแ แแแ แ แแแแ แช โแฃแฌแงแแแขแ แแแฌแแแแแโ. แแก แซแแ แแแแแแ แแแแแแ, แ แแช โแฃแฌแงแแแขแ แแแแแแแแแโ, แแแแ แแ โแฃแฌแงแแแขแ แแแฌแแแแแโ แแฃแแแกแฎแแแแก แชแแแแแแแแแแก แฎแแแแ แแแแแกแขแฃแ แแแแก แแฃแชแแแแแแแแแก แแ แแแฅแขแแก แแแแแแแแแแก แแ แแชแแกแแก แแแฌแงแแแแแแ.
แแแชแแแแแแ
แแแแแแแชแแแก, แ แแแแแกแแช แแแงแแแแแแ แแ แงแแแแแคแ แแก แจแแกแแกแฌแแแแแ, แฐแฅแแแ
แฉแแแก แจแแแแฎแแแแแจแ, แแแแแแแชแแ แแ แแก Express แกแแ แแแ แ, แ แแแแแแช แแฃแจแแแแก Node.js แแแ แแแแจแ, แแแกแแฎแฃแ แแแ แแ แแแแแ แแแแ React แแแแแแแชแแแก แแ แแฎแแ แก แฃแญแแ แก แฃแกแแคแ แแฎแ แกแแ แแแ แแก API-แก. แแก แแ แฅแแขแแฅแขแฃแ แ แแแฐแงแแแแ แกแขแ แแขแแแแแก, แ แแแแแแช แแแฎแแแแแ
แแแแแแ แแ แแแแกแฃแแขแแชแแ
docker
Docker แแ แแก แแแกแขแ แฃแแแแขแ, แ แแแแแแช แแแแขแแแแแ แแแแชแแแก แขแแฅแแแแแแแแก แฌแงแแแแแแ, แกแแจแฃแแแแแแก แแซแแแแก แแแแแแแชแแแแก แแแแแแแ แแแแแฌแแแแแก, แแแแแแแแแก แแ แแแฃแจแแแก แแแแแ แแแ แแแแจแ, แแแจแแแแช แแ, แแฃ แแแแแ Docker แแแแขแคแแ แแ แแฃแจแแแแก แกแฎแแแแแกแฎแแ แแแ แแแแจแ. แแแ แแแ แ แแแจแ, แแ แแญแแ แแแแแแ Docker แแ แซแแแแแแก แฎแแแแก แฎแแแกแแฌแงแแแแแก (CLI) แฎแแแจแ แฉแแแแแแ.
Docker Hub แแแแฎแแแแแแ แแแแแแ, แ แแช
แแกแ แ แแ, แแแแกแแแแแก, แ แแ แแแแฌแงแแ Docker, แแฅแแแ แฃแแแ แแแแแแแแ แแ แ แ แแ:
- แฃแชแแแแแ
แแแแแ แแก แกแแแฃแจแแ แแแแแแ . - แแแ แแแแกแขแ แแ แแแ
แแแแแ แแก แชแแแขแ แ .
แแแแก แจแแแแแ แจแแแแซแแแแ แจแแแแแฌแแแ แแฃแจแแแแก แแฃ แแ แ Docker CLI แจแแแแแแ แแ แซแแแแแแก แแแจแแแแแ Docker แแแ แกแแแก แจแแกแแแแฌแแแแแแ:
docker -v
แจแแแแแแ, แจแแแแ Docker Hub-แจแ แแฅแแแแ แแแแฎแแแ แแแแแก แกแแฎแแแแกแ แแ แแแ แแแแก แจแแงแแแแแ, แ แแแแกแแช แแแแแฎแแแ:
docker login
แแแแแ แแก แแแแแกแแงแแแแแแแ, แแฅแแแ แฃแแแ แแแกแแแแแ แกแฃแ แแแแแแก แแ แแแแขแแแแแ แแแแก แชแแแแแแ.
โ แกแฃแ แแแแแ
แกแฃแ แแแ แแ แแก แ แแฆแแช แแแแแแก แแกแแแแกแ, แ แแแแแแช แจแแแชแแแก แแแกแขแ แฃแฅแชแแแแก แแแแขแแแแแ แแก แแฌแงแแแแกแแแแก. แแก แแ แแก แแแแแแแชแแแก แคแแแแฃแ แ แกแแกแขแแแแก แแ แแแ แแแแขแ แแแแก แฃแชแแแแแ แกแฃแ แแแ. แแแแแแแแแ แแแก แแแ แขแแแแ แจแแฃแซแแแแ แกแฃแ แแแแแแก แแแแแแ แแแ.
# ะัะฒะพะด ัะฒะตะดะตะฝะธะน ะพะฑะพ ะฒัะตั
ะพะฑัะฐะทะฐั
docker images
แแก แแ แซแแแแแ แแแแแกแชแแแก แชแฎแ แแแก แจแแแแแแ แกแแแแฃแ แแ:
REPOSITORY TAG IMAGE ID CREATED SIZE
---
แจแแแแแ แแแแแแฎแแแแแ แแ แซแแแแแแแแก แ แแแแแแแแ แแแแแแแแก แแแแแ แคแแ แแแขแจแ - แฏแแ แแ แแก แแ แซแแแแแ แแแแแแขแแ แแ, แจแแแแแ แแ แแแแแแแแ แแแแกแ, แแฃ แ แแกแ แแแแแขแแแ แจแแฃแซแแแ.
โแแแแขแแแแแ แแแ
แแแแขแแแแแ แ แแ แแก แจแแกแ แฃแแแแแแ แแแแแขแ, แ แแแแแแช แจแแแชแแแก แงแแแแแคแแ แก, แ แแช แกแแญแแ แแ แแแแแแแชแแแก แแแกแแจแแแแแ. แแ แแแแแแแแก แแฅแแแ แแแแแแแชแแ แงแแแแแแแแก แแ แแแแแ แแ แแแฃแจแแแแแก, แแแคแ แแกแขแ แฃแฅแขแฃแ แแก แแแฃแฎแแแแแแ: แแแแแแ แแแฃแ แแแ แแแแจแ แแ แแแแแ แแแ แแแแจแ. แกแแฅแแ แแแแจแแ, แ แแ แแ แแ แแ แแแแแ แกแฃแ แแแแก แแแกแขแแแชแแแแ แแแจแแแแฃแแแ แกแฎแแแแแกแฎแแ แแแ แแแแจแ.
# ะะตัะตัะธัะปะตะฝะธะต ะฒัะตั
ะบะพะฝัะตะนะฝะตัะพะฒ
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
---
โ แขแแแแแ
แขแแแ แแ แแก แกแฃแ แแแแก แแแแแ แแขแฃแแ แแแ แกแแแก แแแแแแแแ.
โ Docker แแ แซแแแแแแแแก แกแฌแ แแคแ แแแแแแแแ
แแฅ แแแชแแแฃแแแ แ แแแแแแแแ แฎแจแแ แแ แแแแแงแแแแแฃแแ Docker แแ แซแแแแแแก แแแแแฎแแแแ.
แแฃแแแ
แแแแขแแฅแกแขแ
แแคแแฅแขแ
แแแแแกแแฎแฃแแแแ
แกแฃแ แแแแก แแแแแ Dockerfile-แแแ
แแแแแกแแฎแฃแแแแ
แกแฃแ แแแแก แแแแแจแแแ
แแแแแกแแฎแฃแแแแ
แกแฃแ แแแแแแก แฉแแแแแแแแแแ
แแแแขแแแแแ แ
แแแแขแแแแแ แแก แแแจแแแแ แแแแแกแแฎแฃแแแแแก แกแแคแฃแซแแแแแ
แแแแแกแแฎแฃแแแแ
แกแฃแ แแแแก แแขแแแ แแแ แ แแแกแขแ แจแ
แแแแแกแแฎแฃแแแแ
แกแฃแ แแแแก แฉแแขแแแ แแแ แ แแแกแขแ แแแแ
แแแแขแแแแแ แ
แแแแขแแแแแ แแแแก แฉแแแแแแแแแแ
แกแฃแ แแแ/แแแแขแแแแแ แ
แแแแแฃแงแแแแแแแ แแแแขแแแแแ แแแแก แแ แกแฃแ แแแแแแก แแแแฆแแแ
โแแแแแ แคแแแแ
แแ แแแชแ, แ แแแแ แแแแฃแจแแ แกแแฌแแ แแแ แแแแแแแชแแ แแแแแแแแ แแแแ. แแ แแแฅแแก Webpack แแแแคแแแฃแ แแชแแ, แ แแแแแแช แจแแฅแแแแแแ แแแ React แแแแแแแชแแแก แจแแกแแฅแแแแแแ. แจแแแแแแ, แแ แแแฅแแก แแ แซแแแแแ, แ แแแแแแช แแฌแงแแแก Node.js-แแ แแแคแฃแซแแแแฃแ แกแแ แแแ แก แแแ แขแแ 5000
. แแก แแกแ แแแแแแงแฃแ แแแ:
npm i # ัััะฐะฝะพะฒะบะฐ ะทะฐะฒะธัะธะผะพััะตะน
npm run build # ัะฑะพัะบะฐ React-ะฟัะธะปะพะถะตะฝะธั
npm run start # ะทะฐะฟััะบ Node-ัะตัะฒะตัะฐ
แฃแแแ แแฆแแแแจแแแก, แ แแ แแ แแแกแแแแก แกแแแแแแแแแ แแแแแชแฎแแแ แแ แแแฅแแก. แแแแ แแ แแฅ, แแฅแกแแแ แแแแแขแแแแกแแแแก, แแแแแกแแแแ แ แแแ แขแแแ Node แแแแแแแชแแ แแแแแแแแแก.
แแแแขแแแแแ แแก แแแแแกแแงแแแแแแแ, แแฅแแแ แฃแแแ แแแแฌแแแแ แแแกแขแ แฃแฅแชแแแแ Docker-แก. แแก แแแแแแแ แคแแแแแก แแแจแแแแแแ, แ แแแแแกแแช แ.แฌ Dockerfile
, แแแแแแ แแแแก แแ แแแฅแขแแก root แแแ แแฅแขแแ แแแจแ. แแก แคแแแแ, แแแแแแแแ แแแแแ, แกแแแแแแ แแแฃแแแแแ แ แฉแแแก.
แแแแ แแ แแก, แ แแช แแแก แจแแแชแแแก, แแฎแแแแ แแฆแฌแแ แก, แกแแแชแแแแฃแ แ แแ แซแแแแแแแแ, แกแแแฃแจแแ แแแ แแแแก แจแแฅแแแแก แแกแแแแกแก. แแฅ แแ แแก แ แแแแแแแแ แแ แซแแแแแ:
FROM โ แแก แแ แซแแแแแ แแฌแงแแแก แคแแแแก. แแแ แแแแกแแแฆแแ แแแก แกแแแแแแกแ แกแฃแ แแแก, แ แแแแแแแแแช แแแแแฃแแแ แแแแขแแแแแ แ.แแแแแ แแแ โ แคแแแแแแแก แแแแแ แแแ แแแแแแแแ แแแ แฌแงแแ แแแแ แแแแขแแแแแ แจแ.WORKDIR โ แกแแแฃแจแแ แแแ แแฅแขแแ แแแก แแแงแแแแแ แจแแแแแแ แแ แซแแแแแแแแกแแแแก.RUN - แแแฃแจแแแ แแ แซแแแแแแแ.แแแแแแจแแแ แแแแแ - แแแ แขแแก แแแ แแแแขแ แแแ.แฒจแฒแฒกแฒแฒแฒแฒก แฒฌแฒแฒ แฒขแฒแฒแฒ โ แแฆแกแแกแ แฃแแแแแแ แแ แซแแแแแแก แแแแแแแแ.
Dockerfile
แจแแแซแแแแ แแกแ แแแแแแงแฃแ แแแแแแก:
# ะะฐะณััะทะธัั ะฑะฐะทะพะฒัะน ะพะฑัะฐะท
FROM node:12-alpine
# ะกะบะพะฟะธัะพะฒะฐัั ัะฐะนะปั ะธะท ัะตะบััะตะน ะดะธัะตะบัะพัะธะธ ะฒ ะดะธัะตะบัะพัะธั app/
COPY . app/
# ะัะฟะพะปัะทะพะฒะฐัั app/ ะฒ ัะพะปะธ ัะฐะฑะพัะตะน ะดะธัะตะบัะพัะธะธ
WORKDIR app/
# ะฃััะฐะฝะพะฒะธัั ะทะฐะฒะธัะธะผะพััะธ (ะบะพะผะฐะฝะดะฐ npm ci ะฟะพั
ะพะถะฐ npm i, ะฝะพ ะธัะฟะพะปัะทัะตััั ะดะปั ะฐะฒัะพะผะฐัะธะทะธัะพะฒะฐะฝะฝัั
ัะฑะพัะพะบ)
RUN npm ci --only-production
# ะกะพะฑัะฐัั ะบะปะธะตะฝััะบะพะต React-ะฟัะธะปะพะถะตะฝะธะต ะดะปั ะฟัะพะดะฐะบัะฝะฐ
RUN npm run build
# ะัะพัะปััะธะฒะฐัั ัะบะฐะทะฐะฝะฝัะน ะฟะพัั
EXPOSE 5000
# ะะฐะฟัััะธัั Node-ัะตัะฒะตั
ENTRYPOINT npm run start
แแฅแแแ แแแแ แแ แฉแแฃแแ แกแแแแแแกแ แกแฃแ แแแแแแ แแแแแแแแแแ แ, แจแแแซแแแแ แแแแญแแ แแแ แแแแแขแแแแแ แแแแแแแแแแฃแแแแแแแก แแแงแแแแแ. แคแแฅแขแแ, แ แแ แแแแแแ แแ แซแแ แแแแแ แกแฃแ แแแ (แ แแแแ แแชแแ Node Alpine Linux) แแฅแแแแแ แแ แแแแแแ, แ แแ แแกแแแ แแแฅแกแแแแแฃแ แแ แแแแแแฅแขแฃแ แ แแงแแก. แจแแแแแแ, แแแ แจแแแซแแแแ แแ แฐแฅแแแแแ แแแแแแ แแ แแ แแแ แแแ, แ แแแแแกแแช แแฅแแแ แแแแแแ.
โแแแแขแแแแแ แแก แแแแแ, แแแแแจแแแ แแ แแแจแแแแ
แแแแขแแแแแ แแก แแแแแแฃแ แ แแฌแงแแแ แแ แแแจแแแแ แฎแแแแ แแแก แจแแแแแ, แ แแช แแแแฅแแก Dockerfile
, แแแแชแแแแแ แกแแแแแแ แแแ แขแแแแ. แกแแแแ แกแฃแ แแแก Docker Hub-แแ แแแแแแงแแแแแ, แแฅแแแ แฃแแแ แจแแแแแฌแแแ แแแ แแแแแแแแ แแแแ.
โแจแแแ แแแ
แฏแแ แฃแแแ แจแแแแ แแแแ latest
).
# ะกะฑะพัะบะฐ ะพะฑัะฐะทะฐ
docker build -t <image>:<tag> .
แแ แแ แซแแแแแแก แแแจแแแแแก แจแแแแแ, แจแแแแซแแแแ แฃแงแฃแ แแ Docker-แแก แกแฃแ แแแก.
Sending build context to Docker daemon 2.88MB
Step 1/9 : FROM node:12-alpine
---> ...ะฒัะฟะพะปะฝะตะฝะธะต ััะฐะฟะพะฒ ัะฑะพัะบะธ...
Successfully built 123456789123
Successfully tagged <image>:<tag>
แแจแแแแแแแแแก แจแแแซแแแแ แ แแแแแแแแ แฌแฃแแ แแแกแญแแ แแแก - แแก แงแแแแแคแแ แ แแแแแแแแแแฃแแแ แแแแแ, แแฃ แ แแแแแแ แแแแแแแแแแฃแแแแ แแแฅแแ. แแจแแแแแแแแแก แแแกแ แฃแแแแแก แจแแแแแ, แจแแแแซแแแแ แแแฃแจแแแ แแ แซแแแแแ docker images
แแ แจแแฎแแแแ แแฅแแแแ แแฎแแแ แกแฃแ แแแแก แแฆแฌแแ แแก.
REPOSITORY TAG IMAGE ID CREATED SIZE
<image> latest 123456789123 About a minute ago x.xxGB
โแแแจแแแแ
แกแฃแ แแแ แจแแฅแแแแแแ. แแก แแแจแแแแก, แ แแ แแแกแแ แแแคแฃแซแแแแฃแแ แแแแขแแแแแ แแก แแแจแแแแ แจแแแแซแแแแ. แแแแขแแ, แ แแ แแกแฃแ แก แจแแแแซแแแก แฌแแแแแ แแแแขแแแแแ แจแ แแแจแแแแฃแ แแแแแแแชแแแแ localhost:5000
แแ, แฌแงแแแแแก แแแ แชแฎแแแ แแฎแแ แแก 5000:5000
แจแแแแแ แแแแแกแขแแแแ แแแฃแ แแ แซแแแแแแจแ 5000
. แแแ แฏแแแแ แแฎแแ แแก แแ แแก แแแแขแแแแแ แแก แแแ แขแ.
# ะะฐะฟััะบ ั ะธัะฟะพะปัะทะพะฒะฐะฝะธะตะผ ะปะพะบะฐะปัะฝะพะณะพ ะฟะพััะฐ 5000 ะธ ะฟะพััะฐ ะบะพะฝัะตะนะฝะตัะฐ 5000
docker run -p 5000:5000 <image>:<tag>
แแฎแแ, แ แแแแกแแช แแแแขแแแแแ แ แจแแแฅแแแ แแ แแฃแจแแแแก, แจแแแแซแแแแ แแแแแแงแแแแ แแ แซแแแแแ docker ps
แแแแแแแแแแ แแ แแแคแแ แแแชแแ แแ แแแแขแแแแแ แแก แจแแกแแฎแแ (แแ แจแแแแซแแแแ แแแแแแงแแแแ แแ แซแแแแแ docker ps -a
, แ แแแแแแช แแฉแแแแแแก แแแคแแ แแแชแแแก แงแแแแ แแแแขแแแแแ แแ แแ แแ แ แแฎแแแแ แแแจแแแแฃแแแ).
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
987654321234 <image> "/bin/sh -c 'npm runโฆ" 6 seconds ago Up 6 seconds 0.0.0.0:5000->5000/tcp stoic_darwin
แแฃ แแฎแแ แแแแแแแ แแแกแแแแ แแแ localhost:5000
โ แจแแแแซแแแแ แแแฎแแ แแแจแแแแฃแแ แแแแแแแชแแแก แแแแ แแ, แ แแแแแแช แแฃแกแขแแ แแกแ แแแแแแงแฃแ แแแ, แ แแแแ แช แกแแฌแแ แแแ แแแ แแแแจแ แแแจแแแแฃแแ แแแแแแแชแแแก แแแแ แแ.
โ แแแแแจแแแ แแ แแแแแฅแแแงแแแแ
แแแแกแแแแแก, แ แแ แแแแแแแงแแแแ แแ แ-แแ แแ แจแแฅแแแแแ แกแฃแ แแแ แฌแแ แแแแแแก แกแแ แแแ แแ, แฉแแแ แฃแแแ แจแแแซแแแ แแ แกแฃแ แแแแก แฉแแแแขแแแ แแแ Docker Hub-แแแ. แแก แแแจแแแแก, แ แแ แแฅแแแ แฏแแ แฃแแแ แจแแฅแแแแ แกแแชแแแ แแ แแแฅแขแแกแแแแก Docker Hub-แแ. แแแแก แจแแแแแ แแแแฅแแแแ แแแแแแ, แกแแแแช แจแแแแแซแแแ แแแแแแแแแแแแแ แกแฃแ แแแ. แกแฃแ แแแก แฃแแแ แแแแ แฅแแแก แกแแฎแแแ แแกแ, แ แแ แแแกแ แกแแฎแแแ แแแแฌแงแแก แฉแแแแ Docker Hub แแแแฎแแแ แแแแแก แกแแฎแแแแ. แแแแก แฃแแแ แแแฐแงแแแก แกแแชแแแแก แกแแฎแแแ. แแแแแกแแแแ แ แขแแแ แจแแแซแแแแ แแแแแแแกแแแก แกแแฎแแแแก แแแแแก. แฅแแแแแ แแแชแแแฃแแแ แแ แกแฅแแแแก แแแแแงแแแแแแ แกแฃแ แแแแแแก แแแกแแฎแแแแแแก แแแแแแแแ.
แแฎแแ แแฅแแแ แจแแแแซแแแแ แจแแฅแแแแ แกแฃแ แแแ แแฎแแแ แกแแฎแแแแ แแ แแแฃแจแแแ แแ แซแแแแแ docker push
Docker Hub-แแก แกแแชแแแจแ แแแแแกแแขแแแแ.
docker build -t <username>/<repository>:<tag> .
docker tag <username>/<repository>:<tag> <username>/<repository>:latest
docker push <username>/<repository>:<tag>
# ะะฐ ะฟัะฐะบัะธะบะต ััะพ ะผะพะถะตั ะฒัะณะปัะดะตัั, ะฝะฐะฟัะธะผะตั, ัะฐะบ:
docker build -t user/app:v1.0.0 .
docker tag user/app:v1.0.0 user/app:latest
docker push user/app:v1.0.0
แแฃ แงแแแแแคแแ แ แแแ แแแ แฌแแแ, แกแฃแ แแแ แฎแแแแแกแแฌแแแแแ แแฅแแแแ Docker Hub-แแ แแ แแแกแ แแแ แขแแแแ แแขแแแ แแแ แกแแ แแแ แแ แแ แกแฎแแ แแแแแแแแแ แแแแ แแแแแขแแแ แแฅแแแแ แจแแกแแซแแแแแแ.
แจแแแแแแ แแแแแฏแแแ
แแ แแ แแแกแแแแก แฉแแแ แแแแแแแกแขแฃแ แแ, แ แแ แแแแแแแชแแ, Docker แแแแขแแแแแ แแก แกแแฎแแ, แแฃแจแแแแก แแแแแแแแ แแแแ. แฉแแแ แแแขแแแ แแแ แแแแขแแแแแ แ Docker Hub-แจแ. แแก แงแแแแแคแแ แ แแแจแแแแก, แ แแ แฉแแแ แฃแแแ แซแแแแแ แแแ แแ แฌแแแกแแแ แแแแฅแแก แฉแแแแ แแแแแแกแแแ. แแฎแแ แฉแแแ แฃแแแ แแแแแแฌแงแแแขแแ แแแแแ แแ แ โโแแแแฎแแ:
- CI แแแกแขแ แฃแแแแขแแก แแแงแแแแแ แแแแแก แขแแกแขแแ แแแแกแ แแ แแแแแแแแแแกแแแแก.
- แฌแแ แแแแแแก แกแแ แแแ แแก แแแงแแแแแ แแกแ, แ แแ แแแ แจแแซแแแก แฉแแแแ แแแแแก แฉแแแแขแแแ แแแ แแ แแแจแแแแ.
แฉแแแแก แจแแแแฎแแแแแจแ, แฉแแแ แแแงแแแแแ
แฃแแแ แแฆแแแแจแแแก, แ แแ แแฅ แจแแแแซแแแแ แแกแแ แแแแแแ แกแแ แแแกแแแแก แกแฎแแ แแแแแแแแชแแแ. แแแแแแแแแ, Travis CI-แแก แแแชแแแแ, แจแแแแซแแแแ แแแแแแงแแแแ CircleCI แแ Github Actions. แแ แแแชแแแแ DigitalOcean - AWS แแ Linode.
แฉแแแ แแแแแแฌแงแแแขแแ แแฃแจแแแแ Travis CI-แแแ แแ แแ แฃแแแ แแแฅแแก แ แแฆแแช แแแแคแแแฃแ แแ แแแฃแแ แแ แกแแ แแแกแจแ. แแแแขแแ, แแฎแแ แแแแแแ แแแกแแฃแแ แแ แแแแแ, แแฃ แ แแแแ แแแแแแแแแแ แแแ แกแแแฃแจแแแ.
แขแ แแแแก CI
Travis CI แแ แแก แแแแแก แขแแกแขแแ แแแแกแ แแ แแแแแแแแแแก แแแกแขแ แฃแแแแขแ. แแ แแ แแกแฃแ แก Travis CI-แแก แแแงแแแแแแก แกแแ แแฃแแแแแจแ แจแแแแกแแแ, แ แแแแแ แแแแแแฃแแ แแ แแแฅแขแ แฃแแแแแแฃแ แแ แแ แแก แแแ แกแแ แแแแแแก แแ แแแแขแแแก. แแแแ แแ แแ แแแแแจแฃแฅแแ แกแแคแฃแซแแแแแก, แ แแ แแแแฌแงแแ, แแฃ แแแแแฌแงแแแขแ แแแแแแงแแแแ Travis CI. แแแ แฉแแแ แแฃ แแ แ Travis CI-แก, CircleCI-แก, Jenkins-แก แแฃ แกแฎแแ แ แแแแก, แแกแแแแกแ แแแแคแแแฃแ แแชแแแก แแแแแแแแ แงแแแแแแ แแฅแแแแ แแแแแงแแแแแฃแแ.
Travis CI-แแก แแแกแแฌแงแแแแ แแแแแแแ
แงแแแแ แฏแแ แแ Travis CI-แแก แแแจแแแแแกแแก, แกแแ แแแ แ แแฎแกแแแแ, แ แแแแแแช แแกแ แฃแแแแก แแแแคแแแฃแ แแชแแแก แคแแแแจแ แแแแแแแแฃแ แแ แซแแแแแแแก, แแแ แจแแ แแก แจแแกแแแแแแกแ แกแแชแแแแก แคแแแแแแแแแก แแแแแแแแแแก.
โแกแแแฃแจแแ แชแฎแแแ แแแแก แชแแแแ
แแแแแแซแแฎแ Travis CI แแแแคแแแฃแ แแชแแแก แคแแแแ .travis.yml
แแ แแแแฎแแแ แแ แแแฅแขแแก root แแแ แแฅแขแแ แแแจแ, แแฎแแ แก แฃแญแแ แก แแแแแแแแแแก แแแแชแแคแชแแแก
apt addons
cache components
before_install
install
before_script
script
before_cache
after_success ะธะปะธ after_failure
before_deploy
deploy
after_deploy
after_script
โ แขแแกแขแแ แแแ
แแแแคแแแฃแ แแชแแแก แคแแแแจแ แแแแแ แแ แแแแแแแแ แแแ Travis CI แกแแ แแแ แแก แแแแคแแแฃแ แแชแแแก. แแ แแแแ แฉแแ Node 12 แแแแ แแ แแฃแแฎแแ แ แกแแกแขแแแแก, แแแแงแแแแแแแ Docker-แแก แแแแแกแแงแแแแแแแ แกแแญแแ แ แแแแแแแแแแฃแแแแแแ.
แงแแแแแคแแ แ แ แแช แฉแแแแแแแแแแ .travis.yml
, แจแแกแ แฃแแแแแ, แ แแแแกแแช แงแแแแ pull แแแแฎแแแแ แแแแฎแแ แชแแแแแแแ แกแแชแแแแก แงแแแแ แคแแแแแแจแ, แแฃ แกแฎแแ แ แแ แแ แแ แแก แแแแแแแแฃแแ. แแก แแ แแก แกแแกแแ แแแแแ แคแฃแแฅแชแแ, แ แแแแแ แแก แแแจแแแแก, แ แแ แฉแแแ แจแแแแแซแแแ แจแแแแแแฌแแแ แงแแแแ แแแแ, แ แแแแแแช แจแแแแก แกแแชแแแจแ. แแก แแแชแแแแแแ, แแ แแก แแฃ แแ แ แแแแ แแแแ แคแแแแแแจแ แฉแแกแแฌแแ แแ. master
แแ แแแแ แฆแแแแก แแฃ แแ แ แแก แแ แแแฅแขแแก แแจแแแแแแแแแก แแ แแชแแกแก. แแ แแแแแแแฃแ แแแแคแแแฃแ แแชแแแจแ แแ แงแแแแแคแแ แก แแแแแกแขแแแแ แแ แแแแแแแแ แแแแ, แแแแ แแแ Webpack dev แกแแ แแแ แก แคแแแแ (แแก แแ แแก แฉแแแ แกแแแฃแจแแ แแ แแชแแกแแก แแแฎแแกแแแแแแแแ) แแ แแแฌแแ แแแแ แขแแกแขแแแก.
แแฃ แแกแฃแ แ, แ แแ แแฅแแแแก แกแแชแแแจแ แแแแแฉแแแแก แกแแแแแ แแ แแแจแแแแ, แ แแแแแแแช แแแฃแแแแแแก แขแแกแขแแก แแแคแแ แแแก แจแแกแแฎแแ,
แแกแ แ แแ, แแฅ แแ แแก แคแแแแแก แจแแแแแ แกแ .travis.yml
:
# ะฃััะฐะฝะพะฒะธัั ัะทัะบ
language: node_js
# ะฃััะฐะฝะพะฒะธัั ะฒะตััะธั Node.js
node_js:
- '12'
services:
# ะัะฟะพะปัะทะพะฒะฐัั ะบะพะผะฐะฝะดะฝัั ัััะพะบั Docker
- docker
install:
# ะฃััะฐะฝะพะฒะธัั ะทะฐะฒะธัะธะผะพััะธ ะดะปั ัะตััะพะฒ
- npm ci
before_script:
# ะะฐะฟัััะธัั ัะตัะฒะตั ะธ ะบะปะธะตะฝั ะดะปั ัะตััะพะฒ
- npm run dev &
script:
# ะะฐะฟัััะธัั ัะตััั
- npm run test
แแฅ แแแแแ แแแแ แแแฅแแแแแแแแ, แ แแแแแแแช แจแแกแ แฃแแแแฃแแแ แกแแชแแแแก แงแแแแ แคแแแแแแแกแแแแก แแ pull-แแแแฎแแแแแแแกแแแแก.
โ แแแแแแแแแ
แแ แแแ แแฃแแแแแ แแแแแแแแแแ แ, แ แแ แงแแแแ แแแขแแแแขแฃแ แ แขแแกแขแ แฌแแ แแแขแแแแ แแแกแ แฃแแแ, แฉแแแ แจแแแแแซแแแ, แ แแช แแ แแกแแแแแแแแฃแแแ, แแแแแแแแแกแแ แแแแ แฌแแ แแแแแแก แกแแ แแแ แแ. แแแแแแแแ แฉแแแ แแแแแแ แแแแก แแแแแแแแ แแฎแแแแ แคแแแแแแแก แแแแแกแแแแก master
, แฉแแแ แแแซแแแแ แกแแกแขแแแแก แจแแกแแแแแแก แแแกแขแ แฃแฅแชแแแแก แแแแแแแแแแก แแแ แแแแขแ แแแจแ. แกแแแแ แชแแแแแแ แแแแแแงแแแแ แแแแ, แ แแแแแกแแช แฉแแแ แจแแแแแแจแ แแแแแแฎแแแแแ แแฅแแแแก แแ แแแฅแขแจแ, แแแแแ แแแแแคแ แแฎแแแแ, แ แแ แแฅแแแ แฃแแแ แแฅแแแแแ แ แแแแฃแ แ แกแแ แแแขแ, แ แแแแแกแแช แแฌแแแแแ แแแแแแแแแแกแแแแก.
deploy:
# ะกะพะฑัะฐัั Docker-ะบะพะฝัะตะนะฝะตั ะธ ะพัะฟัะฐะฒะธัั ะตะณะพ ะฝะฐ Docker Hub
provider: script
script: bash deploy.sh
on:
branch: master
แแแแแแแแแแก แกแแ แแแขแ แฌแงแแแขแก แแ แแ แแแแแแแก:
- แจแแฅแแแแแ, แแแแแจแแแ แแ แแแแแแแแแ แกแฃแ แแแ Docker Hub-แจแ CI แแแกแขแ แฃแแแแขแแก แแแแแงแแแแแแ (แฉแแแแก แจแแแแฎแแแแแจแ, Travis CI).
- แกแฃแ แแแแก แกแแ แแแ แแ แฉแแขแแแ แแแ, แซแแแแ แแแแขแแแแแ แแก แแแฉแแ แแแ แแ แแฎแแแก แแแจแแแแ (แฉแแแแก แจแแแแฎแแแแแจแ, แกแแ แแแ แ แแฃแจแแแแก DigitalOcean แแแแขแคแแ แแแแ).
แแแ แแแ แ แแแจแ, แแฅแแแ แฃแแแ แแแแงแแแแ แแแขแแแแขแฃแ แ แแ แแชแแกแ แกแฃแ แแแแก แจแแฅแแแแก, แแแแแจแแแแกแ แแ Docker Hub-แแ แแแแแกแแขแแแแ. แแก แงแแแแแคแแ แ แซแแแแแ แฐแแแแก แแแแก, แ แแช แฉแแแ แฃแแแ แแแแแแแแแ แฎแแแแ, แแแ แแ แแแแกแ, แ แแ แแแญแแ แแแแ แกแขแ แแขแแแแ แกแฃแ แแแแแแกแแแแก แฃแแแแแแฃแ แ แขแแแแแแก แแแแแญแแแแกแแแแก แแ แจแแกแแแแก แแแขแแแแขแแแแชแแแกแแแแก. แแแแแญแแ แแ แแแแแแแแแแก แกแแ แแแขแแก แแแแแแ แแ แแแขแแแ, แ แแแแ แแชแแ แแแแแจแแแแก แกแขแ แแขแแแแ, แจแแกแแแ, SSH แแแกแแฆแแแแก แแแแแ แแแ, SSH แแแแจแแ แแก แแแแงแแ แแแ. แแแแ แแ แกแแแแแแแแ แแ, แฉแแแ แแแแแแแ แ แแแญแ แซแแแแแ แแแ แแแ แแ แแแแแ แแแจแแแ, แแกแแแ แ แแแแ แช แแแแ แกแฎแแ แ แแแแจแ. แแก แแแแแฎแแแ แ แแ แกแชแแแแ แแก แแแฌแแ แแจแ.
แแกแ แ แแ, แกแแ แแแขแแก แแแ แแแแ แแแฌแแแ แแ แแก แกแฃแ แแแแก แแขแแแ แแแ Docker Hub-แแ. แแแแก แแแแแแแแ แกแแแแแแ แแแ แขแแแแ. แแแแแ แแแแก แกแฅแแแ, แ แแแแแแช แแ แแแแแแแงแแแ, แแแแชแแแก git hash-แแกแ แแ git tag-แแก แแแแ แแแแแแแแก, แแฃ แแกแแแ แแ แกแแแแแก. แแก แฃแแ แฃแแแแแงแแคแก, แ แแ แขแแแ แฃแแแแแแฃแ แแ แแ แแแแแแแแแก แแกแแแแแแแก แแแแแขแแคแแชแแ แแแแก, แ แแแแแแแช แแก แแแคแฃแซแแแแฃแแแ. DOCKER_USERNAME
ะธ DOCKER_PASSWORD
แแ แแก แแแแฎแแแ แแแแแก แแแ แแแแก แชแแแแแแแ, แ แแแแแแ แแแงแแแแแ แจแแกแแซแแแแแแแ Travis CI แแแขแแ แคแแแกแแก แแแแแงแแแแแแ. Travis CI แแแขแแแแขแฃแ แแ แแแแแฃแจแแแแแก แกแแแกแแขแแฃแ แแแแแชแแแแแก, แ แแแ แแก แแ แแกแฌแแ แฎแแแจแ แแ แแแฎแแแแก.
แแฅ แแ แแก แกแชแแแแ แแก แแแ แแแแ แแแฌแแแ deploy.sh
.
#!/bin/sh
set -e # ะััะฐะฝะพะฒะธัั ัะบัะธะฟั ะฟัะธ ะฝะฐะปะธัะธะธ ะพัะธะฑะพะบ
IMAGE="<username>/<repository>" # ะะฑัะฐะท Docker
GIT_VERSION=$(git describe --always --abbrev --tags --long) # Git-ั
ัั ะธ ัะตะณะธ
# ะกะฑะพัะบะฐ ะธ ัะตะณะธัะพะฒะฐะฝะธะต ะพะฑัะฐะทะฐ
docker build -t ${IMAGE}:${GIT_VERSION} .
docker tag ${IMAGE}:${GIT_VERSION} ${IMAGE}:latest
# ะั
ะพะด ะฒ Docker Hub ะธ ะฒัะณััะทะบะฐ ะพะฑัะฐะทะฐ
echo "${DOCKER_PASSWORD}" | docker login -u "${DOCKER_USERNAME}" --password-stdin
docker push ${IMAGE}:${GIT_VERSION}
แ แ แแฅแแแแ แกแแ แแแขแแก แแแแ แ แแแฌแแแ, แแแแแแแแ แแแแแแแแแแฃแแแ แแแแแ, แแฃ แ แแแแ แฐแแกแขแก แแงแแแแแ แแ แ แแแแ แแ แแก แแ แแแแแแแแฃแแ แแแกแแแ แแแแจแแ แ. แฉแแแก แจแแแแฎแแแแแจแ, แ แแแแแ แแแงแแแแ Digital Ocean-แก, แแแงแแแแ แแ แซแแแแแแแก แกแแ แแแ แแแ แแแกแแแแแจแแ แแแแแ aws
, แแ แแกแ แจแแแแแ.
แกแแ แแแ แแก แแแงแแแแแ แแ แแงแ แแแแกแแแฃแแ แแแแ แ แแฃแแ. แแกแ แ แแ, แแ แแแแแงแแแ แฌแแแแ แแแแแก แแแแแกแแฎแฃแแแแแก แกแแคแฃแซแแแแแ. แฃแแแ แแฆแแแแจแแแก, แ แแ แฉแแแก แแแแ แแ แฉแแฃแแ แกแแกแขแแแ แแแแแฎแแแก Docker-แแก แแ แแฏแแ แแแ แฎแแแแ แแแกแขแแแแชแแแก แแ Docker-แแก แแ แแฏแแ แแแ แฎแแแแ แแแจแแแแแก. แแ แแแแแแแงแแแ Ubuntu 18.04 Docker-แแก แแแกแแงแแแแแแแ, แแกแ แ แแ, แแฃ แแฅแแแ แแกแแแ แแงแแแแแ Ubuntu-แก แแแแแแก แแแกแแแแแแแแแ, แจแแแแซแแแแ แฃแแ แแแแ แแแฐแงแแแ
แแ แแฅ แแ แแกแแฃแแ แแ แกแแ แแแกแแก แแแแแ แแขแฃแ แแ แซแแแแแแแแ, แ แแแแแ แแก แแกแแแฅแขแ แจแแแซแแแแ แแแแจแแแแแแแแแ แแแแกแฎแแแแแแแแแแก แกแฎแแแแแกแฎแแ แจแแแแฎแแแแแจแ. แแ แฃแแ แแแแ แแแแชแแ แแแฅแแแแแแแก แแแแแ แแแแแแก, แ แแแแแแช แฃแแแ แจแแกแ แฃแแแแก SSH-แแก แกแแจแฃแแแแแแ แกแแ แแแ แแแ แแแแแแจแแ แแแแก แจแแแแแ, แ แแแแแแแช แแแแแแแกแแแแ แแ แแแฅแขแ:
- แฉแแแ แฃแแแ แแแแแแแ แแแแขแแแแแ แ, แ แแแแแแช แแแแแแแ แแฃแจแแแแก แแ แแแแแฉแแ แแ แแแ.
- แจแแแแแ แแฅแแแ แฃแแแ แแแฃแจแแแ แแฎแแแ แแแแขแแแแแ แ แคแแแแ.
- แแฅแแแ แฃแแแ แแแแงแแแแ แกแแ แแแ แแก แแแแแแฃแ แ แแแ แขแ
80
- แแก แกแแจแฃแแแแแแก แแแแชแแแ แจแแฎแแแแแ แกแแแขแแ แแกแแแ แแแกแแแแ แแแ, แ แแแแ แแชแแexample.com
, แแแ แขแแก แแแแแแแแแก แแแ แแจแ, แแแแ แ แแกแแแแกแ แแแกแแแแ แแแก แแแแแงแแแแแแexample.com:5000
. - แแ แแแแแก, แแฅแแแ แฃแแแ แฌแแจแแแแ แงแแแแ แซแแแแ แแแแขแแแแแ แ แแ แกแฃแ แแแ.
แแฅ แแ แแก แกแชแแแแ แแก แแแแ แซแแแแแ.
# ะะฐะนัะธ ID ัะฐะฑะพัะฐััะตะณะพ ะบะพะฝัะตะนะฝะตัะฐ
CONTAINER_ID=$(docker ps | grep takenote | cut -d" " -f1)
# ะััะฐะฝะพะฒะธัั ััะฐััะน ะบะพะฝัะตะนะฝะตั, ะทะฐะฟัััะธัั ะฝะพะฒัะน, ะพัะธััะธัั ัะธััะตะผั
docker stop ${CONTAINER_ID}
docker run --restart unless-stopped -d -p 80:5000 ${IMAGE}:${GIT_VERSION}
docker system prune -a -f
แแแแแแ แแ แ แแ, แ แแกแแช แงแฃแ แแแฆแแแ แฃแแแ แแแแฅแชแแแ
แจแแกแแซแแแแแแแ, แ แแ แ แแแแกแแช แแฅแแแ แแแฃแแแแจแแ แแแแแ แกแแ แแแ แก SSH-แแก แแแจแแแแแแ Travis CI-แแแ, แแฎแแแแแ แแแคแ แแฎแแแแแแก, แ แแแแแแช แฎแแแก แจแแแแจแแแ แแแกแขแแแแชแแแก แแแแ แซแแแแแแจแ, แ แแแแแ แกแแกแขแแแ แแแแแแแแแ แแแแฎแแแ แแแแแก แแแกแฃแฎแก.
The authenticity of host '<hostname> (<IP address>)' can't be established.
RSA key fingerprint is <key fingerprint>.
Are you sure you want to continue connecting (yes/no)?
แแแแแแ, แ แแ แกแแแแแแแแ แแแแแแจแแก แแแจแแคแแ แ แจแแกแแซแแแแแแแ base64-แจแ, แ แแแ แจแแแแแฎแแก แแก แแกแ, แ แแ แแแฎแแ แฎแแแฃแแแ แแ แกแแแแแแแ แแแฃแจแแแก. แแแกแขแแแแชแแแก แแขแแแแ แจแแแแซแแแแ แกแแฏแแ แ แแแกแแฆแแแแก แแแจแแคแแ แ แแ แคแแแแจแ แฉแแฌแแ แ known_hosts
แแแแแแฆแแแจแแฃแแ แจแแชแแแแแกแแแ แแแแแก แแแกแแฆแฌแแแแ.
echo <public key> | base64 # ะฒัะฒะพะดะธั <ะฟัะฑะปะธัะฝัะน ะบะปัั, ะทะฐะบะพะดะธัะพะฒะฐะฝะฝัะน ะฒ base64>
แแ แแฅแขแแแแจแ, แแก แแ แซแแแแแ แจแแแซแแแแ แแกแ แแแแแแงแฃแ แแแแแแก:
echo "123.45.67.89 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAklOUpkDHrfHY17SbrmTIpNLTGK9Tjom/BWDSU
GPl+nafzlHDTYW7hdI4yZ5ew18JH4JW9jbhUFrviQzM7xlELEVf4h9lFX5QVkbPppSwg0cda3
Pbv7kOdJ/MTyBlWXFCR+HAo3FXRitBqxiX1nKhXpHAZsMciLq8V6RjsNAQwdsdMFvSlVK/7XA
t3FaoJoAsncM1Q9x5+3V0Ww68/eIFmb1zuUFljQJKprrX88XypNDvjYNby6vw/Pb0rwert/En
mZ+AW4OZPnTPI89ZPmVMLuayrD2cE86Z/il8b+gw3r3+1nKatmIkjn2so1d01QraTlMqVSsbx
NrRFi9wrf+M7Q== [email protected]" | base64
แแ แแ, แ แแก แแฌแแ แแแแแก แแก - base64 แแแแแ แแแฃแแ แกแขแ แแฅแแแ:
MTIzLjQ1LjY3Ljg5IHNzaC1yc2EgQUFBQUIzTnphQzF5YzJFQUFBQUJJd0FBQVFFQWtsT1Vwa0RIcmZIWTE3U2JybVRJcE5MVEdLOVRqb20vQldEU1UKR1BsK25hZnpsSERUWVc3aGRJNHlaNWV3MThKSDRKVzlqYmhVRnJ2aVF6TTd4bEVMRVZmNGg5bEZYNVFWa2JQcHBTd2cwY2RhMwpQYnY3a09kSi9NVHlCbFdYRkNSK0hBbzNGWFJpdEJxeGlYMW5LaFhwSEFac01jaUxxOFY2UmpzTkFRd2RzZE1GdlNsVksvN1hBCnQzRmFvSm9Bc25jTTFROXg1KzNWMFd3NjgvZUlGbWIxenVVRmxqUUpLcHJyWDg4WHlwTkR2allOYnk2dncvUGIwcndlcnQvRW4KbVorQVc0T1pQblRQSTg5WlBtVk1MdWF5ckQyY0U4NlovaWw4YitndzNyMysxbkthdG1Ja2puMnNvMWQwMVFyYVRsTXFWU3NieApOclJGaTl3cmYrTTdRPT0geW91QGV4YW1wbGUuY29tCg==
แแฅ แแ แแก แแแแแ แแแฎแกแแแแแ แแ แซแแแแแ
install:
- echo < ะฟัะฑะปะธัะฝัะน ะบะปัั, ะทะฐะบะพะดะธัะพะฒะฐะฝะฝัะน ะฒ base64> | base64 -d >> $HOME/.ssh/known_hosts
แแแแแ แแแแแแแ แจแแแซแแแแ แแแแแงแแแแแฃแ แแฅแแแก แแแ แแแ แแแกแแฆแแแแ แแแแจแแ แแก แแแแงแแ แแแแกแแก, แ แแแแแ แจแแแซแแแแ แแแแญแแ แแแ แกแแ แแแ แแ แฌแแแแแแก แแแ แแแ แแแกแแฆแแแ. แแแกแแฆแแแแแ แแฃแจแแแแแกแแก แแฅแแแ แฃแแ แแแแ แฃแแแ แแแ แฌแแฃแแแแ, แ แแ แแก แฃแกแแคแ แแฎแแ แแแแฎแแแ Travis CI แแแ แแแแก แชแแแแแจแ แแ แแ แกแแ แแ แแ แแก แแแฉแแแแแแ.
แแแแแ แแ แแ แ แแ, แ แแช แฃแแแ แแฆแแแแจแแแก, แแ แแก แแก, แ แแ แจแแแซแแแแ แแแแญแแ แแแ แแแแแ แแแแแแแแแแก แกแแ แแแขแแก แแแจแแแแ แแ แแ แฎแแแแ, แแแแแแแแแ - แแ แแแ doctl
. แแแแก แจแแกแแซแแแ แแแแแขแแแแแ แซแแแแกแฎแแแแ แแแกแญแแ แแแก.
doctl compute ssh <droplet> --ssh-command "ะฒัะต ะบะพะผะฐะฝะดั ะฑัะดัั ะทะดะตัั && ะทะดะตัั"
TLS/SSL แแ แแแขแแแ แแแแก แแแแแแกแแ แแแ
แแแก แจแแแแแ แ แแช แแแแแแแแ แงแแแแแคแแ แ, แ แแช แแแแแ แแงแ แแแฎแกแแแแแ, แแแแ แแ แแแแแแ, แ แแช แแแแฎแแแ แแงแ แแก, แ แแ แกแแ แแแ แก แแ แฐแฅแแแแ SSL. แแแก แจแแแแแ, แ แแช แแ แแแงแแแแ Node.js แกแแ แแแ แก, แแซแฃแแแแแก แแแแแแ
แแ แแแแแแแแแ แแ แแแแแแแ แแแแแ แแ SSL แแแแคแแแฃแ แแชแแแก แฎแแแแ แแแแแแแแ, แแแแขแแ แฃแแ แแแแ แจแแแฅแแแแ แแแขแแแ แแแแก แแแแแแกแแ แ แแ แฉแแแฌแแ แ แแแกแ แแแขแแแแแ DNS-แจแ. แแแแแแแแแ, DigitalOcean-แแก แจแแแแฎแแแแแจแ, แแแขแแแ แแแแก แแแแแแกแแ แแ แแแขแแแแขแฃแ แ แแแแแฎแแแแแก แฎแแแแแฌแแ แแแ แกแแ แขแแคแแแแขแแก แจแแฅแแแ แแแ แขแแแ, แฃแคแแกแ แแ แกแฌแ แแคแ แแ แแชแแแฃแ แแ. แแ แแแแแแแแก แแฅแแก แแแแแขแแแแแ แกแแ แแแแแแ, แ แแ แแก แซแแแแแ แแแแแแแแแก SSL-แแก แแแงแแแแแแก แแ แแแแ แกแแ แแแ แแ, แ แแแแแแช แแฃแจแแแแก แแแขแแแ แแแแก แแแแแแกแแ แแก แฃแแแ, แกแแญแแ แแแแแก แจแแแแฎแแแแแจแ. แแก แกแแจแฃแแแแแแก แแซแแแแก แแแแแ แกแแ แแแ แแแก แกแแแ แแแ แแ "แแคแแฅแ แแ" SSL-แแ, แแแแ แแ แแแแแ แแ แแก แแแแแแงแแแแ แแแ แขแ, แ แแแแ แช แงแแแแแแแแก. 80
. แแกแ แ แแ, SSL-แแก แแแงแแแแแ แแแขแแแ แแแแก แแแแแแกแแ แแ แแแแ แแ แฃแคแ แ แแแแแแ แแ แแแกแแฎแแ แฎแแแแแแ, แแแแ แ SSL-แแก แแแงแแแแแแก แแแขแแ แแแขแแฃแแ แแแแแแแแ.
แแฎแแ แแฅแแแ แจแแแแซแแแแ แแแฎแฃแ แแ แงแแแแ แแแ แขแ แกแแ แแแ แแ, แ แแแแแแช แแฆแแแก แจแแแแแแแแ แแแแจแแ แแแก - แแแ แแ แแแ แขแแกแ 80
, แแแแแแงแแแแแ แแแขแแแ แแแแก แแแแแแกแแ แแแ แแ แแแ แขแแแ แแแแฃแแแแแชแแแกแแแแก 22
SSH-แกแแแแก. แจแแแแแแ, แกแแ แแแ แแ แแแ แแแแแ แฌแแแแแแก แแชแแแแแแ แแ แแ แแก แแแ แแ แกแฎแแ แแแ แขแแแแ แแแ แแแฎแแ แฎแแแแ.
แจแแแแแแแ
แแแก แจแแแแแ แ แแช แแแแแแแแ แงแแแแแคแแ แ, แ แแแแช แแ แแแกแแแแจแ แแแกแแฃแแ แ, แแ แช Docker แแแแขแคแแ แแ แแ แแ แช แแแขแแแแขแฃแ แ CI/CD แฏแแญแแแแแก แแแแชแแคแชแแแแ แแฆแแ แจแแแแจแแแแแแ. แแ แจแแแซแแแ แฃแฌแงแแแขแ แแแขแแแ แแชแแแก แฏแแญแแแก แแแงแแแแแ, แ แแแแแก แแ แแกแแช แแแแแก แขแแกแขแแ แแแ แฎแแแแ แฌแแ แแแแแแจแ แจแแกแแแแแแ แแ แแแแ แแแขแแแแขแฃแ แแ แแแแแแแแแแ แกแแ แแแ แแ. แแก แงแแแแแคแแ แ แฉแแแแแแก แฏแแ แแแแแ แจแแแแ แแแแ แแฎแแแแ แแ แแแ แฌแแฃแแแแฃแแ แแแ , แแ แกแแแแแก แแแแแ, แ แแ แแแแแฃแแฏแแแแกแ แฉแแแ แแแขแแแแขแฃแ แ แกแแแฃแจแแ แแแแแแ แแ แแแแฎแแแ แแก แฃแคแ แ แแคแแฅแขแฃแ แ. แแกแ แ แแ, แแฃ แแฅแแแ แแแฅแแ แ แแแแ แแแแ แแ แกแแแแแฎแแแ แแแแแแจแแ แแแแ, แแแฎแแแ แจแแแแขแงแแแแแแ.
PS แฉแแแแก
แซแแแ แคแแกแ แแแแแฎแแแแก! แแงแแแแแ CI/CD แขแแฅแแแแแแแแแก แแฅแแแแก แแ แแแฅแขแแแจแ?
แฌแงแแ แ: www.habr.com