เด—เดฟเดฑเตเดฑเตโ€Œเดฒเดพเดฌเต เดตเดดเดฟ เดธเดฟเดกเดฟ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเต

เดŽเดจเตเดฑเต† เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเดจเตเดฑเต† เดตเดฟเดจเตเดฏเดพเดธเด‚ เด“เดŸเตเดŸเต‹เดฎเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดžเดพเตป เด’เดฐเดฟเด•เตเด•เตฝ เดšเดฟเดจเตเดคเดฟเดšเตเดšเต. gitlab.com เด‡เดคเดฟเดจเตเดณเตเดณ เดŽเดฒเตเดฒเดพ เด‰เดชเด•เดฐเดฃเด™เตเด™เดณเตเด‚ เดฆเดฏเดฏเต‹เดŸเต† เดจเตฝเด•เตเดจเตเดจเต, เดคเต€เตผเดšเตเดšเดฏเดพเดฏเตเด‚ เดžเดพเตป เด…เดคเต เดชเตเดฐเดฏเต‹เดœเดจเดชเตเดชเต†เดŸเตเดคเตเดคเดพเตป เดคเต€เดฐเตเดฎเดพเดจเดฟเดšเตเดšเต, เด…เดคเต เด•เดฃเตเดŸเต†เดคเตเดคเดฟ เด’เดฐเต เดšเต†เดฑเดฟเดฏ เดตเดฟเดจเตเดฏเดพเดธ เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดŽเดดเตเดคเตเด•. เดˆ เดฒเต‡เด–เดจเดคเตเดคเดฟเตฝ เดžเดพเตป เดธเดฎเต‚เดนเดตเตเดฎเดพเดฏเดฟ เดŽเดจเตเดฑเต† เด…เดจเตเดญเดตเด‚ เดชเด™เตเด•เดฟเดŸเตเดจเตเดจเต.

เด…เดšเตเดšเต เดกเดฟ.เด†เตผ.

  1. VPS เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเด•: เดฑเต‚เดŸเตเดŸเต เดชเตเดฐเดตเตผเดคเตเดคเดจเดฐเดนเดฟเดคเดฎเดพเด•เตเด•เตเด•, เดชเดพเดธเตโ€Œเดตเต‡เดกเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดฒเต‹เด—เดฟเตป เดšเต†เดฏเตเดฏเตเด•, เดกเต‹เด•เตเด•เตผเดกเต เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเด•, ufw เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดฏเตเด•
  2. เดธเต†เตผเดตเดฑเดฟเดจเตเด‚ เด•เตเดฒเดฏเดจเตเดฑเดฟเดจเตเดฎเดพเดฏเดฟ เดธเตผเดŸเตเดŸเดฟเดซเดฟเด•เตเด•เดฑเตเดฑเตเด•เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด• docs.docker.com/engine/security/https/#create-a-ca-server-and-client-keys-with-openssl tcp เดธเต‹เด•เตเด•เดฑเตเดฑเต เดตเดดเดฟ เดกเต‹เด•เตเด•เตผเดกเต เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดจเด•เตเดทเดฎเดฎเดพเด•เตเด•เตเด•: เดกเต‹เด•เตเด•เตผ เด•เต‹เตบเดซเดฟเด—เดฑเดฟเตฝ เดจเดฟเดจเตเดจเต -H fd:// เด“เดชเตเดทเตป เดจเต€เด•เตเด•เด‚ เดšเต†เดฏเตเดฏเตเด•.
  3. docker.json-เตฝ เดธเตผเดŸเตเดŸเดฟเดซเดฟเด•เตเด•เดฑเตเดฑเตเด•เดณเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เดชเดพเดคเด•เตพ เดฐเดœเดฟเดธเตเดฑเตเดฑเตผ เดšเต†เดฏเตเดฏเตเด•
  4. เดธเตผเดŸเตเดŸเดฟเดซเดฟเด•เตเด•เดฑเตเดฑเตเด•เดณเตเดŸเต† เด‰เดณเตเดณเดŸเด•เตเด•เด™เตเด™เตพเด•เตเด•เตŠเดชเตเดชเด‚ CI/CD เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เดณเดฟเตฝ gitlab เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เดณเดฟเตฝ เดฐเดœเดฟเดธเตเดฑเตเดฑเตผ เดšเต†เดฏเตเดฏเตเด•. เดตเดฟเดจเตเดฏเดพเดธเดคเตเดคเดฟเดจเดพเดฏเดฟ เด’เดฐเต เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต .gitlab-ci.yml เดŽเดดเตเดคเตเด•.

