āĻāĻŽāĻŋ 90 āĻāϰ āĻĻāĻļāĻā§āϰ āĻļā§āώā§āϰ āĻĻāĻŋāĻā§ āĻāĻŽāĻžāϰ āĻĒā§āϰāĻĨāĻŽ āĻāϝāĻŧā§āĻŦāϏāĻžāĻāĻ āϞāĻŋāĻā§āĻāĻŋāϞāĻžāĻŽāĨ¤ āϤāĻāύ āϤāĻžāĻĻā§āϰ āĻāĻžāĻā§āϰ āĻā§āϰāĻŽā§ āϰāĻžāĻāĻž āĻā§āĻŦ āϏāĻšāĻ āĻāĻŋāϞāĨ¤ āĻāĻŋāĻā§ āĻļā§āϝāĻŧāĻžāϰā§āĻĄ āĻšā§āϏā§āĻāĻŋāĻ āĻ āĻāĻāĻāĻŋ Apache āϏāĻžāϰā§āĻāĻžāϰ āĻāĻŋāϞ, āĻāĻĒāύāĻŋ FTP āĻāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻāĻ āϏāĻžāϰā§āĻāĻžāϰ⧠āϞāĻ āĻāύ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ āĻāϰāĻāĻŽ āĻāĻŋāĻā§ āϞāĻŋāĻā§ ftp://ftp.example.com. āϤāĻžāϰāĻĒāϰ⧠āĻāĻĒāύāĻžāĻā§ āĻāĻĒāύāĻžāϰ āύāĻžāĻŽ āĻāĻŦāĻ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ āϞāĻŋāĻāϤ⧠āĻšāĻŦā§ āĻāĻŦāĻ āĻĢāĻžāĻāϞāĻā§āϞāĻŋ āϏāĻžāϰā§āĻāĻžāϰ⧠āĻāĻĒāϞā§āĻĄ āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤ āĻŦāĻŋāĻāĻŋāύā§āύ āϏāĻŽāϝāĻŧ āĻāĻŋāϞ, āĻāĻāύāĻāĻžāϰ āĻā§āϝāĻŧā§ āϤāĻāύ āϏāĻŦāĻāĻŋāĻā§ āϏāĻšāĻ āĻāĻŋāϞāĨ¤
āϤāĻžāϰāĻĒāϰ āĻĨā§āĻā§ āĻĻā§āĻ āĻĻāĻļāĻā§ āϏāĻŦāĻāĻŋāĻā§ āĻ āύā§āĻ āĻŦāĻĻāϞ⧠āĻā§āĻā§āĨ¤ āĻāϝāĻŧā§āĻŦāϏāĻžāĻāĻāĻā§āϞāĻŋ āĻāϰāĻ āĻāĻāĻŋāϞ āĻšāϝāĻŧā§ āĻāĻ ā§āĻā§; āĻĒā§āϰā§āĻĄāĻžāĻāĻļāύ⧠āĻŽā§āĻā§āϤāĻŋ āĻĒāĻžāĻāϝāĻŧāĻžāϰ āĻāĻā§ āϏā§āĻā§āϞāĻŋāĻā§ āĻāĻāϤā§āϰāĻŋāϤ āĻāϰāϤ⧠āĻšāĻŦā§ā§ˇ āĻāĻāĻāĻŋ āĻāĻāĻ āϏāĻžāϰā§āĻāĻžāϰ āϞā§āĻĄ āĻŦā§āϝāĻžāϞā§āύā§āϏāĻžāϰā§āϰ āĻĒāĻŋāĻāύ⧠āĻāϞāĻŽāĻžāύ āĻ āύā§āĻāĻā§āϞāĻŋ āϏāĻžāϰā§āĻāĻžāϰ⧠āĻĒāϰāĻŋāĻŖāϤ āĻšāϝāĻŧ āĻāĻŦāĻ āϏāĻāϏā§āĻāϰāĻŖ āύāĻŋāϝāĻŧāύā§āϤā§āϰāĻŖ āĻŦā§āϝāĻŦāϏā§āĻĨāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āϏāĻžāϧāĻžāϰāĻŖ āĻšāϝāĻŧā§ āĻāĻ ā§āĨ¤
āĻāĻŽāĻžāϰ āĻŦā§āϝāĻā§āϤāĻŋāĻāϤ āĻĒā§āϰāĻāϞā§āĻĒā§āϰ āĻāύā§āϝ āĻāĻŽāĻžāϰ āĻāĻāĻāĻŋ āĻŦāĻŋāĻļā§āώ āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ āĻāĻŋāϞāĨ¤ āĻāĻŦāĻ āĻāĻŽāĻŋ āĻāĻžāύāϤāĻžāĻŽ āϝ⧠āĻāĻŽāĻžāϰ āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āĻāĻāĻāĻŋ āĻā§āϰāĻŋāϝāĻŧāĻž āϏāĻŽā§āĻĒāĻžāĻĻāύ āĻāϰ⧠āϏāĻžāĻāĻāĻāĻŋāĻā§ āĻā§āĻĒāĻžāĻĻāύ⧠āϏā§āĻĨāĻžāĻĒāύ āĻāϰāĻžāϰ āĻā§āώāĻŽāϤāĻž āĻĒā§āϰāϝāĻŧā§āĻāύ: āĻāĻāĻāĻŋ āĻļāĻžāĻāĻžāϝāĻŧ āĻā§āĻĄ āϞā§āĻāĻž master āĻāĻŋāĻāĻšāĻžāĻŦā§āĨ¤ āĻāĻĒāϰāύā§āϤā§, āĻāĻŽāĻŋ āĻāĻžāύāϤāĻžāĻŽ āϝ⧠āĻāĻŽāĻžāϰ āĻā§āĻ āĻāϝāĻŧā§āĻŦ āĻ
ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύā§āϰ āĻ
āĻĒāĻžāϰā§āĻļāύ āύāĻŋāĻļā§āĻāĻŋāϤ āĻāϰāĻžāϰ āĻāύā§āϝ, āĻāĻŽāĻŋ āĻāĻāĻāĻŋ āĻŦāĻŋāĻļāĻžāϞ āĻā§āĻŦāĻžāϰāύā§āĻāϏ āĻā§āϞāĻžāϏā§āĻāĻžāϰ āĻĒāϰāĻŋāĻāĻžāϞāύāĻž āĻāϰāϤ⧠āĻāĻžāĻāύāĻŋ, āĻŦāĻž āĻĄāĻāĻžāϰ āϏā§āϝāĻŧāĻžāϰā§āĻŽ āĻĒā§āϰāϝā§āĻā§āϤāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻāĻžāĻāύāĻŋ, āĻŦāĻž āĻĒāĻĄ, āĻāĻā§āύā§āĻ āĻāĻŦāĻ āĻ
āύā§āϝāĻžāύā§āϝ āϏāĻŽāϏā§āϤ āϧāϰāĻŖā§āϰ āϏāĻžāϰā§āĻāĻžāϰā§āϰ āĻŦāĻšāϰ āĻŦāĻāĻžāϝāĻŧ āϰāĻžāĻāϤ⧠āĻāĻžāĻāύāĻŋāĨ¤ āĻāĻāĻŋāϞāϤāĻž āĻāĻžāĻ āϝāϤāĻāĻž āϏāĻŽā§āĻāĻŦ āϏāĻšāĻ āĻāϰāĻžāϰ āϞāĻā§āώā§āϝ āĻ
āϰā§āĻāύ āĻāϰāĻžāϰ āĻāύā§āϝ, āĻāĻŽāĻžāĻā§ CI/CD āĻāϰ āϏāĻžāĻĨā§ āĻĒāϰāĻŋāĻāĻŋāϤ āĻšāϤ⧠āĻšāĻŦā§āĨ¤
āĻāĻĒāύāĻžāϰ āϝāĻĻāĻŋ āĻāĻāĻāĻŋ āĻā§āĻ āĻĒā§āϰāĻāϞā§āĻĒ āĻĨāĻžāĻā§ (āĻāĻ āĻā§āώā§āϤā§āϰā§, āĻāĻāĻāĻŋ Node.js āĻĒā§āϰāĻāϞā§āĻĒ) āĻāĻŦāĻ āĻāĻĒāύāĻŋ āĻāĻžāύāϤ⧠āĻāĻžāύ āĻāĻŋāĻāĻžāĻŦā§ āĻāĻ āĻĒā§āϰāĻāϞā§āĻĒā§āϰ āϏā§āĻĨāĻžāĻĒāύāĻž āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧāĻāĻžāĻŦā§ āĻāϰāĻž āϝāĻžāϝāĻŧ, āĻāĻŦāĻ āύāĻŋāĻļā§āĻāĻŋāϤ āĻāϰ⧠āϝ⧠āϰāĻŋāĻĒā§āĻāĻŋāĻāϰāĻŋāϤ⧠āϝāĻž āϏāĻāϰāĻā§āώāĻŋāϤ āĻāĻā§ āϤāĻž āĻā§āĻĒāĻžāĻĻāύ⧠āϝāĻž āĻāĻžāĻ āĻāϰ⧠āϤāĻžāϰ āϏāĻžāĻĨā§ āĻŽāĻŋāϞ⧠āϝāĻžāϝāĻŧ, āϤāĻžāĻšāϞ⧠āĻāĻŽāĻŋ āĻāĻĒāύāĻŋ āĻāĻ āύāĻŋāĻŦāύā§āϧ⧠āĻāĻā§āϰāĻšā§ āĻšāϤ⧠āĻĒāĻžāϰ⧠āĻŽāύ⧠āĻšāϝāĻŧ.
āĻĒā§āϰā§āĻŦāĻļāϰā§āϤ
āĻāĻ āύāĻŋāĻŦāύā§āϧāĻāĻŋāϰ āĻĒāĻžāĻ āĻā§āϰ āĻāĻŽāĻžāύā§āĻĄ āϞāĻžāĻāύ āĻāĻŦāĻ āĻŦā§āϝāĻžāĻļ āϏā§āĻā§āϰāĻŋāĻĒā§āĻ āϞā§āĻāĻžāϰ āĻĒā§āϰāĻžāĻĨāĻŽāĻŋāĻ āϧāĻžāϰāĻŖāĻž āϰāϝāĻŧā§āĻā§ āĻŦāϞ⧠āĻāĻļāĻž āĻāϰāĻž āĻšāĻā§āĻā§āĨ¤ āĻāĻĒāϰāύā§āϤā§, āϤāĻžāϰ āĻ ā§āϝāĻžāĻāĻžāĻāύā§āĻ āĻĒā§āϰāϝāĻŧā§āĻāύ āĻšāĻŦā§ Đ¸ .
āĻā§āϞ
āĻāĻŽāĻŋ āĻŦāϞāĻŦ āύāĻž āϝ⧠āĻāĻ āύāĻŋāĻŦāύā§āϧāĻāĻŋāĻā§ āύāĻŋāĻāĻļāϰā§āϤāĻāĻžāĻŦā§ "āĻāĻŋāĻāĻā§āϰāĻŋāϝāĻŧāĻžāϞ" āĻŦāϞāĻž āϝā§āϤ⧠āĻĒāĻžāϰā§āĨ¤ āĻāĻāĻŋ āĻāϰāĻ āĻāĻāĻāĻŋ āύāĻĨāĻŋ āϝā§āĻāĻžāύ⧠āĻāĻŽāĻŋ āϝāĻž āĻļāĻŋāĻā§āĻāĻŋ āϏ⧠āϏāĻŽā§āĻĒāϰā§āĻā§ āĻāĻĨāĻž āĻŦāϞāĻŋ āĻāĻŦāĻ āĻāĻāĻāĻŋ āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧ āĻĒāĻžāϏ⧠āϏāĻā§āĻāĻžāϞāĻŋāϤ āĻĒā§āϰā§āĻĄāĻžāĻāĻļāύ⧠āĻā§āĻĄ āĻĒāϰā§āĻā§āώāĻž āĻāĻŦāĻ āϏā§āĻĨāĻžāĻĒāύ āĻāϰāĻžāϰ āĻāύā§āϝ āĻāĻŽāĻžāϰ āĻāύā§āϝ āĻāĻĒāϝā§āĻā§āϤ āĻĒā§āϰāĻā§āϰāĻŋāϝāĻŧāĻž āĻŦāϰā§āĻŖāύāĻž āĻāϰāĻŋāĨ¤
āĻāĻ āĻāĻŽāĻžāϰ āĻāϰā§āĻŽāĻĒā§āϰāĻŦāĻžāĻš āĻšāĻā§āĻā§ āĻāĻŋ āĻļā§āώ.
āĻŦā§āϝāϤā§āϤ āϝā§āĻā§āύ⧠āϏāĻāĻā§āϰāĻšāϏā§āĻĨāϞ āĻļāĻžāĻāĻžāϝāĻŧ āĻĒā§āϏā§āĻ āĻāϰāĻž āĻā§āĻĄā§āϰ āĻāύā§āϝ master, āύāĻŋāĻŽā§āύāϞāĻŋāĻāĻŋāϤ āĻāϰā§āĻŽ āϏāĻā§āĻāĻžāϞāĻŋāϤ āĻšāϝāĻŧ:
- āĻā§āϰā§āϝāĻžāĻāĻŋāϏ āϏāĻŋāĻāĻ-āĻāϰ āĻāĻĒāϰ āύāĻŋāϰā§āĻŽāĻŋāϤ āĻĒā§āϰāĻāϞā§āĻĒāĻāĻŋ āĻļā§āϰ⧠āĻšāϝāĻŧāĨ¤
- āϏāĻŽāϏā§āϤ āĻāĻāύāĻŋāĻ, āĻāύā§āĻāĻŋāĻā§āϰā§āĻļāύ āĻāĻŦāĻ āĻļā§āώ āĻĨā§āĻā§ āĻļā§āώ āĻĒāϰā§āĻā§āώāĻž āϏāĻā§āĻāĻžāϞāĻŋāϤ āĻšāϝāĻŧāĨ¤
āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āϝ⧠āĻā§āĻĄā§āϰ āĻŽāϧā§āϝ⧠āĻĒāĻĄāĻŧā§ āϤāĻžāϰ āĻāύā§āϝ master, āύāĻŋāĻŽā§āύāϞāĻŋāĻāĻŋāϤ āϏāĻā§āĻāĻžāϞāĻŋāϤ āĻšāϝāĻŧ:
- āĻāĻĒāϰ⧠āĻāϞā§āϞāĻŋāĻāĻŋāϤ āϏāĻŦāĻāĻŋāĻā§, āĻĒā§āϞāĻžāϏ...
- āĻŦāϰā§āϤāĻŽāĻžāύ āĻā§āĻĄ, āϏā§āĻāĻŋāĻāϏ āĻāĻŦāĻ āĻĒāϰāĻŋāĻŦā§āĻļā§āϰ āĻāĻĒāϰ āĻāĻŋāϤā§āϤāĻŋ āĻāϰ⧠āĻāĻāĻāĻŋ āĻĄāĻāĻžāϰ āĻāĻŽā§āĻ āϤā§āϰāĻŋ āĻāϰāĻžāĨ¤
- āĻĄāĻāĻžāϰ āĻšāĻžāĻŦā§ āĻāĻŦāĻŋāĻāĻŋ āϏā§āĻĨāĻžāĻĒāύ āĻāϰāĻž āĻšāĻā§āĻā§āĨ¤
- āĻā§āĻĒāĻžāĻĻāύ āϏāĻžāϰā§āĻāĻžāϰā§āϰ āϏāĻžāĻĨā§ āϏāĻāϝā§āĻāĨ¤
- āĻĄāĻāĻžāϰ āĻšāĻžāĻŦ āĻĨā§āĻā§ āϏāĻžāϰā§āĻāĻžāϰ⧠āĻāĻāĻāĻŋ āĻāĻŦāĻŋ āĻāĻĒāϞā§āĻĄ āĻāϰāĻž āĻšāĻā§āĻā§āĨ¤
- āĻŦāϰā§āϤāĻŽāĻžāύ āϧāĻžāϰāĻ āĻŦāύā§āϧ āĻāϰāĻž āĻāĻŦāĻ āύāϤā§āύ āĻāĻŦāĻŋāϰ āĻāĻĒāϰ āĻāĻŋāϤā§āϤāĻŋ āĻāϰ⧠āĻāĻāĻāĻŋ āύāϤā§āύ āĻļā§āϰ⧠āĻāϰāĻžāĨ¤
āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻĄāĻāĻžāϰ, āĻāĻŋāϤā§āϰ āĻāĻŦāĻ āĻĒāĻžāϤā§āϰ āϏāĻŽā§āĻĒāϰā§āĻā§ āĻāĻā§āĻŦāĻžāϰ⧠āĻāĻŋāĻā§āĻ āύāĻž āĻāĻžāύā§āύ āϤāĻŦā§ āĻāĻŋāύā§āϤāĻž āĻāϰāĻŦā§āύ āύāĻžāĨ¤ āĻāĻŽāĻŋ āĻāĻĒāύāĻžāĻā§ āĻāĻāĻŋ āϏāĻŽā§āĻĒāϰā§āĻā§ āϏāĻŦ āĻŦāϞāĻŦāĨ¤
CI/CD āĻāĻŋ?
āϏāĻāĻā§āώāĻŋāĻĒā§āϤ āϰā§āĻĒ CI/CD-āĻāϰ āĻ āϰā§āĻĨ āĻšāϞ "āĻ āĻŦāĻŋāĻā§āĻāĻŋāύā§āύ āĻāĻā§āĻāϰāĻŖ/āύāĻŋāϰāĻŦāĻŋāĻā§āĻāĻŋāύā§āύ āϏā§āĻĨāĻžāĻĒāύāĻžāĨ¤"
â āĻā§āϰāĻŽāĻžāĻāϤ āĻāĻā§āĻāϰāĻŖ
āĻā§āϰāĻŽāĻžāĻāϤ āĻāύā§āĻāĻŋāĻā§āϰā§āĻļāύ āĻšāϞ āĻāĻŽāύ āĻāĻāĻāĻŋ āĻĒā§āϰāĻā§āϰāĻŋāϝāĻŧāĻž āϝā§āĻāĻžāύ⧠āĻĄā§āĻā§āϞāĻĒāĻžāϰāϰāĻž āĻĒā§āϰāĻāϞā§āĻĒā§āϰ āĻŽā§āϞ āϏā§āϰā§āϏ āĻā§āĻĄ āϰāĻŋāĻĒā§āĻāĻŋāĻāϰāĻŋāϤ⧠āĻĒā§āϰāϤāĻŋāĻļā§āϰā§āϤāĻŋ āĻĻā§āϝāĻŧ (āϏāĻžāϧāĻžāϰāĻŖāϤ āĻāĻāĻāĻŋ āĻļāĻžāĻāĻž master) āĻāĻāĻ āϏāĻŽāϝāĻŧā§, āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧ āĻĒāϰā§āĻā§āώāĻžāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻā§āĻĄā§āϰ āĻā§āĻŖāĻŽāĻžāύ āύāĻŋāĻļā§āĻāĻŋāϤ āĻāϰāĻž āĻšāϝāĻŧāĨ¤
â āĻ āĻŦāĻŋāϰāĻžāĻŽ āϏā§āĻĨāĻžāĻĒāύāĻž
āĻā§āϰāĻŽāĻžāĻāϤ āϏā§āĻĨāĻžāĻĒāύāĻž āĻšāϞ āĻāύ āĻāύ, āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧāĻāĻžāĻŦā§ āĻā§āĻĄ āĻā§āĻĒāĻžāĻĻāύ⧠āϏā§āĻĨāĻžāĻĒāύāĨ¤ CI/CD āϏāĻāĻā§āώāĻŋāĻĒā§āϤ āϰā§āĻĒā§āϰ āĻĻā§āĻŦāĻŋāϤā§āϝāĻŧ āĻ āĻāĻļāĻā§ āĻāĻāύāĻ āĻāĻāύāĻ "āĻ āĻŦāĻŋāĻā§āĻāĻŋāύā§āύ āĻŦāĻŋāϤāϰāĻŖ" āĻšāĻŋāϏāĻžāĻŦā§ āĻŦāĻžāύāĻžāύ āĻāϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻāĻŋ āĻŽā§āϞāϤ "āύāĻŋāϰāĻŦāĻŋāĻā§āĻāĻŋāύā§āύ āϏā§āĻĨāĻžāĻĒāύāĻžāϰ" āĻŽāϤāĻ, āĻāĻŋāύā§āϤ⧠"āύāĻŋāϰāĻŦāĻŋāĻā§āĻāĻŋāύā§āύ āĻŦāĻŋāϤāϰāĻŖ" āĻĒā§āϰāĻāϞā§āĻĒā§āϰ āϏā§āĻĨāĻžāĻĒāύāĻž āĻĒā§āϰāĻā§āϰāĻŋāϝāĻŧāĻž āĻļā§āϰ⧠āĻāϰāĻžāϰ āĻāĻā§ āĻŽā§āϝāĻžāύā§āϝāĻŧāĻžāϞāĻŋ āĻĒāϰāĻŋāĻŦāϰā§āϤāύāĻā§āϞāĻŋ āύāĻŋāĻļā§āĻāĻŋāϤ āĻāϰāĻžāϰ āĻĒā§āϰāϝāĻŧā§āĻāύā§āϝāĻŧāϤāĻž āĻŦā§āĻāĻžāϝāĻŧāĨ¤
āĻā§āĻāĻŋāĻ āϏā§āĻāĻžāϰā§āĻā§āĻĄ
āĻāĻ āϏāĻŦ āĻļāĻŋāĻāϤ⧠āĻāĻŽāĻŋ āϝ⧠āĻ ā§āϝāĻžāĻĒāĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŋ āϤāĻžāĻā§ āĻŦāϞāĻž āĻšāϝāĻŧ . āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻāϝāĻŧā§āĻŦ āĻĒā§āϰāĻāϞā§āĻĒ āϝāĻž āĻāĻŽāĻŋ āĻāĻžāĻ āĻāϰāĻāĻŋ, āύā§āĻ āύā§āĻāϝāĻŧāĻžāϰ āĻāύā§āϝ āĻĄāĻŋāĻāĻžāĻāύ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§āĨ¤ āĻĒā§āϰāĻĨāĻŽā§ āĻāĻŽāĻŋ āĻāϰāĻžāϰ āĻā§āώā§āĻāĻž āĻāϰā§āĻāĻŋ -āĻĒā§āϰāĻāϞā§āĻĒ, āĻŦāĻž āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āĻāĻāĻāĻŋ āϏāĻžāϰā§āĻāĻžāϰ āĻāĻžāĻĄāĻŧāĻžāĻ āĻāĻāĻāĻŋ āĻĢā§āϰāύā§āĻ-āĻāύā§āĻĄ āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ, āϝāĻžāϤ⧠āĻāĻāĻŋ āĻ āĻĢāĻžāϰ āĻāϰ⧠āĻāĻŽāύ āϏā§āĻā§āϝāĻžāύā§āĻĄāĻžāϰā§āĻĄ āĻšā§āϏā§āĻāĻŋāĻ āĻāĻŦāĻ āĻĒā§āϰāĻāϞā§āĻĒ āϏā§āĻĨāĻžāĻĒāύā§āϰ āĻā§āώāĻŽāϤāĻžāϰ āϏā§āĻŦāĻŋāϧāĻž āύāĻŋāϤ⧠. āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύāĻāĻŋāϰ āĻāĻāĻŋāϞāϤāĻž āĻŦāĻžāĻĄāĻŧāĻžāϰ āϏāĻžāĻĨā§ āϏāĻžāĻĨā§, āĻāĻŽāĻžāĻā§ āĻāĻāĻŋāϰ āϏāĻžāϰā§āĻāĻžāϰ āĻ āĻāĻļ āϤā§āϰāĻŋ āĻāϰāϤ⧠āĻšāϝāĻŧā§āĻāĻŋāϞ, āϝāĻžāϰ āĻ āϰā§āĻĨ āĻšāϞ āϝ⧠āĻĒā§āϰāĻāϞā§āĻĒā§āϰ āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧ āϏāĻāĻšāϤāĻāϰāĻŖ āĻāĻŦāĻ āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧ āϏā§āĻĨāĻžāĻĒāύāĻžāϰ āĻāύā§āϝ āĻāĻŽāĻžāϰ āύāĻŋāĻāϏā§āĻŦ āĻā§āĻļāϞ āϤā§āϰāĻŋ āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤
āĻāĻŽāĻžāϰ āĻā§āώā§āϤā§āϰā§, āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύāĻāĻŋ Node.js āĻĒāϰāĻŋāĻŦā§āĻļā§ āĻāϞāĻŽāĻžāύ āĻāĻāĻāĻŋ āĻāĻā§āϏāĻĒā§āϰā§āϏ āϏāĻžāϰā§āĻāĻžāϰ, āĻāĻāĻāĻŋ āĻāĻāĻ-āĻĒā§āώā§āĻ āĻž āĻĒā§āϰāϤāĻŋāĻā§āϰāĻŋāϝāĻŧāĻž āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ āĻĒāϰāĻŋāĻŦā§āĻļāύ āĻāϰ⧠āĻāĻŦāĻ āĻāĻāĻāĻŋ āϏā§āϰāĻā§āώāĻŋāϤ āϏāĻžāϰā§āĻāĻžāϰ-āϏāĻžāĻāĻĄ API āϏāĻŽāϰā§āĻĨāύ āĻāϰā§āĨ¤ āĻāĻ āϏā§āĻĨāĻžāĻĒāϤā§āϝāĻāĻŋ āϏā§āĻ āĻā§āĻļāϞ āĻ āύā§āϏāϰāĻŖ āĻāϰ⧠āϝāĻž āĻĒāĻžāĻāϝāĻŧāĻž āϝā§āϤ⧠āĻĒāĻžāϰ⧠āϏāĻŽā§āĻĒā§āϰā§āĻŖ āϏā§āĻā§āϝāĻžāĻ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻāĻžāĻāĻĄāĨ¤
āϏāĻžāĻĨā§ āĻĒāϰāĻžāĻŽāϰā§āĻļ āĻāϰāϞāĻžāĻŽ , āϝāĻŋāύāĻŋ āĻāĻāĻāύ āĻ āĻā§āĻŽā§āĻļāύ āĻŦāĻŋāĻļā§āώāĻā§āĻ, āĻāĻŦāĻ āϤāĻžāĻā§ āĻāĻŋāĻā§āĻāĻžāϏāĻž āĻāϰāϞā§āύ āϝ⧠āĻāĻŽāĻžāϰ āĻāĻā§āĻāĻžāĻŽāϤ āĻāĻžāĻ āĻāϰāĻžāϰ āĻāύā§āϝ āĻāĻŽāĻžāϰ āĻā§ āĻāϰāĻž āĻĻāϰāĻāĻžāϰāĨ¤ āϤāĻŋāύāĻŋ āĻāĻŽāĻžāĻā§ āĻāĻāĻāĻŋ āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧ āĻāϰā§āĻŽāĻĒā§āϰāĻŦāĻžāĻš āĻā§āĻŽāύ āĻšāĻāϝāĻŧāĻž āĻāĻāĻŋāϤ āϏ⧠āϏāĻŽā§āĻĒāϰā§āĻā§ āϧāĻžāϰāĻŖāĻž āĻĻāĻŋāϝāĻŧā§āĻā§āύ, āĻāĻ āύāĻŋāĻŦāύā§āϧā§āϰ āϞāĻā§āώā§āϝ āĻŦāĻŋāĻāĻžāĻā§ āĻŦāϰā§āĻŖāĻŋāϤ āĻšāϝāĻŧā§āĻā§āĨ¤ āĻāĻ āϞāĻā§āώā§āϝāĻā§āϞāĻŋ āĻĨāĻžāĻāĻžāϰ āĻ āϰā§āĻĨ āĻšāϞ āϝ⧠āĻāĻŽāĻžāĻā§ āĻā§āĻāĻžāĻŦā§ āĻĄāĻāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŦā§āύ āϤāĻž āĻā§āĻāĻā§ āĻŦā§āϰ āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤
āĻĄāĻāĻļā§āϰāĻŽāĻŋāĻ
āĻĄāĻāĻžāϰ āĻšāϞ āĻāĻāĻāĻŋ āĻā§āϞ āϝāĻž, āĻāύāĻā§āĻāύāĻžāϰāĻžāĻāĻā§āĻļāύ āĻĒā§āϰāϝā§āĻā§āϤāĻŋāϰ āĻāύā§āϝ āϧāύā§āϝāĻŦāĻžāĻĻ, āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύāĻā§āϞāĻŋāĻā§ āϏāĻšāĻā§āĻ āĻŦāĻŋāϤāϰāĻŖ, āϏā§āĻĨāĻžāĻĒāύ āĻāĻŦāĻ āĻāĻāĻ āĻĒāϰāĻŋāĻŦā§āĻļā§ āĻāĻžāϞāĻžāύā§āϰ āĻ āύā§āĻŽāϤāĻŋ āĻĻā§āϝāĻŧ, āĻāĻŽāύāĻāĻŋ āĻĄāĻāĻžāϰ āĻĒā§āϞā§āϝāĻžāĻāĻĢāϰā§āĻŽ āύāĻŋāĻā§āĻ āĻŦāĻŋāĻāĻŋāύā§āύ āĻĒāϰāĻŋāĻŦā§āĻļā§ āĻāϞā§āĨ¤ āĻĒā§āϰāĻĨāĻŽā§, āĻāĻŽāĻžāĻā§ āĻĄāĻāĻžāϰ āĻāĻŽāĻžāύā§āĻĄ āϞāĻžāĻāύ āĻā§āϞāϏ (āϏāĻŋāĻāϞāĻāĻ) āĻ āĻāĻŽāĻžāϰ āĻšāĻžāϤ āĻĒā§āϤ⧠āĻšāĻŦā§āĨ¤ āĻĄāĻāĻžāϰ āĻāύāϏā§āĻāϞā§āĻļāύ āĻāĻžāĻāĻĄāĻāĻŋ āĻ āĻŋāĻ āϤāϤāĻāĻž āϏā§āĻĒāώā§āĻ āĻāĻŦāĻ āϏāĻšāĻāĻŦā§āϧā§āϝ āύāϝāĻŧ, āϤāĻŦā§ āĻāϤ⧠āĻŦāϞāĻž āĻāĻā§ āϝ⧠āĻāύāϏā§āĻāϞā§āĻļāύā§āϰ āĻĒā§āϰāĻĨāĻŽ āϧāĻžāĻĒ āĻšāĻŋāϏā§āĻŦā§ āĻāĻĒāύāĻžāĻā§ āĻĄāĻāĻžāϰ āĻĄā§āϏā§āĻāĻāĻĒ (āĻŽā§āϝāĻžāĻ āĻŦāĻž āĻāϰ āĻāύā§āϝ) āĻĄāĻžāĻāύāϞā§āĻĄ āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤ Windows).
āĻĄāĻāĻžāϰ āĻšāĻžāĻŦ āĻŽā§āĻāĻžāĻŽā§āĻāĻŋ āĻāĻāĻ āĻāĻŋāύāĻŋāϏ āĻāĻŋāĻ āϰāĻŋāĻĒā§āĻāĻŋāĻāϰāĻŋ āĻŦāĻž āϰā§āĻāĻŋāϏā§āĻā§āϰāĻŋāϰ āĻāύā§āϝ āĻāĻžāĻāĻžāϏā§āĻā§āϰāĻŋāĻĒā§āĻ āĻĒā§āϝāĻžāĻā§āĻāĻā§āϞāĻŋāϰ āĻāύā§āϝāĨ¤ āĻāĻāĻŋ āĻĄāĻāĻžāϰ āĻāĻŽā§āĻāĻā§āϞāĻŋāϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āĻ āύāϞāĻžāĻāύ āϏāĻāĻā§āϰāĻšāϏā§āĻĨāϞāĨ¤ āĻāĻāĻŋ āĻĄāĻāĻžāϰ āĻĄā§āϏā§āĻāĻāĻĒ āĻāϰ āϏāĻžāĻĨā§ āϏāĻāϝā§āĻ āĻāϰā§āĨ¤
āϏā§āϤāϰāĻžāĻ, āĻĄāĻāĻžāϰ āĻĻāĻŋāϝāĻŧā§ āĻļā§āϰ⧠āĻāϰāĻžāϰ āĻāύā§āϝ, āĻāĻĒāύāĻžāĻā§ āĻĻā§āĻāĻŋ āĻāĻŋāύāĻŋāϏ āĻāϰāϤ⧠āĻšāĻŦā§:
- āĻāύāϏā§āĻāϞ āĻāϰā§āύ .
- āύāĻŋāĻŦāύā§āϧāύā§āϰ āĻāύā§āϝ .
āĻāϰ āĻĒāϰā§, āĻāĻĒāύāĻŋ āĻĄāĻāĻžāϰ āϏāĻāϏā§āĻāϰāĻŖāĻāĻŋ āĻĒāϰā§āĻā§āώāĻž āĻāϰāϤ⧠āύāĻŋāĻŽā§āύāϞāĻŋāĻāĻŋāϤ āĻāĻŽāĻžāύā§āĻĄāĻāĻŋ āĻāĻžāϞāĻŋāϝāĻŧā§ āĻĄāĻāĻžāϰ āϏāĻŋāĻāϞāĻāĻ āĻāĻžāĻ āĻāϰāĻā§ āĻāĻŋāύāĻž āϤāĻž āĻĒāϰā§āĻā§āώāĻž āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ:
docker -vāĻāϰāĻĒāϰā§, āĻāĻŋāĻā§āĻāĻžāϏāĻž āĻāϰāĻž āĻšāϞ⧠āĻāĻĒāύāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āύāĻžāĻŽ āĻāĻŦāĻ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ āĻĒā§āϰāĻŦā§āĻļ āĻāϰ⧠āĻĄāĻāĻžāϰ āĻšāĻžāĻŦā§ āϞāĻ āĻāύ āĻāϰā§āύ:
docker logināĻĄāĻāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤā§, āĻāĻĒāύāĻžāĻā§ āĻ āĻŦāĻļā§āϝāĻ āĻāĻŋāϤā§āϰ āĻāĻŦāĻ āĻĒāĻžāϤā§āϰā§āϰ āϧāĻžāϰāĻŖāĻžāĻā§āϞāĻŋ āĻŦā§āĻāϤ⧠āĻšāĻŦā§āĨ¤
âāĻāĻŦāĻŋ
āĻāĻāĻāĻŋ āĻāĻŋāϤā§āϰ āĻāĻāĻāĻŋ āĻŦā§āϞā§āĻĒā§āϰāĻŋāύā§āĻā§āϰ āĻŽāϤ⧠āĻāĻŋāĻā§ āϝāĻž āϧāĻžāϰāĻ āĻāĻāϤā§āϰāĻŋāϤ āĻāϰāĻžāϰ āĻāύā§āϝ āύāĻŋāϰā§āĻĻā§āĻļāĻžāĻŦāϞ⧠āϧāĻžāϰāĻŖ āĻāϰā§āĨ¤ āĻāĻāĻŋ āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύā§āϰ āĻĢāĻžāĻāϞ āϏāĻŋāϏā§āĻā§āĻŽ āĻāĻŦāĻ āϏā§āĻāĻŋāĻāϏā§āϰ āĻāĻāĻāĻŋ āĻ āĻĒāϰāĻŋāĻŦāϰā§āϤāύā§āϝāĻŧ āϏā§āύā§āϝāĻžāĻĒāĻļāĻāĨ¤ āĻŦāĻŋāĻāĻžāĻļāĻāĻžāϰā§āϰāĻž āϏāĻšāĻā§āĻ āĻāĻŦāĻŋ āĻļā§āϝāĻŧāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰā§āĨ¤
# ĐŅвОд ŅвĐĩĐ´ĐĩĐŊиК ОйО вŅĐĩŅ
ОйŅаСаŅ
docker imagesāĻāĻ āĻāĻŽāĻžāύā§āĻĄāĻāĻŋ āύāĻŋāĻŽā§āύāϞāĻŋāĻāĻŋāϤ āĻļāĻŋāϰā§āύāĻžāĻŽ āϏāĻš āĻāĻāĻāĻŋ āĻā§āĻŦāĻŋāϞ āĻāĻāĻāĻĒā§āĻ āĻāϰāĻŦā§:
REPOSITORY TAG IMAGE ID CREATED SIZE
---āĻĒāϰāĻŦāϰā§āϤā§āϤ⧠āĻāĻŽāϰāĻž āĻāĻāĻ āĻŦāĻŋāύā§āϝāĻžāϏ⧠āĻāĻŽāĻžāύā§āĻĄā§āϰ āĻāĻŋāĻā§ āĻāĻĻāĻžāĻšāϰāĻŖ āĻĻā§āĻāĻŦ - āĻĒā§āϰāĻĨāĻŽā§ āĻāĻāĻāĻŋ āĻŽāύā§āϤāĻŦā§āϝ āϏāĻš āĻāĻāĻāĻŋ āĻāĻŽāĻžāύā§āĻĄ āĻāĻā§, āĻāĻŦāĻ āϤāĻžāϰāĻĒāϰ āĻāĻāĻŋ āĻā§ āĻāĻāĻāĻĒā§āĻ āĻāϰāϤ⧠āĻĒāĻžāϰ⧠āϤāĻžāϰ āĻāĻāĻāĻŋ āĻāĻĻāĻžāĻšāϰāĻŖāĨ¤
âāĻāύā§āĻā§āĻāύāĻžāϰ
āĻāĻāĻāĻŋ āϧāĻžāϰāĻ āĻāĻāĻāĻŋ āĻāĻā§āϏāĻŋāĻāĻŋāĻāĻā§āĻŦāϞ āĻĒā§āϝāĻžāĻā§āĻ āϝāĻž āĻāĻāĻāĻŋ āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ āĻāĻžāϞāĻžāύā§āϰ āĻāύā§āϝ āĻĒā§āϰāϝāĻŧā§āĻāύā§āϝāĻŧ āϏāĻŦāĻāĻŋāĻā§ āϧāĻžāϰāĻŖ āĻāϰā§āĨ¤ āĻāĻ āĻĒāĻĻā§āϧāϤāĻŋāϰ āϏāĻžāĻĨā§ āĻāĻāĻāĻŋ āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ āϏāϰā§āĻŦāĻĻāĻž āĻāĻāĻ āĻāĻžāĻ āĻāϰāĻŦā§, āĻ āĻŦāĻāĻžāĻ āĻžāĻŽā§ āύāĻŋāϰā§āĻŦāĻŋāĻļā§āώā§: āĻāĻāĻāĻŋ āĻŦāĻŋāĻā§āĻāĻŋāύā§āύ āĻĒāϰāĻŋāĻŦā§āĻļā§ āĻāĻŦāĻ āĻāĻāĻ āĻĒāϰāĻŋāĻŦā§āĻļā§āĨ¤ āĻŽā§āĻĻā§āĻĻāĻž āĻāĻĨāĻž āĻšāϞ āĻāĻāĻ āĻāĻŋāϤā§āϰā§āϰ āĻāĻĻāĻžāĻšāϰāĻŖ āĻŦāĻŋāĻāĻŋāύā§āύ āĻĒāϰāĻŋāĻŦā§āĻļā§ āĻāĻžāϞ⧠āĻāϰāĻž āĻšāϝāĻŧāĨ¤
# ĐĐĩŅĐĩŅиŅĐģĐĩĐŊиĐĩ вŅĐĩŅ
ĐēĐžĐŊŅĐĩĐšĐŊĐĩŅОв
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
---âāĻā§āϝāĻžāĻ
āĻāĻāĻāĻŋ āĻā§āϝāĻžāĻ āĻāĻāĻāĻŋ āĻāĻŋāϤā§āϰā§āϰ āĻāĻāĻāĻŋ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āϏāĻāϏā§āĻāϰāĻŖā§āϰ āĻāĻāĻāĻŋ āĻāĻā§āĻāĻŋāϤāĨ¤
â āĻĄāĻāĻžāϰ āĻāĻŽāĻžāύā§āĻĄā§āϰ āĻāĻāĻāĻŋ āĻĻā§āϰā§āϤ āϰā§āĻĢāĻžāϰā§āύā§āϏ
āĻāĻāĻžāύ⧠āĻāĻŋāĻā§ āϏāĻžāϧāĻžāϰāĻŖāĻāĻžāĻŦā§ āĻŦā§āϝāĻŦāĻšā§āϤ āĻĄāĻāĻžāϰ āĻāĻŽāĻžāύā§āĻĄā§āϰ āĻāĻāĻāĻŋ āĻāĻāĻžāϰāĻāĻŋāĻ āϰāϝāĻŧā§āĻā§āĨ¤
āĻā§āĻŽ
āĻĒā§āϰāϏāĻā§āĻ
āĻĒā§āϰāĻāĻžāĻŦ
āĻāĻžāĻŦāĻŽā§āϰā§āϤāĻŋ
āĻāĻāĻāĻŋ āĻĄāĻāĻžāϰāĻĢāĻžāĻāϞ āĻĨā§āĻā§ āĻāĻāĻāĻŋ āĻāĻŦāĻŋ āϤā§āϰāĻŋ āĻāϰāĻž
āĻāĻžāĻŦāĻŽā§āϰā§āϤāĻŋ
āĻāĻŽā§āĻ āĻā§āϝāĻžāĻāĻŋāĻ
āĻāĻžāĻŦāĻŽā§āϰā§āϤāĻŋ
āĻāĻŽā§āĻ āϤāĻžāϞāĻŋāĻāĻž
āĻāϧāĻžāϰ
āĻāĻāĻāĻŋ āĻāĻŦāĻŋāϰ āĻāĻĒāϰ āĻāĻŋāϤā§āϤāĻŋ āĻāϰ⧠āĻāĻāĻāĻŋ āϧāĻžāϰāĻ āĻāĻžāϞāĻžāύā§
āĻāĻžāĻŦāĻŽā§āϰā§āϤāĻŋ
āϰā§āĻāĻŋāϏā§āĻā§āϰāĻŋāϤ⧠āĻāĻāĻāĻŋ āĻāĻŦāĻŋ āĻāĻĒāϞā§āĻĄ āĻāϰāĻž āĻšāĻā§āĻā§
āĻāĻžāĻŦāĻŽā§āϰā§āϤāĻŋ
āϰā§āĻāĻŋāϏā§āĻā§āϰāĻŋ āĻĨā§āĻā§ āĻāĻāĻāĻŋ āĻāĻŦāĻŋ āϞā§āĻĄ āĻāϰāĻž āĻšāĻā§āĻā§
āĻāϧāĻžāϰ
āϤāĻžāϞāĻŋāĻāĻž āĻĒāĻžāϤā§āϰā§
āĻāĻŦāĻŋ/āϧāĻžāϰāĻ
āĻ āĻŦā§āϝāĻŦāĻšā§āϤ āĻĒāĻžāϤā§āϰ āĻāĻŦāĻ āĻāĻŦāĻŋ āĻ āĻĒāϏāĻžāϰāĻŖ
âāĻĄāĻāĻžāϰāĻĢāĻžāĻāϞ
āĻāĻŽāĻŋ āĻāĻžāύāĻŋ āĻāĻŋāĻāĻžāĻŦā§ āϏā§āĻĨāĻžāύā§āϝāĻŧāĻāĻžāĻŦā§ āĻāĻāĻāĻŋ āĻāϤā§āĻĒāĻžāĻĻāύ āĻ
ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ āĻāĻžāϞāĻžāϤ⧠āĻšāϝāĻŧāĨ¤ āĻāĻŽāĻžāϰ āĻāĻžāĻā§ āĻāĻāĻāĻŋ āϰā§āĻĄāĻŋāĻŽā§āĻĄ āϰāĻŋāĻ
ā§āϝāĻžāĻā§āĻ āĻ
ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ āϤā§āϰāĻŋ āĻāϰāĻžāϰ āĻāύā§āϝ āĻĄāĻŋāĻāĻžāĻāύ āĻāϰāĻž āĻāĻāĻāĻŋ āĻāϝāĻŧā§āĻŦāĻĒā§āϝāĻžāĻ āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ āĻāĻā§āĨ¤ āĻāϰ āĻĒāϰā§, āĻāĻŽāĻžāϰ āĻāĻžāĻā§ āĻāĻāĻāĻŋ āĻāĻŽāĻžāύā§āĻĄ āϰāϝāĻŧā§āĻā§ āϝāĻž āĻĒā§āϰā§āĻā§ āĻāĻāĻāĻŋ Node.js āĻāĻŋāϤā§āϤāĻŋāĻ āϏāĻžāϰā§āĻāĻžāϰ āĻļā§āϰ⧠āĻāϰ⧠5000. āĻāĻāĻŋ āĻāĻ āĻŽāϤ āĻĻā§āĻāĻžāϝāĻŧ:
npm i # ŅŅŅаĐŊОвĐēа СавиŅиĐŧĐžŅŅĐĩĐš
npm run build # ŅйОŅĐēа React-ĐŋŅиĐģĐžĐļĐĩĐŊиŅ
npm run start # СаĐŋŅŅĐē Node-ŅĐĩŅвĐĩŅаāĻāĻāĻž āĻāϞā§āϞā§āĻ āĻāϰāĻž āĻāĻāĻŋāϤ āϝ⧠āĻāĻŽāĻžāϰ āĻāĻžāĻā§ āĻāĻ āĻāĻĒāĻžāĻĻāĻžāύāĻāĻŋāϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āĻāĻĻāĻžāĻšāϰāĻŖ āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ āύā§āĻāĨ¤ āĻāĻŋāύā§āϤ⧠āĻāĻāĻžāύā§, āĻĒāϰā§āĻā§āώāĻžāϰ āĻāύā§āϝ, āϝā§āĻā§āύ āϏāĻžāϧāĻžāϰāĻŖ āύā§āĻĄ āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ āĻāϰāĻŦā§āĨ¤
āϧāĻžāϰāĻāĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻžāϰ āĻāύā§āϝ, āĻāĻĒāύāĻžāĻā§ āĻĄāĻāĻžāϰāĻā§ āύāĻŋāϰā§āĻĻā§āĻļ āĻĻāĻŋāϤ⧠āĻšāĻŦā§āĨ¤ āύāĻžāĻŽāĻ āĻāĻāĻāĻŋ āĻĢāĻžāĻāϞā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻāĻāĻŋ āĻāϰāĻž āĻšāϝāĻŧ Dockerfile, āĻĒā§āϰāĻāϞā§āĻĒā§āϰ āϰā§āĻ āĻĄāĻŋāϰā§āĻā§āĻāϰāĻŋāϤ⧠āĻ
āĻŦāϏā§āĻĨāĻŋāϤāĨ¤ āĻāĻ āĻĢāĻžāĻāϞāĻāĻŋ, āĻĒā§āϰāĻĨāĻŽā§, āĻŦā§āĻļ āĻŦā§āϧāĻāĻŽā§āϝ āĻŦāϞ⧠āĻŽāύ⧠āĻšāĻā§āĻā§āĨ¤
āĻāĻŋāύā§āϤ⧠āĻāĻāĻŋāϤ⧠āϝāĻž āϰāϝāĻŧā§āĻā§ āϤāĻž āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āĻŦāĻŋāĻļā§āώ āĻāĻŽāĻžāύā§āĻĄā§āϰ āϏāĻžāĻĨā§ āĻāĻāĻāĻŋ āĻāĻžāĻā§āϰ āĻĒāϰāĻŋāĻŦā§āĻļ āϏā§āĻĨāĻžāĻĒāύā§āϰ āĻ āύā§āϰā§āĻĒ āĻāĻŋāĻā§ āĻŦāϰā§āĻŖāύāĻž āĻāϰā§āĨ¤ āĻāĻāĻžāύ⧠āĻāĻ āĻāĻŽāĻžāύā§āĻĄā§āϰ āĻāĻŋāĻā§ āĻāĻā§:
- â āĻāĻ āĻāĻŽāĻžāύā§āĻĄāĻāĻŋ āĻāĻāĻāĻŋ āĻĢāĻžāĻāϞ āĻļā§āϰ⧠āĻāϰā§āĨ¤ āĻāĻāĻŋ āĻŦā§āϏ āĻāĻŽā§āĻ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāϰ⧠āϝāĻžāϰ āĻāĻĒāϰ āϧāĻžāϰāĻāĻāĻŋ āύāĻŋāϰā§āĻŽāĻŋāϤ āĻšāϝāĻŧā§āĻā§āĨ¤
- - āĻāĻāĻāĻŋ āϏā§āĻĨāĻžāύā§āϝāĻŧ āĻā§āϏ āĻĨā§āĻā§ āĻāĻāĻāĻŋ āĻĒāĻžāϤā§āϰ⧠āĻĢāĻžāĻāϞ āĻ āύā§āϞāĻŋāĻĒāĻŋ āĻāϰāĻžāĨ¤
- â āύāĻŋāĻŽā§āύāϞāĻŋāĻāĻŋāϤ āĻāĻŽāĻžāύā§āĻĄā§āϰ āĻāύā§āϝ āĻāϝāĻŧāĻžāϰā§āĻāĻŋāĻ āĻĄāĻŋāϰā§āĻā§āĻāϰāĻŋ āϏā§āĻ āĻāϰāĻž āĻšāĻā§āĻā§āĨ¤
- - āĻāĻŽāĻžāύā§āĻĄ āĻāĻžāϞāĻžāύāĨ¤
- - āĻĒā§āϰā§āĻ āϏā§āĻāĻŋāĻāϏāĨ¤
- - āĻāĻžāϰā§āϝāĻāϰ āĻāϰāĻžāϰ āύāĻŋāϰā§āĻĻā§āĻļā§āϰ āĻāĻā§āĻāĻŋāϤāĨ¤
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āĻāĻĒāύāĻžāϰ āύāĻŋāϰā§āĻŦāĻžāĻāĻŋāϤ āĻŦā§āϏ āĻāĻŽā§āĻā§āϰ āĻāĻĒāϰ āύāĻŋāϰā§āĻāϰ āĻāϰā§, āĻāĻĒāύāĻžāĻā§ āĻ āϤāĻŋāϰāĻŋāĻā§āϤ āĻĄāĻŋāĻĒā§āύā§āĻĄā§āύā§āϏāĻŋ āĻāύāϏā§āĻāϞ āĻāϰāϤ⧠āĻšāϤ⧠āĻĒāĻžāϰā§āĨ¤ āĻāϰ āĻāĻžāϰāĻŖ āĻšāϞ⧠āĻāĻŋāĻā§ āĻŦā§āϏ āĻāĻŽā§āĻ (āϝā§āĻŽāύ āύā§āĻĄ āĻāϞāĻĒāĻžāĻāύ) LinuxāĻāĻā§āϞā§āĻā§ āϝāĻĨāĻžāϏāĻŽā§āĻāĻŦ āĻāĻŽ āĻāĻžāϝāĻŧāĻāĻž āύā§āϝāĻŧ āĻāĻŽāύāĻāĻžāĻŦā§ āĻĄāĻŋāĻāĻžāĻāύ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§āĨ¤ āĻĢāϞā§, āĻāϤ⧠āĻāĻĒāύāĻžāϰ āĻĒā§āϰāϝāĻŧā§āĻāύā§āϝāĻŧ āĻāĻŋāĻā§ āĻĒā§āϰā§āĻā§āϰāĻžāĻŽ āύāĻžāĻ āĻĨāĻžāĻāϤ⧠āĻĒāĻžāϰā§āĨ¤
âāĻāύā§āĻā§āĻāύāĻžāϰ āύāĻŋāϰā§āĻŽāĻžāĻŖ, āĻā§āϝāĻžāĻāĻŋāĻ āĻāĻŦāĻ āĻāĻžāϞāĻžāύā§
āϞā§āĻāĻžāϞ āĻ
ā§āϝāĻžāϏā§āĻŽā§āĻŦāϞāĻŋ āĻ āϞāĻā§āĻā§āϰ āĻāύāĻā§āĻāύāĻžāϰ āĻĒāϰ⧠āĻāĻā§ DockerfileāĻāĻžāĻāĻā§āϞ⧠āĻŦā§āĻļ āϏāĻšāĻāĨ¤ āĻāĻĒāύāĻŋ āĻāĻŦāĻŋāĻāĻŋāĻā§ āĻĄāĻāĻžāϰ āĻšāĻžāĻŦā§ āĻĒā§āĻļ āĻāϰāĻžāϰ āĻāĻā§, āĻāĻĒāύāĻžāĻā§ āĻāĻāĻŋ āϏā§āĻĨāĻžāύā§āϝāĻŧāĻāĻžāĻŦā§ āĻĒāϰā§āĻā§āώāĻž āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤
â āϏāĻŽāĻžāĻŦā§āĻļ
āĻĒā§āϰāĻĨāĻŽā§ āĻāĻĒāύāĻžāĻā§ āϏāĻāĻā§āϰāĻš āĻāϰāϤ⧠āĻšāĻŦā§ , āĻāĻāĻāĻŋ āύāĻžāĻŽ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāϰ⧠āĻāĻŦāĻ āĻāĻā§āĻāĻŋāĻāĻāĻžāĻŦā§ āĻāĻāĻāĻŋ āĻā§āϝāĻžāĻ (āϝāĻĻāĻŋ āĻāĻāĻāĻŋ āĻā§āϝāĻžāĻ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āύāĻž āĻāϰāĻž āĻšāϝāĻŧ, āϤāĻžāĻšāϞ⧠āϏāĻŋāϏā§āĻā§āĻŽ āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧāĻāĻžāĻŦā§ āĻāĻŦāĻŋāϤ⧠āĻāĻāĻāĻŋ āĻā§āϝāĻžāĻ āĻŦāϰāĻžāĻĻā§āĻĻ āĻāϰāĻŦā§ latest).
# ХйОŅĐēа ОйŅаСа
docker build -t <image>:<tag> .āĻāĻ āĻāĻŽāĻžāύā§āĻĄāĻāĻŋ āĻāĻžāϞāĻžāύā§āϰ āĻĒāϰā§, āĻāĻĒāύāĻŋ āĻĄāĻāĻžāϰ āĻāĻŦāĻŋāĻāĻŋ āϤā§āϰāĻŋ āĻāϰāϤ⧠āĻĻā§āĻāϤ⧠āĻĒāĻžāϰā§āύāĨ¤
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 push āĻāĻāĻŋāĻā§ āĻĄāĻāĻžāϰ āĻšāĻžāĻŦ āϏāĻāĻā§āϰāĻšāϏā§āĻĨāϞ⧠āĻ ā§āϞ⧠āĻĻāĻŋāϤā§āĨ¤
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āϏāĻŦāĻāĻŋāĻā§ āĻ āĻŋāĻāĻ āĻžāĻ āĻĨāĻžāĻāϞā§, āĻāĻŦāĻŋāĻāĻŋ āĻĄāĻāĻžāϰ āĻšāĻžāĻŦā§ āĻĒāĻžāĻāϝāĻŧāĻž āϝāĻžāĻŦā§ āĻāĻŦāĻ āϏāĻšāĻā§āĻ āϏāĻžāϰā§āĻāĻžāϰ⧠āĻāĻĒāϞā§āĻĄ āĻāϰāĻž āϝāĻžāĻŦā§ āĻŦāĻž āĻ āύā§āϝ āĻĄā§āĻā§āϞāĻĒāĻžāϰāĻĻā§āϰ āĻāĻžāĻā§ āϏā§āĻĨāĻžāύāĻžāύā§āϤāϰ āĻāϰāĻž āϝāĻžāĻŦā§āĨ¤
āĻĒāϰāĻŦāϰā§āϤ⧠āĻĒāĻĻāĻā§āώā§āĻĒ
āĻāĻāύ āĻĒāϰā§āϝāύā§āϤ āĻāĻŽāϰāĻž āϝāĻžāĻāĻžāĻ āĻāϰā§āĻāĻŋ āϝ⧠āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύāĻāĻŋ, āĻāĻāĻāĻŋ āĻĄāĻāĻžāϰ āĻāύā§āĻā§āĻāύāĻžāϰ āĻāĻāĻžāϰā§, āϏā§āĻĨāĻžāύā§āϝāĻŧāĻāĻžāĻŦā§ āĻāϞāĻā§āĨ¤ āĻāĻŽāϰāĻž āĻāύā§āĻā§āĻāύāĻžāϰāĻāĻŋ āĻĄāĻāĻžāϰ āĻšāĻžāĻŦā§ āĻāĻĒāϞā§āĻĄ āĻāϰā§āĻāĻŋāĨ¤ āĻāϰ āĻ āϰā§āĻĨ āĻšāϞ āĻāĻŽāϰāĻž āĻāϤāĻŋāĻŽāϧā§āϝ⧠āĻāĻŽāĻžāĻĻā§āϰ āϞāĻā§āώā§āϝā§āϰ āĻĻāĻŋāĻā§ āĻā§āĻŦ āĻāĻžāϞ āĻ āĻā§āϰāĻāϤāĻŋ āĻāϰā§āĻāĻŋāĨ¤ āĻāĻāύ āĻāĻŽāĻžāĻĻā§āϰ āĻāϰāĻ āĻĻā§āĻāĻŋ āĻĒā§āϰāĻļā§āύā§āϰ āϏāĻŽāĻžāϧāĻžāύ āĻāϰāϤ⧠āĻšāĻŦā§:
- āĻā§āĻĄ āĻĒāϰā§āĻā§āώāĻž āĻāĻŦāĻ āϏā§āĻĨāĻžāĻĒāύā§āϰ āĻāύā§āϝ āĻāĻāĻāĻŋ CI āĻā§āϞ āϏā§āĻ āĻāĻĒ āĻāϰāĻž āĻšāĻā§āĻā§āĨ¤
- āĻĒā§āϰā§āĻĄāĻžāĻāĻļāύ āϏāĻžāϰā§āĻāĻžāϰ āϏā§āĻ āĻāĻĒ āĻāϰāĻž āĻšāĻā§āĻā§ āϝāĻžāϤ⧠āĻāĻāĻŋ āĻāĻŽāĻžāĻĻā§āϰ āĻā§āĻĄ āĻĄāĻžāĻāύāϞā§āĻĄ āĻāĻŦāĻ āĻāĻžāϞāĻžāϤ⧠āĻĒāĻžāϰā§āĨ¤
āĻāĻŽāĻžāĻĻā§āϰ āĻā§āώā§āϤā§āϰā§, āĻāĻŽāϰāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŋ . āϏāĻžāϰā§āĻāĻžāϰ āĻšāĻŋāϏāĻžāĻŦā§ - .
āĻāĻāĻŋ āĻāϞā§āϞā§āĻ āĻāϰāĻž āĻāĻāĻŋāϤ āϝ⧠āĻāĻāĻžāύ⧠āĻāĻĒāύāĻŋ āĻĒāϰāĻŋāώā§āĻŦāĻžāĻā§āϞāĻŋāϰ āĻāϰā§āĻāĻāĻŋ āϏāĻāĻŽāĻŋāĻļā§āϰāĻŖ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύāĨ¤ āĻāĻĻāĻžāĻšāϰāĻŖāϏā§āĻŦāϰā§āĻĒ, Travis CI āĻāϰ āĻĒāϰāĻŋāĻŦāϰā§āϤā§, āĻāĻĒāύāĻŋ CircleCI āĻŦāĻž Github āĻ ā§āϝāĻžāĻāĻļāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύāĨ¤ āĻāĻŦāĻ DigitalOcean āĻāϰ āĻĒāϰāĻŋāĻŦāϰā§āϤ⧠- AWS āĻŦāĻž LinodeāĨ¤
āĻāĻŽāϰāĻž Travis CI āĻāϰ āϏāĻžāĻĨā§ āĻāĻžāĻ āĻāϰāĻžāϰ āϏāĻŋāĻĻā§āϧāĻžāύā§āϤ āύāĻŋāϝāĻŧā§āĻāĻŋ, āĻāĻŦāĻ āĻāĻŽāĻŋ āĻāϤāĻŋāĻŽāϧā§āϝ⧠āĻāĻ āĻĒāϰāĻŋāώā§āĻŦāĻžāϤ⧠āĻāĻŋāĻā§ āĻāύāĻĢāĻŋāĻāĻžāϰ āĻāϰā§āĻāĻŋāĨ¤ āĻ āϤāĻāĻŦ, āĻāĻāύ āĻāĻŽāĻŋ āĻā§āĻāĻžāĻŦā§ āĻāĻāĻŋāĻā§ āĻāĻžāĻā§āϰ āĻāύā§āϝ āĻĒā§āϰāϏā§āϤā§āϤ āĻāϰāĻŦ āϏ⧠āϏāĻŽā§āĻĒāϰā§āĻā§ āϏāĻāĻā§āώā§āĻĒā§ āĻāĻĨāĻž āĻŦāϞāĻŦāĨ¤
āĻā§āϰā§āϝāĻžāĻāĻŋāϏ āϏāĻŋāĻāĻ
āĻā§āϰā§āϝāĻžāĻāĻŋāϏ āϏāĻŋāĻāĻ āĻā§āĻĄ āĻĒāϰā§āĻā§āώāĻž āĻāĻŦāĻ āϏā§āĻĨāĻžāĻĒāύā§āϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āϏāϰāĻā§āĻāĻžāĻŽāĨ¤ āĻāĻŽāĻŋ āĻā§āϰā§āϝāĻžāĻāĻŋāϏ āϏāĻŋāĻāĻ āϏā§āĻĨāĻžāĻĒāύā§āϰ āĻāĻāĻŋāϞāϤāĻžāϝāĻŧ āϝā§āϤ⧠āĻāĻžāĻ āύāĻž, āϝā§āĻšā§āϤ⧠āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻĒā§āϰāĻāϞā§āĻĒ āĻ āύāύā§āϝ, āĻāĻŦāĻ āĻāĻāĻŋ āĻā§āĻŦ āĻŦā§āĻļāĻŋ āϏā§āĻŦāĻŋāϧāĻž āύāĻŋāϝāĻŧā§ āĻāϏāĻŦā§ āύāĻžāĨ¤ āĻāĻŋāύā§āϤ⧠āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻā§āϰā§āϝāĻžāĻāĻŋāϏ āϏāĻŋāĻāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻžāϰ āϏāĻŋāĻĻā§āϧāĻžāύā§āϤ āύā§āύ āϤāĻŦā§ āĻāĻĒāύāĻžāĻā§ āĻļā§āϰ⧠āĻāϰāĻžāϰ āĻāύā§āϝ āĻāĻŽāĻŋ āĻŽā§āϞāĻŋāĻ āĻŦāĻŋāώāϝāĻŧāĻā§āϞāĻŋ āĻāĻāĻžāϰ āĻāϰāĻŦāĨ¤ āĻāĻĒāύāĻŋ Travis CI, CircleCI, Jenkins āĻŦāĻž āĻ āύā§āϝ āĻāĻŋāĻā§ āĻāϝāĻŧāύ āĻāϰā§āύ āύāĻž āĻā§āύ, āĻ āύā§āϰā§āĻĒ āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ āĻĒāĻĻā§āϧāϤāĻŋ āϏāϰā§āĻŦāϤā§āϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāĻŦā§āĨ¤
āĻā§āϰā§āϝāĻžāĻāĻŋāϏ āϏāĻŋāĻāĻ āĻĻāĻŋāϝāĻŧā§ āĻļā§āϰ⧠āĻāϰāϤā§, āϝāĻžāύ āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻ ā§āϝāĻžāĻāĻžāĻāύā§āĻ āϤā§āϰāĻŋ āĻāϰā§āύāĨ¤ āϤāĻžāϰāĻĒāϰ⧠āĻāĻĒāύāĻžāϰ āĻāĻŋāĻāĻšāĻžāĻŦ āĻ ā§āϝāĻžāĻāĻžāĻāύā§āĻā§āϰ āϏāĻžāĻĨā§ āĻā§āϰā§āϝāĻžāĻāĻŋāϏ āϏāĻŋāĻāĻ āĻāĻā§āĻā§āϤ āĻāϰā§āύāĨ¤ āϏāĻŋāϏā§āĻā§āĻŽ āϏā§āĻ āĻāĻĒ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ, āĻāĻĒāύāĻžāĻā§ āϏā§āĻ āϰāĻŋāĻĒā§āĻāĻŋāĻāϰāĻŋāĻāĻŋ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāϰāϤ⧠āĻšāĻŦā§ āϝāĻžāϰ āϏāĻžāĻĨā§ āĻāĻĒāύāĻŋ āĻāĻžāĻ āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧ āĻāϰāϤ⧠āĻāĻžāύ āĻāĻŦāĻ āĻāĻāĻŋāϤ⧠āĻ ā§āϝāĻžāĻā§āϏā§āϏ āϏāĻā§āώāĻŽ āĻāϰāϤ⧠āĻāĻžāύāĨ¤ (āĻāĻŽāĻŋ āĻāĻŋāĻāĻšāĻžāĻŦ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŋ, āϤāĻŦā§ āĻāĻŽāĻŋ āύāĻŋāĻļā§āĻāĻŋāϤ āϝ⧠āĻā§āϰā§āϝāĻžāĻāĻŋāϏ āϏāĻŋāĻāĻ āĻŦāĻŋāĻāĻŦāĻžāĻā§āĻ, āĻāĻŦāĻ āĻāĻŋāĻāϞā§āϝāĻžāĻŦ āĻāĻŦāĻ āĻ āύā§āϝāĻžāύā§āϝ āĻ āύā§āϰā§āĻĒ āĻĒāϰāĻŋāώā§āĻŦāĻžāĻā§āϞāĻŋāϰ āϏāĻžāĻĨā§ āĻāĻā§āĻā§āϤ āĻšāϤ⧠āĻĒāĻžāϰā§)āĨ¤
āĻĒā§āϰāϤāĻŋāĻŦāĻžāϰ āĻā§āϰā§āϝāĻžāĻāĻŋāϏ āϏāĻŋāĻāĻ āĻāĻžāϞ⧠āĻšāϞā§, āĻāĻāĻāĻŋ āϏāĻžāϰā§āĻāĻžāϰ āĻāĻžāϞ⧠āĻāϰāĻž āĻšāϝāĻŧ āϝāĻž āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ āĻĢāĻžāĻāϞ⧠āĻāϞā§āϞā§āĻāĻŋāϤ āĻāĻŽāĻžāύā§āĻĄāĻā§āϞāĻŋ āĻāĻžāϰā§āϝāĻāϰ āĻāϰā§, āϝāĻžāϰ āĻŽāϧā§āϝ⧠āϏāĻāĻļā§āϞāĻŋāώā§āĻ āϏāĻāĻā§āϰāĻšāϏā§āĻĨāϞ āĻļāĻžāĻāĻžāĻā§āϞāĻŋ āϏā§āĻĨāĻžāĻĒāύ āĻāϰāĻž āĻšāϝāĻŧāĨ¤
âāĻāĻžāĻāϰā§āϰ āĻā§āĻŦāύāĻāĻā§āϰ
āĻā§āϰā§āϝāĻžāĻāĻŋāϏ āϏāĻŋāĻāĻ āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ āĻĢāĻžāĻāϞ āĻŦāϞāĻž āĻšāϝāĻŧ .travis.yml āĻāĻŦāĻ āĻĒā§āϰāĻāϞā§āĻĒ āϰā§āĻ āĻĄāĻŋāϰā§āĻā§āĻāϰāĻŋāϤ⧠āϏāĻāϰāĻā§āώāĻŋāϤ, āĻāĻā§āύā§āĻā§āϰ āϧāĻžāϰāĻŖāĻž āϏāĻŽāϰā§āĻĨāύ āĻāϰ⧠āĻāĻžāĻ. āĻāĻ āĻāĻāύāĻžāĻā§āϞāĻŋ āϝ⧠āĻā§āϰāĻŽāĻžāύā§āϏāĻžāϰ⧠āϏāĻāĻāĻāĻŋāϤ āĻšāϝāĻŧ āϏ⧠āĻ
āύā§āϏāĻžāϰ⧠āϤāĻžāϞāĻŋāĻāĻžāĻā§āĻā§āϤ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§:
apt addonscache componentsbefore_installinstallbefore_scriptscriptbefore_cacheafter_success иĐģи after_failurebefore_deploydeployafter_deployafter_script
âāĻĒāϰā§āĻā§āώāĻž
āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ āĻĢāĻžāĻāϞ⧠āĻāĻŽāĻŋ āϏā§āĻĨāĻžāύā§āϝāĻŧ āĻā§āϰā§āϝāĻžāĻāĻŋāϏ āϏāĻŋāĻāĻ āϏāĻžāϰā§āĻāĻžāϰ āĻāύāĻĢāĻŋāĻāĻžāϰ āĻāϰāϤ⧠āϝāĻžāĻā§āĻāĻŋāĨ¤ āĻāĻŽāĻŋ āĻāĻžāώāĻž āĻšāĻŋāϏāĻžāĻŦā§ āύā§āĻĄ 12 āύāĻŋāϰā§āĻŦāĻžāĻāύ āĻāϰā§āĻāĻŋ āĻāĻŦāĻ āϏāĻŋāϏā§āĻā§āĻŽāĻā§ āĻĄāĻāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻžāϰ āĻāύā§āϝ āĻĒā§āϰāϝāĻŧā§āĻāύā§āϝāĻŧ āύāĻŋāϰā§āĻāϰāϤāĻžāĻā§āϞāĻŋ āĻāύāϏā§āĻāϞ āĻāϰāϤ⧠āĻŦāϞā§āĻāĻŋāĨ¤
āϤāĻžāϞāĻŋāĻāĻžāĻā§āĻā§āϤ āϏāĻŦāĻāĻŋāĻā§ .travis.yml, āϰāĻŋāĻĒā§āĻāĻŋāĻāϰāĻŋāϰ āϏāĻŽāϏā§āϤ āĻļāĻžāĻāĻžāϝāĻŧ āϏāĻŽāϏā§āϤ āĻĒā§āϞ āĻ
āύā§āϰā§āϧ āĻāϰāĻž āĻšāϞ⧠āϤāĻž āĻāĻžāϰā§āϝāĻāϰ āĻāϰāĻž āĻšāĻŦā§, āϝāĻĻāĻŋ āύāĻž āĻ
āύā§āϝāĻĨāĻžāϝāĻŧ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻĻāϰāĻāĻžāϰ⧠āĻŦā§āĻļāĻŋāώā§āĻā§āϝ āĻāĻžāϰāĻŖ āĻāϰ āĻŽāĻžāύ⧠āĻšāϞ āϝ⧠āĻāĻŽāϰāĻž āϏāĻāĻā§āϰāĻšāϏā§āĻĨāϞ⧠āĻāϏāĻž āϏāĻŽāϏā§āϤ āĻā§āĻĄ āĻĒāϰā§āĻā§āώāĻž āĻāϰāϤ⧠āĻĒāĻžāϰāĻŋāĨ¤ āĻāĻāĻŋ āĻāĻĒāύāĻžāĻā§ āĻāĻžāύāϤ⧠āĻĻā§āϝāĻŧ āϝ⧠āĻā§āĻĄāĻāĻŋ āĻļāĻžāĻāĻžāϝāĻŧ āϞā§āĻāĻžāϰ āĻāύā§āϝ āĻĒā§āϰāϏā§āϤā§āϤ āĻāĻŋāύāĻžāĨ¤ master, āĻāĻŦāĻ āĻāĻāĻŋ āĻĒā§āϰāĻāϞā§āĻĒ āύāĻŋāϰā§āĻŽāĻžāĻŖ āĻĒā§āϰāĻā§āϰāĻŋāϝāĻŧāĻž āĻāĻā§āĻ āĻāϰāĻŦā§ āĻāĻŋāύāĻžāĨ¤ āĻāĻ āĻŦāĻŋāĻļā§āĻŦāĻŦā§āϝāĻžāĻĒā§ āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύā§, āĻāĻŽāĻŋ āϏā§āĻĨāĻžāύā§āϝāĻŧāĻāĻžāĻŦā§ āϏāĻŦāĻāĻŋāĻā§ āĻāύāϏā§āĻāϞ āĻāϰāĻŋ, āĻĒāĻāĻā§āĻŽāĻŋāϤ⧠āĻāϝāĻŧā§āĻŦāĻĒā§āϝāĻžāĻ āĻĄā§āĻ āϏāĻžāϰā§āĻāĻžāϰ āĻāĻžāϞāĻžāĻ (āĻāĻāĻŋ āĻāĻŽāĻžāϰ āĻāϰā§āĻŽāĻĒā§āϰāĻŦāĻžāĻšā§āϰ āĻāĻāĻāĻŋ āĻŦā§āĻļāĻŋāώā§āĻā§āϝ), āĻāĻŦāĻ āĻĒāϰā§āĻā§āώāĻž āĻāĻžāϞāĻžāĻāĨ¤
āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻāĻžāύ āϝ⧠āĻāĻĒāύāĻžāϰ āϏāĻāĻā§āϰāĻšāϏā§āĻĨāϞ⧠āĻĒāϰā§āĻā§āώāĻž āĻāĻāĻžāϰā§āĻ āύāĻŋāϰā§āĻĻā§āĻļ āĻāϰ⧠āĻŦā§āϝāĻžāĻ āĻĒā§āϰāĻĻāϰā§āĻļāύ āĻāϰāĻž āĻšā§āĻ, āĻāĻ āϤāĻĨā§āϝ āϏāĻāĻā§āϰāĻš āĻ āĻĒā§āϰāĻĻāϰā§āĻļāύā§āϰ āĻāύā§āϝ āĻāĻĒāύāĻŋ Jest, Travis CI āĻāĻŦāĻ Coveralls āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻžāϰ āĻāύā§āϝ āϏāĻāĻā§āώāĻŋāĻĒā§āϤ āύāĻŋāϰā§āĻĻā§āĻļāĻžāĻŦāϞ⧠āĻĒā§āϤ⧠āĻĒāĻžāϰā§āύāĨ¤
āϤāĻžāĻ āĻĢāĻžāĻāϞā§āϰ āĻŦāĻŋāώāϝāĻŧāĻŦāϏā§āϤ⧠āĻāĻāĻžāύ⧠.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āĻāĻāĻžāύā§āĻ āϰāĻŋāĻĒā§āĻāĻŋāĻāϰāĻŋāϰ āϏāĻŽāϏā§āϤ āĻļāĻžāĻāĻžāϰ āĻāύā§āϝ āĻāĻŦāĻ āĻĒā§āϞ āĻ āύā§āϰā§āϧā§āϰ āĻāύā§āϝ āϏāĻā§āĻāĻžāϞāĻŋāϤ āĻā§āϰāĻŋāϝāĻŧāĻžāĻā§āϞāĻŋ āĻļā§āώ āĻšāϝāĻŧāĨ¤
â āϏā§āĻĨāĻžāĻĒāύāĻž
āϏāĻŽāϏā§āϤ āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧ āĻĒāϰā§āĻā§āώāĻž āϏāĻĢāϞāĻāĻžāĻŦā§ āϏāĻŽā§āĻĒāύā§āύ āĻšāϝāĻŧā§āĻā§ āĻāĻ āĻ
āύā§āĻŽāĻžāύā§āϰ āĻāĻĒāϰ āĻāĻŋāϤā§āϤāĻŋ āĻāϰā§, āĻāĻŽāϰāĻž āĻāϰāϤ⧠āĻĒāĻžāϰāĻŋ, āϝāĻž āĻāĻā§āĻāĻŋāĻ, āĻā§āĻĄāĻāĻŋ āĻĒā§āϰā§āĻĄāĻžāĻāĻļāύ āϏāĻžāϰā§āĻāĻžāϰ⧠āϏā§āĻĨāĻžāĻĒāύ āĻāϰāϤ⧠āĻĒāĻžāϰāĻŋāĨ¤ āϝā§āĻšā§āϤ⧠āĻāĻŽāϰāĻž āĻāĻāĻŋ āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āĻļāĻžāĻāĻž āĻĨā§āĻā§ āĻā§āĻĄā§āϰ āĻāύā§āϝ āĻāϰāϤ⧠āĻāĻžāĻ master, āĻāĻŽāϰāĻž āϏā§āĻĨāĻžāĻĒāύāĻžāϰ āϏā§āĻāĻŋāĻāϏ⧠āϏāĻŋāϏā§āĻā§āĻŽāĻā§ āϝāĻĨāĻžāϝāĻĨ āύāĻŋāϰā§āĻĻā§āĻļāύāĻž āĻĻāĻŋāĻāĨ¤ āĻāĻŽāϰāĻž āĻāĻĒāύāĻžāϰ āĻĒā§āϰāĻā§āĻā§āĻā§ āĻĒāϰāĻŦāϰā§āϤā§āϤ⧠āϝ⧠āĻā§āĻĄāĻāĻŋ āĻĻā§āĻāĻŦ āϏā§āĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻžāϰ āĻā§āώā§āĻāĻž āĻāϰāĻžāϰ āĻāĻā§, āĻāĻŽāĻŋ āĻāĻĒāύāĻžāĻā§ āϏāϤāϰā§āĻ āĻāϰāϤ⧠āĻāĻžāĻ āϝ⧠āĻāĻĒāύāĻžāϰ āĻāĻžāĻā§ āĻ
āĻŦāĻļā§āϝāĻ āĻāĻāĻāĻŋ āĻĒā§āϰāĻā§āϤ āϏā§āĻā§āϰāĻŋāĻĒā§āĻ āĻĨāĻžāĻāϤ⧠āĻšāĻŦā§ āϝā§āĻāĻŋ āϏā§āĻĨāĻžāĻĒāύā§āϰ āĻāύā§āϝ āĻŦāϞāĻž āĻšāϝāĻŧāĨ¤
deploy:
# ХОйŅаŅŅ Docker-ĐēĐžĐŊŅĐĩĐšĐŊĐĩŅ Đ¸ ĐžŅĐŋŅавиŅŅ ĐĩĐŗĐž ĐŊа Docker Hub
provider: script
script: bash deploy.sh
on:
branch: masterāϏā§āĻĨāĻžāĻĒāύāĻžāϰ āϏā§āĻā§āϰāĻŋāĻĒā§āĻ āĻĻā§āĻāĻŋ āϏāĻŽāϏā§āϝāĻžāϰ āϏāĻŽāĻžāϧāĻžāύ āĻāϰā§:
- āĻāĻāĻāĻŋ CI āĻā§āϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻāĻŽā§āĻāĻāĻŋāĻā§ āĻĄāĻāĻžāϰ āĻšāĻžāĻŦā§ āϤā§āϰāĻŋ āĻāϰā§āύ, āĻā§āϝāĻžāĻ āĻāϰā§āύ āĻāĻŦāĻ āĻĒāĻžāĻ āĻžāύ (āĻāĻŽāĻžāĻĻā§āϰ āĻā§āώā§āϤā§āϰā§, āĻā§āϰā§āϝāĻžāĻāĻŋāϏ āϏāĻŋāĻāĻ)āĨ¤
- āϏāĻžāϰā§āĻāĻžāϰ⧠āĻāĻŋāϤā§āϰāĻāĻŋ āϞā§āĻĄ āĻāϰāĻž, āĻĒā§āϰāĻžāύ⧠āϧāĻžāϰāĻāĻāĻŋ āĻŦāύā§āϧ āĻāϰāĻž āĻāĻŦāĻ āĻāĻāĻāĻŋ āύāϤā§āύ āĻļā§āϰ⧠āĻāϰāĻž (āĻāĻŽāĻžāĻĻā§āϰ āĻā§āώā§āϤā§āϰā§, āϏāĻžāϰā§āĻāĻžāϰāĻāĻŋ DigitalOcean āĻĒā§āϞā§āϝāĻžāĻāĻĢāϰā§āĻŽā§ āĻāϞā§)āĨ¤
āĻĒā§āϰāĻĨāĻŽā§, āĻāĻĒāύāĻžāĻā§ āĻĄāĻāĻžāϰ āĻšāĻžāĻŦā§ āĻāĻŽā§āĻ āϤā§āϰāĻŋ, āĻā§āϝāĻžāĻāĻŋāĻ āĻāĻŦāĻ āĻĒā§āĻļ āĻāϰāĻžāϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧ āĻĒā§āϰāĻā§āϰāĻŋāϝāĻŧāĻž āϏā§āĻ āĻāĻĒ āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤ āĻāĻŽā§āĻ āĻāĻŦāĻ āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧ āϞāĻāĻāύāĻā§āϞāĻŋāϤ⧠āĻ āύāύā§āϝ āĻā§āϝāĻžāĻ āĻŦāϰāĻžāĻĻā§āĻĻ āĻāϰāĻžāϰ āĻāύā§āϝ āĻāĻŽāĻžāĻĻā§āϰ āĻāĻāĻāĻŋ āĻā§āĻļāϞ āĻĒā§āϰāϝāĻŧā§āĻāύ āĻāĻžāĻĄāĻŧāĻž āĻāĻāĻŋ āĻāĻŽāϰāĻž āĻāϤāĻŋāĻŽāϧā§āϝ⧠āĻŽā§āϝāĻžāύā§āϝāĻŧāĻžāϞāĻŋ āϝāĻž āĻāϰā§āĻāĻŋ āϤāĻžāϰ āϏāĻžāĻĨā§ āĻā§āĻŦ āĻŽāĻŋāϞāĨ¤ āĻĄāĻŋāĻĒā§āϞāϝāĻŧāĻŽā§āύā§āĻ āϏā§āĻā§āϰāĻŋāĻĒā§āĻā§āϰ āĻāĻŋāĻā§ āĻŦāĻŋāĻŦāϰāĻŖ āϝā§āĻŽāύ āĻā§āϝāĻžāĻāĻŋāĻ āĻā§āĻļāϞ, āϞāĻāĻāύ, āĻāϏāĻāϏāĻāĻāĻ āĻā§ āĻāύāĻā§āĻĄāĻŋāĻ, āĻāϏāĻāϏāĻāĻāĻ āϏāĻāϝā§āĻ āϏā§āĻĨāĻžāĻĒāύ⧠āĻāĻŽāĻžāϰ āĻ āϏā§āĻŦāĻŋāϧāĻž āĻšāϝāĻŧā§āĻāĻŋāϞāĨ¤ āĻāĻŋāύā§āϤ⧠āϏā§āĻāĻžāĻā§āϝāĻŦāĻļāϤ āĻāĻŽāĻžāϰ āĻŦāϝāĻŧāĻĢā§āϰā§āύā§āĻĄ āĻŦāĻžāĻļā§āϰ āϏāĻžāĻĨā§ āĻ āύā§āĻ āĻāĻžāϞā§, āϝā§āĻŽāύāĻāĻž āĻ āύā§āϝ āĻ āύā§āĻ āĻāĻŋāĻā§āϰ āϏāĻžāĻĨā§āĨ¤ āϤāĻŋāύāĻŋ āĻāĻŽāĻžāĻā§ āĻāĻ āϏā§āĻā§āϰāĻŋāĻĒā§āĻ āϞāĻŋāĻāϤ⧠āϏāĻžāĻšāĻžāϝā§āϝ āĻāϰā§āĻā§āύāĨ¤
āϏā§āϤāϰāĻžāĻ, āϏā§āĻā§āϰāĻŋāĻĒā§āĻā§āϰ āĻĒā§āϰāĻĨāĻŽ āĻ
āĻāĻļāĻāĻŋ āĻĄāĻāĻžāϰ āĻšāĻžāĻŦā§ āĻāĻŦāĻŋāĻāĻŋ āĻāĻĒāϞā§āĻĄ āĻāϰāĻā§āĨ¤ āĻāĻāĻŋ āĻāϰāĻž āĻŦā§āĻļ āϏāĻšāĻāĨ¤ āĻāĻŽāĻŋ āϝ⧠āĻā§āϝāĻžāĻāĻŋāĻ āϏā§āĻāĻŋāĻŽāĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āĻāĻŋ āϤāĻžāϤ⧠āĻāĻāĻāĻŋ āĻāĻŋāĻ āĻšā§āϝāĻžāĻļ āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻāĻŋāĻ āĻā§āϝāĻžāĻ āĻāĻāϤā§āϰāĻŋāϤ āĻāϰāĻž āĻāĻĄāĻŧāĻŋāϤ, āϝāĻĻāĻŋ āĻāĻāĻāĻŋ āĻŦāĻŋāĻĻā§āϝāĻŽāĻžāύ āĻĨāĻžāĻā§āĨ¤ āĻāĻāĻŋ āύāĻŋāĻļā§āĻāĻŋāϤ āĻāϰ⧠āϝ⧠āĻā§āϝāĻžāĻāĻāĻŋ āĻ
āύāύā§āϝ āĻāĻŦāĻ āĻāĻāĻŋ āϝā§āĻāĻŋāϰ āĻāĻĒāϰ āĻāĻŋāϤā§āϤāĻŋ āĻāϰ⧠āϏā§āĻāĻŋāĻā§ āϏāύāĻžāĻā§āϤ āĻāϰāĻž āϏāĻšāĻ āĻāϰ⧠āϤā§āϞā§āĨ¤ DOCKER_USERNAME и DOCKER_PASSWORD āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻĒāϰāĻŋāĻŦā§āĻļā§āϰ āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞ āϝāĻž āĻā§āϰā§āϝāĻžāĻāĻŋāϏ āϏāĻŋāĻāĻ āĻāύā§āĻāĻžāϰāĻĢā§āϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āϏā§āĻ āĻāϰāĻž āϝā§āϤ⧠āĻĒāĻžāϰā§āĨ¤ 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} āϏā§āĻā§āϰāĻŋāĻĒā§āĻā§āϰ āĻĻā§āĻŦāĻŋāϤā§āϝāĻŧ āĻ
āĻāĻļāĻāĻŋ āĻā§ āĻšāĻŦā§ āϤāĻž āϏāĻŽā§āĻĒā§āϰā§āĻŖāϰā§āĻĒā§ āύāĻŋāϰā§āĻāϰ āĻāϰ⧠āĻāĻĒāύāĻŋ āĻā§āύ āĻšā§āϏā§āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻā§āύ āĻāĻŦāĻ āĻāĻāĻŋāϰ āϏāĻžāĻĨā§ āϏāĻāϝā§āĻāĻāĻŋ āĻā§āĻāĻžāĻŦā§ āϏāĻāĻāĻ āĻŋāϤ āĻšāϝāĻŧā§āĻā§ āϤāĻžāϰ āĻāĻĒāϰāĨ¤ āĻāĻŽāĻžāϰ āĻā§āώā§āϤā§āϰā§, āϝā§āĻšā§āϤ⧠āĻāĻŽāĻŋ āĻĄāĻŋāĻāĻŋāĻāĻžāϞ āĻŽāĻšāĻžāϏāĻžāĻāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŋ, āĻāĻŽāĻŋ āϏāĻžāϰā§āĻāĻžāϰā§āϰ āϏāĻžāĻĨā§ āϏāĻāϝā§āĻ āĻāϰāϤ⧠āĻāĻŽāĻžāύā§āĻĄāĻā§āϞāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŋ . AWS āĻāϰ āϏāĻžāĻĨā§ āĻāĻžāĻ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ, āĻāĻāĻāĻŋāϞāĻŋāĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāĻŦā§ aws, āĻāĻŦāĻ āϤāĻžāĻāĨ¤
āϏāĻžāϰā§āĻāĻžāϰāĻāĻŋ āϏā§āĻ āĻāĻĒ āĻāϰāĻž āϤā§āĻŽāύ āĻāĻ āĻŋāύ āĻāĻŋāϞ āύāĻžāĨ¤ āĻāĻŽāĻŋ āĻŦā§āϏ āĻāĻŽā§āĻā§āϰ āĻāĻĒāϰ āĻāĻŋāϤā§āϤāĻŋ āĻāϰ⧠āĻāĻāĻāĻŋ āĻĄā§āϰāĻĒāϞā§āĻ āϤā§āϰāĻŋ āĻāϰā§āĻāĻŋāĨ¤ āĻāϞā§āϞā§āĻā§āϝ āϝā§, āĻāĻŽāĻŋ āϝ⧠āϏāĻŋāϏā§āĻā§āĻŽāĻāĻŋ āĻŦā§āĻā§ āύāĻŋāϝāĻŧā§āĻāĻŋ āϤāĻžāϤ⧠āĻāĻāĻŦāĻžāϰ āĻŽā§āϝāĻžāύā§āϝāĻŧāĻžāϞāĻŋ āĻĄāĻāĻžāϰ āĻāύāϏā§āĻāϞ āĻāĻŦāĻ āĻāĻāĻŦāĻžāϰ āĻŽā§āϝāĻžāύā§āϝāĻŧāĻžāϞāĻŋ āĻāĻžāϞ⧠āĻāϰāĻžāϰ āĻĒā§āϰāϝāĻŧā§āĻāύ āĻšāϝāĻŧāĨ¤ āĻāĻŽāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āĻāĻŋ Ubuntu ā§§ā§Ž.ā§Ļā§Ē, āϏā§āϤāϰāĻžāĻ āĻāĻĒāύāĻŋāĻ āϝāĻĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ 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āĻāĻŋāĻā§ āĻāĻŋāύāĻŋāϏ āĻŽāύā§āϝā§āĻ āĻĻāĻŋāϤā§
āĻāĻāĻž āϏāĻŽā§āĻāĻŦ āϝ⧠āĻāĻĒāύāĻŋ āϝāĻāύ Travis CI āĻĨā§āĻā§ SSH āĻāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āϏāĻžāϰā§āĻāĻžāϰā§āϰ āϏāĻžāĻĨā§ āϏāĻāϝā§āĻ āĻāϰāĻŦā§āύ, āĻāĻĒāύāĻŋ āĻāĻāĻāĻŋ āϏāϤāϰā§āĻāϤāĻž āĻĻā§āĻāϤ⧠āĻĒāĻžāĻŦā§āύ āϝāĻž āĻāĻĒāύāĻžāĻā§ āĻāύāϏā§āĻāϞā§āĻļāύ āĻāĻžāϞāĻŋāϝāĻŧā§ āϝāĻžāĻāϝāĻŧāĻž āĻĨā§āĻā§ āĻŦāĻžāϧāĻž āĻĻā§āĻŦā§ āĻāĻžāϰāĻŖ āϏāĻŋāϏā§āĻā§āĻŽ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻĒā§āϰāϤāĻŋāĻā§āϰāĻŋāϝāĻŧāĻžāϰ āĻāύā§āϝ āĻ āĻĒā§āĻā§āώāĻž āĻāϰāĻŦā§āĨ¤
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)? āĻāĻŽāĻŋ āĻļāĻŋāĻā§āĻāĻŋ āϝ⧠āĻāĻāĻāĻŋ āϏā§āĻā§āϰāĻŋāĻ āĻā§āĻā§ āĻŦā§āϏ 64-āĻ āĻāύāĻā§āĻĄ āĻāϰāĻž āϝā§āϤ⧠āĻĒāĻžāϰ⧠āϝāĻžāϤ⧠āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻĢāϰā§āĻŽā§ āϏāĻāϰāĻā§āώāĻŖ āĻāϰāĻž āϝāĻžāϝāĻŧ āϝāĻžāϤ⧠āĻāĻāĻŋ āϏā§āĻŦāĻŋāϧāĻžāĻāύāĻāĻāĻžāĻŦā§ āĻāĻŦāĻ āύāĻŋāϰā§āĻāϰāϝā§āĻā§āϝāĻāĻžāĻŦā§ āĻāĻžāĻ āĻāϰāĻž āϝāĻžāϝāĻŧāĨ¤ āĻāύāϏā§āĻāϞā§āĻļāύ āĻĒāϰā§āϝāĻžāϝāĻŧā§, āĻāĻĒāύāĻŋ āϏāϰā§āĻŦāĻāύā§āύ āĻā§āĻāĻŋ āĻĄāĻŋāĻā§āĻĄ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ āĻāĻŦāĻ āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻĢāĻžāĻāϞ⧠āϞāĻŋāĻāϤ⧠āĻĒāĻžāϰā§āύ 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== you@example.com" | base64āĻāĻŦāĻ āĻāĻāĻžāύ⧠āĻāĻāĻŋ āĻāĻŋ āĻāϤā§āĻĒāĻžāĻĻāύ āĻāϰ⧠- āĻāĻāĻāĻŋ āĻŦā§āϏ64 āĻāύāĻā§āĻĄā§āĻĄ āϏā§āĻā§āϰāĻŋāĻ:
MTIzLjQ1LjY3Ljg5IHNzaC1yc2EgQUFBQUIzTnphQzF5YzJFQUFBQUJJd0FBQVFFQWtsT1Vwa0RIcmZIWTE3U2JybVRJcE5MVEdLOVRqb20vQldEU1UKR1BsK25hZnpsSERUWVc3aGRJNHlaNWV3MThKSDRKVzlqYmhVRnJ2aVF6TTd4bEVMRVZmNGg5bEZYNVFWa2JQcHBTd2cwY2RhMwpQYnY3a09kSi9NVHlCbFdYRkNSK0hBbzNGWFJpdEJxeGlYMW5LaFhwSEFac01jaUxxOFY2UmpzTkFRd2RzZE1GdlNsVksvN1hBCnQzRmFvSm9Bc25jTTFROXg1KzNWMFd3NjgvZUlGbWIxenVVRmxqUUpLcHJyWDg4WHlwTkR2allOYnk2dncvUGIwcndlcnQvRW4KbVorQVc0T1pQblRQSTg5WlBtVk1MdWF5ckQyY0U4NlovaWw4YitndzNyMysxbkthdG1Ja2puMnNvMWQwMVFyYVRsTXFWU3NieApOclJGaTl3cmYrTTdRPT0geW91QGV4YW1wbGUuY29tCg==āĻāĻāĻžāύ⧠āĻāĻĒāϰ⧠āĻāϞā§āϞāĻŋāĻāĻŋāϤ āĻāĻŽāĻžāύā§āĻĄ āĻāĻā§
install:
- echo < ĐŋŅĐąĐģиŅĐŊŅĐš ĐēĐģŅŅ, СаĐēОдиŅОваĐŊĐŊŅĐš в base64> | base64 -d >> $HOME/.ssh/known_hostsāϏāĻāϝā§āĻ āϏā§āĻĨāĻžāĻĒāύ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻāĻāĻ āĻĒāĻĻā§āϧāϤāĻŋ āĻāĻāĻāĻŋ āĻŦā§āϝāĻā§āϤāĻŋāĻāϤ āĻā§ āĻĻāĻŋāϝāĻŧā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āϝā§āϤ⧠āĻĒāĻžāϰā§, āϝā§āĻšā§āϤ⧠āϏāĻžāϰā§āĻāĻžāϰ āĻ ā§āϝāĻžāĻā§āϏā§āϏ āĻāϰāĻžāϰ āĻāύā§āϝ āĻāĻĒāύāĻžāϰ āĻāĻāĻāĻŋ āĻŦā§āϝāĻā§āϤāĻŋāĻāϤ āĻā§ āĻĒā§āϰāϝāĻŧā§āĻāύ āĻšāϤ⧠āĻĒāĻžāϰā§āĨ¤ āĻā§ āĻĻāĻŋāϝāĻŧā§ āĻāĻžāĻ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ, āĻāĻĒāύāĻžāĻā§ āύāĻŋāĻļā§āĻāĻŋāϤ āĻāϰāϤ⧠āĻšāĻŦā§ āϝ⧠āĻāĻāĻŋ āĻāĻāĻāĻŋ Travis CI āĻāύāĻāĻžāϝāĻŧāϰāύāĻŽā§āύā§āĻ āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞ⧠āύāĻŋāϰāĻžāĻĒāĻĻā§ āϏāĻāϰāĻā§āώāĻŖ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§ āĻāĻŦāĻ āĻāĻāĻŋ āĻā§āĻĨāĻžāĻ āĻĒā§āϰāĻĻāϰā§āĻļāĻŋāϤ āĻšāĻā§āĻā§ āύāĻžāĨ¤
āĻāϰā§āĻāĻāĻŋ āĻŦāĻŋāώāϝāĻŧ āϞāĻā§āώāĻŖā§āϝāĻŧ āϝ⧠āĻāĻĒāύāĻžāĻā§ āĻāĻāĻāĻŋ āϞāĻžāĻāύ āĻšāĻŋāϏāĻžāĻŦā§ āϏāĻŽāĻā§āϰ āϏā§āĻĨāĻžāĻĒāύāĻžāϰ āϏā§āĻā§āϰāĻŋāĻĒā§āĻ āĻāĻžāϞāĻžāύā§āϰ āĻĒā§āϰāϝāĻŧā§āĻāύ āĻšāϤ⧠āĻĒāĻžāϰā§, āĻāĻĻāĻžāĻšāϰāĻŖāϏā§āĻŦāϰā§āĻĒ - āĻāϰ āϏāĻžāĻĨā§ doctl. āĻāϰ āĻāύā§āϝ āĻāĻŋāĻā§ āĻ
āϤāĻŋāϰāĻŋāĻā§āϤ āĻĒā§āϰāĻā§āώā§āĻāĻžāϰ āĻĒā§āϰāϝāĻŧā§āĻāύ āĻšāϤ⧠āĻĒāĻžāϰā§āĨ¤
doctl compute ssh <droplet> --ssh-command "вŅĐĩ ĐēĐžĐŧаĐŊĐ´Ņ ĐąŅĐ´ŅŅ ĐˇĐ´ĐĩŅŅ && СдĐĩŅŅ"TLS/SSL āĻāĻŦāĻ āϞā§āĻĄ āĻŦā§āϝāĻžāϞā§āύā§āϏāĻŋāĻ
āĻāĻŽāĻŋ āĻāĻĒāϰ⧠āĻāϞā§āϞāĻŋāĻāĻŋāϤ āϏāĻŦāĻāĻŋāĻā§ āĻāϰāĻžāϰ āĻĒāϰā§, āĻāĻŽāĻŋ āϝ⧠āĻļā§āώ āϏāĻŽāϏā§āϝāĻžāϰ āϏāĻŽā§āĻŽā§āĻā§āύ āĻšāϝāĻŧā§āĻāĻŋāϞāĻžāĻŽ āϤāĻž āĻšāϞ āϏāĻžāϰā§āĻāĻžāϰ⧠SSL āĻāĻŋāϞ āύāĻžāĨ¤ āϝā§āĻšā§āϤ⧠āĻāĻŽāĻŋ āĻā§āϰ āĻāϰāĻžāϰ āĻāύā§āϝ āĻāĻāĻāĻŋ Node.js āϏāĻžāϰā§āĻāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŋ āϰāĻŋāĻāĻžāϰā§āϏ āĻĒā§āϰāĻā§āϏāĻŋ Nginx āĻāĻŦāĻ āĻāϏā§āύ āĻāύāĻā§āϰāĻŋāĻĒā§āĻ āĻāϰāĻŋ, āĻāĻĒāύāĻžāĻā§ āĻ āύā§āĻ āĻāĻŋāĻā§āĻāĻžāϰ āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤
āĻāĻŽāĻŋ āϏāϤā§āϝāĻŋāĻ āĻāĻ āϏāĻŽāϏā§āϤ SSL āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ āĻŽā§āϝāĻžāύā§āϝāĻŧāĻžāϞāĻŋ āĻāϰāϤ⧠āĻāĻžāĻāύāĻŋ, āϤāĻžāĻ āĻāĻŽāĻŋ āĻļā§āϧ⧠āĻāĻāĻāĻŋ āϞā§āĻĄ āĻŦā§āϝāĻžāϞā§āύā§āϏāĻžāϰ āϤā§āϰāĻŋ āĻāϰā§āĻāĻŋ āĻāĻŦāĻ āĻĄāĻŋāĻāύāĻāϏ-āĻ āĻāϰ āĻŦāĻŋāĻŦāϰāĻŖ āϰā§āĻāϰā§āĻĄ āĻāϰā§āĻāĻŋāĨ¤ DigitalOcean-āĻāϰ āĻā§āώā§āϤā§āϰā§, āĻāĻĻāĻžāĻšāϰāĻŖāϏā§āĻŦāϰā§āĻĒ, āϞā§āĻĄ āĻŦā§āϝāĻžāϞā§āύā§āϏāĻžāϰ⧠āĻāĻāĻāĻŋ āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧ āĻĒā§āύāϰā§āύāĻŦā§āĻāϰāĻŖ āϏā§āĻŦ-āϏā§āĻŦāĻžāĻā§āώāϰāĻŋāϤ āĻļāĻāϏāĻžāĻĒāϤā§āϰ āϤā§āϰāĻŋ āĻāϰāĻž āĻāĻāĻāĻŋ āϏāĻšāĻ, āĻŦāĻŋāύāĻžāĻŽā§āϞā§āϝ⧠āĻāĻŦāĻ āĻĻā§āϰā§āϤ āĻĒā§āϰāĻā§āϰāĻŋāϝāĻŧāĻžāĨ¤ āĻāĻ āĻĒāĻĻā§āϧāϤāĻŋāϰ āĻ
āϤāĻŋāϰāĻŋāĻā§āϤ āϏā§āĻŦāĻŋāϧāĻž āϰāϝāĻŧā§āĻā§ āϝ⧠āĻāĻāĻŋ āĻĒā§āϰāϝāĻŧā§āĻāύ⧠āϞā§āĻĄ āĻŦā§āϝāĻžāϞā§āύā§āϏāĻžāϰā§āϰ āĻĒāĻŋāĻāύ⧠āĻāϞāĻŽāĻžāύ āĻāĻāĻžāϧāĻŋāĻ āϏāĻžāϰā§āĻāĻžāϰ⧠SSL āϏā§āĻ āĻāĻĒ āĻāϰāĻž āĻā§āĻŦ āϏāĻšāĻ āĻāϰ⧠āϤā§āϞā§āĨ¤ āĻāĻāĻŋ āϏāĻžāϰā§āĻāĻžāϰāĻā§āϞāĻŋāĻā§ āύāĻŋāĻā§āϰāĻžāĻ SSL āϏāĻŽā§āĻĒāϰā§āĻā§ "āĻāĻŋāύā§āϤāĻž" āĻāϰāϤ⧠āĻĻā§āϝāĻŧ āύāĻž, āϤāĻŦā§ āĻāĻāĻ āϏāĻŽāϝāĻŧā§ āϏā§āĻŦāĻžāĻāĻžāĻŦāĻŋāĻ āĻšāĻŋāϏāĻžāĻŦā§ āĻĒā§āϰā§āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠80. āϤāĻžāĻ āϞā§āĻĄ āĻŦā§āϝāĻžāϞā§āύā§āϏāĻžāϰ⧠SSL āϏā§āĻ āĻāĻĒ āĻāϰāĻž SSL āϏā§āĻ āĻāĻĒ āĻāϰāĻžāϰ āĻŦāĻŋāĻāϞā§āĻĒ āĻĒāĻĻā§āϧāϤāĻŋāϰ āĻā§āϝāĻŧā§ āĻ
āύā§āĻ āϏāĻšāĻ āĻāĻŦāĻ āĻāϰāĻ āϏā§āĻŦāĻŋāϧāĻžāĻāύāĻāĨ¤
āĻāĻāύ āĻāĻĒāύāĻŋ āϏāĻžāϰā§āĻāĻžāϰā§āϰ āϏāĻŽāϏā§āϤ āĻĒā§āϰā§āĻ āĻŦāύā§āϧ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ āϝāĻž āĻāύāĻāĻžāĻŽāĻŋāĻ āϏāĻāϝā§āĻāĻā§āϞāĻŋ āĻā§āϰāĻšāĻŖ āĻāϰ⧠- āĻĒā§āϰā§āĻ āĻāĻžāĻĄāĻŧāĻž 80, āϞā§āĻĄ āĻŦā§āϝāĻžāϞā§āύā§āϏāĻžāϰ āĻāĻŦāĻ āĻĒā§āϰā§āĻā§āϰ āϏāĻžāĻĨā§ āϝā§āĻāĻžāϝā§āĻ āĻāϰāϤ⧠āĻŦā§āϝāĻŦāĻšā§āϤ āĻšāϝāĻŧ 22 SSH āĻāϰ āĻāύā§āϝāĨ¤ āĻĢāϞāϏā§āĻŦāϰā§āĻĒ, āĻāĻ āĻĻā§āĻāĻŋ āĻŦā§āϝāϤā§āϤ āĻ
āύā§āϝ āĻā§āύāĻ āĻĒā§āϰā§āĻā§ āϏāϰāĻžāϏāϰāĻŋ āϏāĻžāϰā§āĻāĻžāϰ āĻ
ā§āϝāĻžāĻā§āϏā§āϏ āĻāϰāĻžāϰ āĻĒā§āϰāĻā§āώā§āĻāĻž āĻŦā§āϝāϰā§āĻĨ āĻšāĻŦā§āĨ¤
āĻĢāϞāĻžāĻĢāϞ
āĻāĻŽāĻŋ āĻāĻ āĻāĻĒāĻžāĻĻāĻžāύāĻāĻŋāϤ⧠āϝāĻž āϝāĻž āĻŦāϞā§āĻāĻŋāϞāĻžāĻŽ āϤāĻž āĻāϰāĻžāϰ āĻĒāϰā§, āĻĄāĻāĻžāϰ āĻĒā§āϞā§āϝāĻžāĻāĻĢāϰā§āĻŽ āĻŦāĻž āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧ CI/CD āĻā§āĻāύā§āϰ āϧāĻžāϰāĻŖāĻžāĻā§āϞāĻŋ āĻāĻŽāĻžāĻā§ āĻāϰ āĻāϝāĻŧ āĻĻā§āĻāĻžāϝāĻŧāύāĻŋāĨ¤ āĻāĻŽāĻŋ āĻāĻāĻāĻŋ āĻ āĻŦāĻŋāĻā§āĻāĻŋāύā§āύ āĻāύā§āĻāĻŋāĻā§āϰā§āĻļāύ āĻā§āĻāύ āϏā§āĻ āĻāĻĒ āĻāϰāϤ⧠āϏāĻā§āώāĻŽ āĻšāϝāĻŧā§āĻāĻŋ, āϝāĻžāϰ āϏāĻŽāϝāĻŧ āĻā§āĻĄāĻāĻŋ āĻāϤā§āĻĒāĻžāĻĻāύ⧠āϝāĻžāĻāϝāĻŧāĻžāϰ āĻāĻā§ āĻĒāϰā§āĻā§āώāĻž āĻāϰāĻž āĻšāϝāĻŧ āĻāĻŦāĻ āĻā§āĻĄāĻāĻŋ āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧāĻāĻžāĻŦā§ āϏāĻžāϰā§āĻāĻžāϰ⧠āϏā§āĻĨāĻžāĻĒāύ āĻāϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻāĻŋ āĻāĻāύāĻ āĻāĻŽāĻžāϰ āĻāĻžāĻā§ āϤā§āϞāύāĻžāĻŽā§āϞāĻāĻāĻžāĻŦā§ āύāϤā§āύ, āĻāĻŦāĻ āĻāĻŽāĻŋ āύāĻŋāĻļā§āĻāĻŋāϤ āϝ⧠āĻāĻŽāĻžāϰ āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧ āĻāϰā§āĻŽāĻĒā§āϰāĻŦāĻžāĻš āĻāύā§āύāϤ āĻāϰāĻžāϰ āĻāĻŦāĻ āĻāĻāĻŋāĻā§ āĻāϰāĻ āĻĻāĻā§āώ āĻāϰāĻžāϰ āĻāĻĒāĻžāϝāĻŧ āϰāϝāĻŧā§āĻā§āĨ¤ āϤāĻžāĻ āĻāĻ āĻŦāĻŋāώāϝāĻŧā§ āĻāĻĒāύāĻžāϰ āĻā§āύ āϧāĻžāϰāύāĻž āĻĨāĻžāĻāϞ⧠āĻĻāϝāĻŧāĻž āĻāϰ⧠āĻāĻŽāĻžāĻā§ āĻāĻžāύāĻžāύāĨ¤ āĻāĻžāύāĻŋ āĻāĻŽāĻŋ āĻāĻļāĻž āĻāϰāĻŋ āĻāĻ āύāĻŋāĻŦāύā§āϧāĻāĻŋ āĻāĻĒāύāĻžāϰ āĻĒā§āϰāĻā§āώā§āĻāĻžāϝāĻŧ āĻāĻĒāύāĻžāĻā§ āϏāĻžāĻšāĻžāϝā§āϝ āĻāϰā§āĻā§āĨ¤ āĻāĻŽāĻŋ āĻŦāĻŋāĻļā§āĻŦāĻžāϏ āĻāϰāϤ⧠āĻāĻžāĻ āϝ⧠āĻāĻāĻŋ āĻĒāĻĄāĻŧāĻžāϰ āĻĒāϰā§, āĻāĻĒāύāĻŋ āĻāĻŽāĻŋ āϝāϤāĻāĻž āĻļāĻŋāĻā§āĻāĻŋ āϤāϤāĻāĻžāĻ āĻļāĻŋāĻā§āĻāĻŋ āϝāĻāύ āĻāĻŽāĻŋ āĻāϤ⧠āϝ⧠āϏāĻŽāϏā§āϤ āĻāĻĨāĻž āĻŦāϞā§āĻāĻŋ āϤāĻž āĻŦā§āϰ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧāĨ¤
āĻĻā§āϰāώā§āĻāĻŦā§āϝ āĻāĻŽāĻžāĻĻā§āϰ āĻŽāϧā§āϝ⧠āĻāĻāĻāĻŋ āĻāĻŽā§āĻ āĻāĻā§ , āϝāĻž āĻāĻ āĻā§āϞāĻŋāĻā§ āĻāύāϏā§āĻāϞ āĻāϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻĒāύāĻŋ āĻĒāĻžāϤā§āϰ⧠āĻāĻžāĻ āĻĒāϰā§āĻā§āώāĻž āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ . āϏāĻŽāϏā§āϤ āύāϤā§āύ āĻā§āϰāĻžāĻšāĻāĻĻā§āϰ āĻŦāĻŋāύāĻžāĻŽā§āϞā§āϝ⧠3 āĻĻāĻŋāύā§āϰ āĻĒāϰā§āĻā§āώāĻž āĻĻā§āĻāϝāĻŧāĻž āĻšāϝāĻŧāĨ¤
āĻĒā§āϰāĻŋāϝāĻŧ āĻĒāĻžāĻ āĻāĻāĻŖ! āĻāĻĒāύāĻŋ āĻāĻŋ āĻāĻĒāύāĻžāϰ āĻĒā§āϰāĻāϞā§āĻĒā§ CI/CD āĻĒā§āϰāϝā§āĻā§āϤāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ?
āĻāϤā§āϏ: www.habr.com