เดกเต†เดฌเดฟเดฏเตป เดตเดฟเดคเดฐเดฃเดคเตเดคเดฟเดฒเต† เดŽเดฒเตเดฒเดพ เด‰เดฆเดพเดนเดฐเดฃเด™เตเด™เดณเตเด‚ เดžเดพเตป เด•เดพเดฃเดฟเด•เตเด•เตเด‚.

เดชเตเดฐเดพเดฐเด‚เดญ VPS เดธเดœเตเดœเต€เด•เดฐเดฃเด‚

เด…เดคเดฟเดจเดพเตฝ เดจเดฟเด™เตเด™เตพ เด’เดฐเต เด‰เดฆเดพเดนเดฐเดฃเด‚ เดตเดพเด™เตเด™เดฟ DO, เดจเดฟเด™เตเด™เตพ เด†เดฆเตเดฏเด‚ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเต เดจเดฟเด™เตเด™เดณเตเดŸเต† เดธเต†เตผเดตเดฑเดฟเดจเต† เด†เด•เตเดฐเดฎเดฃเดพเดคเตเดฎเด• เดชเตเดฑเด‚ เดฒเต‹เด•เดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดธเด‚เดฐเด•เตเดทเดฟเด•เตเด•เตเด• เดŽเดจเตเดจเดคเดพเดฃเต. เดžเดพเตป เด’เดจเตเดจเตเด‚ เดคเต†เดณเดฟเดฏเดฟเด•เตเด•เตเด•เดฏเต‹ เด‰เดฑเดชเตเดชเดฟเด•เตเด•เตเด•เดฏเต‹ เดšเต†เดฏเตเดฏเดฟเดฒเตเดฒ, เดŽเดจเตเดฑเต† เดตเต†เตผเดšเตเดตเตฝ เดธเต†เตผเดตเดฑเดฟเดจเตเดฑเต† เดฒเต‹เด—เต /var/log/messages เดžเดพเตป เด•เดพเดฃเดฟเด•เตเด•เตเด‚:

เดธเตเด•เตเดฐเต€เตปเดทเต‹เดŸเตเดŸเตเด—เดฟเดฑเตเดฑเตโ€Œเดฒเดพเดฌเต เดตเดดเดฟ เดธเดฟเดกเดฟ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเต

เด†เดฆเตเดฏเด‚, ufw เดซเดฏเตผเดตเดพเตพ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเด•:

apt-get update && apt-get install ufw

เดจเดฎเตเด•เตเด•เต เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟ เดจเดฏเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดจเด•เตเดทเดฎเดฎเดพเด•เตเด•เดพเด‚: เดŽเดฒเตเดฒเดพ เด‡เตปเด•เดฎเดฟเด‚เด—เต เด•เดฃเด•เตเดทเดจเตเด•เดณเตเด‚ เดคเดŸเดฏเตเด•, เดŽเดฒเตเดฒเดพ เด”เดŸเตเดŸเตโ€Œเด—เต‹เดฏเดฟเด‚เด—เต เด•เดฃเด•เตเดทเดจเตเด•เดณเตเด‚ เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเด•:

ufw default deny incoming
ufw default allow outgoing

เดชเตเดฐเดงเดพเดจเด‚: ssh เดตเดดเดฟเดฏเตเดณเตเดณ เด•เดฃเด•เตเดทเตป เด…เดจเตเดตเดฆเดฟเด•เตเด•เดพเตป เดฎเดฑเด•เตเด•เดฐเตเดคเต:

ufw allow OpenSSH

เดชเตŠเดคเตเดตเดพเดฏ เดตเดพเด•เตเดฏเด˜เดŸเดจ เด‡เดชเตเดฐเด•เดพเดฐเดฎเดพเดฃเต: เดชเต‹เตผเดŸเตเดŸเต เดตเดดเดฟ เด’เดฐเต เด•เดฃเด•เตเดทเตป เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเด•: ufw 12345 เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเด•, เด‡เดตเดฟเดŸเต† 12345 เดŽเดจเตเดจเดคเต เดชเต‹เตผเดŸเตเดŸเต เดจเดฎเตเดชเดฑเต‹ เดธเต‡เดตเดจเดคเตเดคเดฟเดจเตเดฑเต† เดชเต‡เดฐเต‹ เด†เดฃเต. เดจเดฟเดฐเดธเดฟเด•เตเด•เตเด•: ufw เดจเดฟเดทเต‡เดงเดฟเด•เตเด•เตเด• 12345

เดซเดฏเตผเดตเดพเตพ เด“เดฃเดพเด•เตเด•เตเด•:

ufw enable

เดžเด™เตเด™เตพ เดธเต†เดทเดจเดฟเตฝ เดจเดฟเดจเตเดจเต เดชเตเดฑเดคเตเดคเตเด•เดŸเดจเตเดจเต ssh เดตเดดเดฟ เดตเต€เดฃเตเดŸเตเด‚ เดฒเต‹เด—เดฟเตป เดšเต†เดฏเตเดฏเตเดจเตเดจเต.

เด’เดฐเต เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดฟเดจเต† เดšเต‡เตผเด•เตเด•เตเด•, เด…เดฏเดพเตพเด•เตเด•เต เด’เดฐเต เดชเดพเดธเตโ€Œเดตเต‡เดกเต เดจเตฝเด•เตเด•, เด…เดตเดจเต† เดธเตเดกเต‹ เด—เตเดฐเต‚เดชเตเดชเดฟเดฒเต‡เด•เตเด•เต เดšเต‡เตผเด•เตเด•เตเด•.

apt-get install sudo
adduser scoty
usermod -aG sudo scoty

เด…เดŸเตเดคเตเดคเดคเดพเดฏเดฟ, เดชเตเดฒเดพเตป เด…เดจเตเดธเดฐเดฟเดšเตเดšเต, เดจเดฟเด™เตเด™เตพ เดชเดพเดธเตเดตเต‡เดกเต เดฒเต‹เด—เดฟเตป เดชเตเดฐเดตเตผเดคเตเดคเดจเดฐเดนเดฟเดคเดฎเดพเด•เตเด•เดฃเด‚. เด‡เดคเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เดจเดฟเด™เตเด™เดณเตเดŸเต† ssh เด•เต€ เดธเต†เตผเดตเดฑเดฟเดฒเต‡เด•เตเด•เต เดชเด•เตผเดคเตเดคเตเด•:

ssh-copy-id [email protected]

เดธเต†เตผเดตเตผ เดเดชเดฟ เดจเดฟเด™เตเด™เดณเตเดŸเต‡เดคเดพเดฏเดฟเดฐเดฟเด•เตเด•เดฃเด‚. เด‡เดชเตเดชเต‹เตพ เดจเดฟเด™เตเด™เตพ เดจเต‡เดฐเดคเตเดคเต† เดธเตƒเดทเตเดŸเดฟเดšเตเดš เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดฟเดจเต† เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดฒเต‹เด—เดฟเตป เดšเต†เดฏเตเดฏเดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เตเด•; เดจเดฟเด™เตเด™เตพ เด‡เดจเดฟ เด’เดฐเต เดชเดพเดธเตโ€Œเดตเต‡เดกเต เดจเตฝเด•เต‡เดฃเตเดŸเดคเดฟเดฒเตเดฒ. เด…เดŸเตเดคเตเดคเดคเดพเดฏเดฟ, เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เดณเดฟเตฝ, เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจเดต เดฎเดพเดฑเตเดฑเตเด•:

sudo nano /etc/ssh/sshd_config

เดชเดพเดธเตโ€Œเดตเต‡เดกเต เดฒเต‹เด—เดฟเตป เดชเตเดฐเดตเตผเดคเตเดคเดจเดฐเดนเดฟเดคเดฎเดพเด•เตเด•เตเด•:

PasswordAuthentication no

sshd เดกเต†เดฎเตบ เดชเตเดจเดฐเดพเดฐเด‚เดญเดฟเด•เตเด•เตเด•:

sudo systemctl reload sshd

เด‡เดชเตเดชเต‹เตพ เดจเดฟเด™เตเด™เดณเต‹ เดฎเดฑเตเดฑเดพเดฐเต†เด™เตเด•เดฟเดฒเตเดฎเต‹ เดฑเต‚เดŸเตเดŸเต เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดพเดฏเดฟ เดฒเต‹เด—เดฟเตป เดšเต†เดฏเตเดฏเดพเตป เดถเตเดฐเดฎเดฟเดšเตเดšเดพเตฝ, เด…เดคเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดฟเดฒเตเดฒ.

เด…เดŸเตเดคเตเดคเดคเดพเดฏเดฟ, เดกเต‹เด•เตเด•เตผเดกเต เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเด•, เดžเดพเตป เด‡เดตเดฟเดŸเต† เดชเตเดฐเด•เตเดฐเดฟเดฏ เดตเดฟเดตเดฐเดฟเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒ, เด•เดพเดฐเดฃเด‚ เดŽเดฒเตเดฒเดพเด‚ เด‡เดคเดฟเดจเด•เด‚ เดฎเดพเดฑเตเดฑเดพเตป เด•เดดเดฟเดฏเตเด‚, เด”เดฆเตเดฏเต‹เด—เดฟเด• เดตเต†เดฌเตเดธเตˆเดฑเตเดฑเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เดฒเดฟเด™เตเด•เต เดชเดฟเดจเตเดคเตเดŸเดฐเตเด•, เดจเดฟเด™เตเด™เดณเตเดŸเต† เดตเต†เตผเดšเตเดตเตฝ เดฎเต†เดทเต€เดจเดฟเตฝ เดกเต‹เด•เตเด•เตผ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเดจเตเดจ เด˜เดŸเตเดŸเด™เตเด™เดณเดฟเดฒเต‚เดŸเต† เดชเต‹เด•เตเด•: https://docs.docker.com/install/linux/docker-ce/debian/

เดธเตผเดŸเตเดŸเดฟเดซเดฟเด•เตเด•เดฑเตเดฑเตเด•เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต

เดกเต‹เด•เตเด•เตผ เดกเต†เดฎเตบ เดตเดฟเดฆเต‚เดฐเดฎเดพเดฏเดฟ เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, เด’เดฐเต เดŽเตปเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดšเต†เดฏเตเดค TLS เด•เดฃเด•เตเดทเตป เด†เดตเดถเตเดฏเดฎเดพเดฃเต. เด‡เดคเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต เดธเตผเดŸเตเดŸเดฟเดซเดฟเด•เตเด•เดฑเตเดฑเตเด‚ เด’เดฐเต เด•เต€เดฏเตเด‚ เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเดฟเด•เตเด•เดฃเด‚, เด…เดคเต เดœเดจเดฑเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เดจเดฟเด™เตเด™เดณเตเดŸเต† เดฑเดฟเดฎเต‹เดŸเตเดŸเต เดฎเต†เดทเต€เดจเดฟเดฒเต‡เด•เตเด•เต เดฎเดพเดฑเตเดฑเตเด•เดฏเตเด‚ เดตเต‡เดฃเด‚. เด”เดฆเตเดฏเต‹เด—เดฟเด• เดกเต‹เด•เตเด•เตผ เดตเต†เดฌเตเดธเตˆเดฑเตเดฑเดฟเดฒเต† เดจเดฟเตผเดฆเตเดฆเต‡เดถเด™เตเด™เดณเดฟเตฝ เดจเตฝเด•เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เด˜เดŸเตเดŸเด™เตเด™เตพ เดชเดพเดฒเดฟเด•เตเด•เตเด•: https://docs.docker.com/engine/security/https/#create-a-ca-server-and-client-keys-with-openssl เดธเต†เตผเดตเดฑเดฟเดจเดพเดฏเดฟ เดธเตƒเดทเตโ€ŒเดŸเดฟเดšเตเดš เดŽเดฒเตเดฒเดพ *.pem เดซเดฏเดฒเตเด•เดณเตเด‚, เด…เดคเดพเดฏเดคเต ca.pem, server.pem, key.pem, เดธเต†เตผเดตเดฑเดฟเดฒเต† /etc/docker เดกเดฏเดฑเด•เตโ€ŒเดŸเดฑเดฟเดฏเดฟเตฝ เดธเตเดฅเดพเดชเดฟเด•เตเด•เดฃเด‚.

เดกเต‹เด•เตเด•เตผเดกเต เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเต

เดกเต‹เด•เตเด•เตผ เดกเต†เดฎเตบ เดฒเต‹เดžเตเดšเต เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเดฟเตฝ, เดžเด™เตเด™เตพ -H df:// เด“เดชเตโ€Œเดทเตป เดจเต€เด•เตเด•เด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต, เดเดคเต เดนเต‹เดธเตเดฑเตเดฑเดฟเดฒเดพเดฃเต เดกเต‹เด•เตเด•เตผ เดกเต†เดฎเตบ เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด•เดฏเต†เดจเตเดจเต เดˆ เด“เดชเตเดทเตป เดจเดฟเตผเดฃเตเดฃเดฏเดฟเด•เตเด•เตเดจเตเดจเต.

# At /lib/systemd/system/docker.service
[Service]
Type=notify
ExecStart=/usr/bin/dockerd

เด…เดŸเตเดคเตเดคเดคเดพเดฏเดฟ, เดจเดฟเด™เตเด™เตพ เด’เดฐเต เด•เตเดฐเดฎเต€เด•เดฐเดฃ เดซเดฏเตฝ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดฃเด‚, เด…เดคเต เดจเดฟเดฒเดตเดฟเดฒเดฟเดฒเตเดฒเต†เด™เตเด•เดฟเตฝ, เด“เดชเตเดทเดจเตเด•เตพ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เตเด•:

/etc/docker/docker.json

{
  "hosts": [
    "unix:///var/run/docker.sock",
    "tcp://0.0.0.0:2376"
  ],
  "labels": [
    "is-our-remote-engine=true"
  ],
  "tls": true,
  "tlscacert": "/etc/docker/ca.pem",
  "tlscert": "/etc/docker/server.pem",
  "tlskey": "/etc/docker/key.pem",
  "tlsverify": true
}

เดชเต‹เตผเดŸเตเดŸเต 2376-เตฝ เด•เดฃเด•เตเดทเดจเตเด•เตพ เด…เดจเตเดตเดฆเดฟเด•เตเด•เดพเด‚:

sudo ufw allow 2376

เดชเตเดคเดฟเดฏ เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดกเต‹เด•เตเด•เตผเดกเต เดชเตเดจเดฐเดพเดฐเด‚เดญเดฟเด•เตเด•เดพเด‚:

sudo systemctl daemon-reload && sudo systemctl restart docker

เดจเดฎเตเด•เตเด•เต เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เดพเด‚:

sudo systemctl status docker

เดŽเดฒเตเดฒเดพเด‚ "เดชเดšเตเดš" เด†เดฃเต†เด™เตเด•เดฟเตฝ, เดžเด™เตเด™เตพ เดธเต†เตผเดตเดฑเดฟเตฝ เดกเต‹เด•เตเด•เตผ เดตเดฟเดœเดฏเด•เดฐเดฎเดพเดฏเดฟ เด•เตเดฐเดฎเต€เด•เดฐเดฟเดšเตเดšเดคเดพเดฏเดฟ เดžเด™เตเด™เตพ เด•เดฐเตเดคเตเดจเตเดจเต.

เด—เดฟเดฑเตเดฑเตโ€Œเดฒเดพเดฌเดฟเตฝ เดคเตเดŸเตผเดšเตเดšเดฏเดพเดฏ เดกเต†เดฒเดฟเดตเดฑเดฟ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเต

เด’เดฐเต เดฑเดฟเดฎเต‹เดŸเตเดŸเต เดกเต‹เด•เตเด•เตผ เดนเต‹เดธเตเดฑเตเดฑเดฟเตฝ เด•เดฎเดพเตปเดกเตเด•เตพ เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเต เดšเต†เดฏเตเดฏเดพเตป Gitalaba เดคเตŠเดดเดฟเดฒเดพเดณเดฟเด•เตเด•เต เด•เดดเดฟเดฏเดฃเดฎเต†เด™เตเด•เดฟเตฝ, เดกเต‹เด•เตเด•เตผเดกเตเดฎเดพเดฏเตเดณเตเดณ เดŽเตปเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดšเต†เดฏเตเดค เด•เดฃเด•เตเดทเดจเตเดณเตเดณ เดธเตผเดŸเตเดŸเดฟเดซเดฟเด•เตเด•เดฑเตเดฑเตเด•เดณเตเด‚ เด•เต€เดฏเตเด‚ เดŽเด™เตเด™เดจเต†, เดŽเดตเดฟเดŸเต† เดธเต‚เด•เตเดทเดฟเด•เตเด•เดฃเดฎเต†เดจเตเดจเต เดคเต€เดฐเตเดฎเดพเดจเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเต เด†เดตเดถเตเดฏเดฎเดพเดฃเต. gitlbab เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เดณเดฟเดฒเต† เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เดณเดฟเดฒเต‡เด•เตเด•เต เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจเดต เดšเต‡เตผเดคเตเดคเตเด•เตŠเดฃเตเดŸเต เดžเดพเตป เดˆ เดชเตเดฐเดถเตเดจเด‚ เดชเดฐเดฟเดนเดฐเดฟเดšเตเดšเต:

เดธเตโ€Œเดชเต‹เดฏเดฟเดฒเตผ เดถเต€เตผเดทเด•เด‚เด—เดฟเดฑเตเดฑเตโ€Œเดฒเดพเดฌเต เดตเดดเดฟ เดธเดฟเดกเดฟ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเต

เดธเตผเดŸเตเดŸเดฟเดซเดฟเด•เตเด•เดฑเตเดฑเตเด•เดณเตเดŸเต†เดฏเตเด‚ เด•เต€เดฏเตเดŸเต†เดฏเตเด‚ เด‰เดณเตเดณเดŸเด•เตเด•เด‚ เดชเต‚เดšเตเดš เดตเดดเดฟ เด”เดŸเตเดŸเตเดชเตเดŸเตเดŸเต เดšเต†เดฏเตเดฏเตเด•: cat ca.pem. เดตเต‡เดฐเดฟเดฏเดฌเดฟเตพ เดฎเต‚เดฒเตเดฏเด™เตเด™เดณเดฟเดฒเต‡เด•เตเด•เต เดชเด•เตผเดคเตเดคเดฟ เด’เดŸเตเดŸเดฟเด•เตเด•เตเด•.

GitLab เดตเดดเดฟ เดตเดฟเดจเตเดฏเดพเดธเดคเตเดคเดฟเดจเดพเดฏเดฟ เด’เดฐเต เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดŽเดดเตเดคเดพเด‚. เดกเต‹เด•เตเด•เตผ-เด‡เตป-เดกเต‹เด•เตเด•เตผ (เดกเดฟเตปเดกเต) เดšเดฟเดคเตเดฐเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด‚.

.gitlab-ci.yml

image:
  name: docker/compose:1.23.2
  # ะฟะตั€ะตะฟะธัˆะตะผ entrypoint , ั‡ั‚ะพะฑั‹ ั€ะฐะฑะพั‚ะฐะปะพ ะฒ dind
  entrypoint: ["/bin/sh", "-c"]

variables:
  DOCKER_HOST: tcp://docker:2375/
  DOCKER_DRIVER: overlay2

services:
  - docker:dind

stages:
  - deploy

deploy:
  stage: deploy
  script:
    - bin/deploy.sh # ัะบั€ะธะฟั‚ ะดะตะฟะปะพั ั‚ัƒั‚

เด…เดญเดฟเดชเตเดฐเดพเดฏเด™เตเด™เดณเตเดณเตเดณ เดตเดฟเดจเตเดฏเดพเดธ เดธเตโ€Œเด•เตเดฐเดฟเดชเตเดฑเตเดฑเดฟเดจเตเดฑเต† เด‰เดณเตเดณเดŸเด•เตเด•เด‚:

bin/deploy.sh

#!/usr/bin/env sh
# ะŸะฐะดะฐะตะผ ัั€ะฐะทัƒ, ะตัะปะธ ะฒะพะทะฝะธะบะปะธ ะบะฐะบะธะต-ั‚ะพ ะพัˆะธะฑะบะธ
set -e
# ะ’ั‹ะฒะพะดะธะผ, ั‚ะพ , ั‡ั‚ะพ ะดะตะปะฐะตะผ
set -v

# 
DOCKER_COMPOSE_FILE=docker-compose.yml
# ะšัƒะดะฐ ะดะตะฟะปะพะธะผ
DEPLOY_HOST=185.241.52.28
# ะŸัƒั‚ัŒ ะดะปั ัะตั€ั‚ะธั„ะธะบะฐั‚ะพะฒ ะบะปะธะตะฝั‚ะฐ, ั‚ะพ ะตัั‚ัŒ ะฒ ะฝะฐัˆะตะผ ัะปัƒั‡ะฐะต - gitlab-ะฒะพั€ะบะตั€ะฐ
DOCKER_CERT_PATH=/root/.docker

# ะฟั€ะพะฒะตั€ะธะผ, ั‡ั‚ะพ ะฒ ะบะพะฝั‚ะตะนะฝะตั€ะต ะฒัะต ะธะผะตะตั‚ัั
docker info
docker-compose version

# ัะพะทะดะฐะตะผ ะฟัƒั‚ัŒ (ัะตะนั‡ะฐั ั€ะฐะฑะพั‚ะฐะตะผ ะฒ ะบะปะธะตะฝั‚ะต - ะฒะพั€ะบะตั€ะต gitlab'ะฐ)
mkdir $DOCKER_CERT_PATH
# ะธะทั‹ะผะฐะตะผ ัะพะดะตั€ะถะธะผะพะต ะฟะตั€ะตะผะตะฝะฝั‹ั…, ะฟั€ะธ ัั‚ะพะผ ัƒะดะฐะปัะตะผ ะปะธัˆะฝะธะต ัะธะผะฒะพะปั‹ ะดะพะฑะฐะฒะปะตะฝะฝั‹ะต ะฟั€ะธ ัะพั…ั€ะฐะฝะตะฝะธะธ ะฟะตั€ะตะผะตะฝะฝั‹ั….
echo "$CA_PEM" | tr -d 'r' > $DOCKER_CERT_PATH/ca.pem
echo "$CERT_PEM" | tr -d 'r' > $DOCKER_CERT_PATH/cert.pem
echo "$KEY_PEM" | tr -d 'r' > $DOCKER_CERT_PATH/key.pem
# ะฝะฐ ะฒััะบะธะน ัะปัƒั‡ะฐะน ะดะฐะตะผ ั‚ะพะปัŒะบะพ ั‡ะธั‚ะฐั‚ัŒ
chmod 400 $DOCKER_CERT_PATH/ca.pem
chmod 400 $DOCKER_CERT_PATH/cert.pem
chmod 400 $DOCKER_CERT_PATH/key.pem

# ะดะฐะปะตะต ะฝะฐั‡ะธะฝะฐะตะผ ัƒะถะต ั€ะฐะฑะพั‚ะฐั‚ัŒ ั ัƒะดะฐะปะตะฝะฝั‹ะผ docker-ะดะตะผะพะฝะพะผ. ะกะพะฑัั‚ะฒะตะฝะฝะพ, ัะฐะผ ะดะตะฟะปะพะน
export DOCKER_TLS_VERIFY=1
export DOCKER_HOST=tcp://$DEPLOY_HOST:2376

# ะฟั€ะพะฒะตั€ะธะผ, ั‡ั‚ะพ ะบะพะฝะฝะตะบั‚ะธั‚ัั ะฒัะต ัƒัะฟะตัˆะฝะพ
docker-compose 
  -f $DOCKER_COMPOSE_FILE 
  ps

# ะปะพะณะธะฝะธะผัั ะฒ docker-ั€ะตะณะธัั‚ั€ะธ, ั‚ัƒั‚ ะผะพะถะตั‚ะต ัƒะบะฐะทะฐั‚ัŒ ัะฒะพะน "ะผะตัั‚ะฝั‹ะน" ั€ะตะณะธัั‚ั€ะธ
docker login -u $DOCKER_USER -p $DOCKER_PASSWORD

docker-compose 
  -f $DOCKER_COMPOSE_FILE 
  pull app
# ะฟะพะดะฝะธะผะฐะตะผ ะฟั€ะธะปะพะถะตะฝะธะต
docker-compose 
  -f $DOCKER_COMPOSE_FILE 
  up -d app

เด—เดฟเดฑเตเดฑเตโ€Œเดฒเดพเดฌเต CI/CD เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดธเตผเดŸเตเดŸเดฟเดซเดฟเด•เตเด•เดฑเตเดฑเตเด•เดณเตเดŸเต† เด‰เดณเตเดณเดŸเด•เตเด•เด™เตเด™เตพ เดธเดพเดงเดพเดฐเดฃ เดฐเต‚เดชเดคเตเดคเดฟเตฝ "เดตเดฒเดฟเด•เตเด•เตเด•" เดŽเดจเตเดจเดคเดพเดฏเดฟเดฐเตเดจเตเดจเต เดชเตเดฐเดงเดพเดจ เดชเตเดฐเดถเตเดจเด‚. เดฑเดฟเดฎเต‹เดŸเตเดŸเต เดนเต‹เดธเตเดฑเตเดฑเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เด•เดฃเด•เตเดทเตป เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเดคเตเดคเดคเต เดŽเดจเตเดคเตเด•เตŠเดฃเตเดŸเดพเดฃเต†เดจเตเดจเต เดŽเดจเดฟเด•เตเด•เต เด•เดฃเตเดŸเต†เดคเตเดคเดพเดจเดพเดฏเดฟเดฒเตเดฒ. เดนเต‹เดธเตเดฑเตเดฑเดฟเตฝ เดžเดพเตป log sudo journalctl -u docker เดจเต‹เด•เตเด•เดฟ, เดนเดพเตปโ€Œเดกเตโ€Œเดทเต†เด•เตเด•เดฟเตฝ เด’เดฐเต เดชเดฟเดถเด•เต เดธเด‚เดญเดตเดฟเดšเตเดšเต. เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เดณเดฟเตฝ เดชเตŠเดคเตเดตเต† เดŽเดจเตเดคเดพเดฃเต เดธเด‚เดญเดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต†เดจเตเดจเต เดจเต‹เด•เตเด•เดพเตป เดžเดพเตป เดคเต€เดฐเตเดฎเดพเดจเดฟเดšเตเดšเต; เด‡เดคเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด‡เดคเตเดชเต‹เดฒเต† เด•เดพเดฃเดพเดตเตเดจเตเดจเดคเดพเดฃเต: cat -A $DOCKER_CERT_PATH/key.pem. เดตเดฃเตเดŸเดฟเดฏเตเดŸเต† เดชเตเดฐเดคเต€เด•เดฎเดพเดฏ tr -d 'r' เดจเต€เด•เตเด•เด‚ เดšเต†เดฏเตโ€Œเดคเต เดžเดพเตป เดชเดฟเดถเด•เต เดฎเดฑเดฟเด•เดŸเดจเตเดจเต.

เด…เดŸเตเดคเตเดคเดคเดพเดฏเดฟ, เดจเดฟเด™เตเด™เดณเตเดŸเต† เดตเดฟเดตเต‡เดšเดจเดพเดงเดฟเด•เดพเดฐเดคเตเดคเดฟเตฝ เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เดธเตเดฑเตเดฑเต-เดฑเดฟเดฒเต€เดธเต เดŸเดพเดธเตเด•เตเด•เตเด•เตพ เดšเต‡เตผเด•เตเด•เดพเดตเตเดจเตเดจเดคเดพเดฃเต. เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดŽเดจเตเดฑเต† เดถเต‡เด–เดฐเดคเตเดคเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจ เดชเดคเดฟเดชเตเดชเต เด•เดพเดฃเดพเตป เด•เดดเดฟเดฏเตเด‚ https://gitlab.com/isqad/gitlab-ci-cd

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•