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

ืื™ืš ืึทืžืึธืœ ื’ืขื“ืึทื ืง ื•ื•ืขื’ืŸ ืึธื˜ืึทืžื™ื™ื˜ื™ื ื’ ื“ื™ ื“ื™ืคึผืœื•ื™ืžืึทื ื˜ ืคื•ืŸ ืžื™ื™ืŸ ืคึผืจื•ื™ืขืงื˜. 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. ืคืึทืจืฉืจื™ื™ึทื‘ืŸ ืื™ืŸ ื’ื™ื˜ืœืึทื‘ ื•ื•ืขืจื™ืึทื‘ืึทืœื– ืื™ืŸ ื“ื™ ืกื™ / ืกื™ ืกืขื˜ื˜ื™ื ื’ืก ืžื™ื˜ ื“ื™ ืื™ื ื”ืึทืœื˜ ืคื•ืŸ ื“ื™ ืกืขืจื˜ื™ืคื™ืงืึทืฅ. ืฉืจื™ื™ื‘ ืึท ืฉืจื™ืคื˜ .gitlab-ci.yml ืคึฟืึทืจ ื“ื™ืคึผืœื•ื™ืžืึทื ื˜.

ืื™ืš ื•ื•ืขืœ ื•ื•ื™ื™ึทื–ืŸ ืึทืœืข ื‘ื™ื™ืฉืคื™ืœืŸ ืื•ื™ืฃ ื“ื™ ื“ืขื‘ื™ืึทืŸ ืคืึทืจืฉืคึผืจื™ื™ื˜ื•ื ื’.

ืขืจืฉื˜ VPS ืกืขื˜ืึทืคึผ

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

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

ืขืจืฉื˜ืขืจ, ื™ื ืกื˜ืึทืœื™ืจืŸ ื“ื™ ufw ืคื™ื™ืจื•ื•ืึทืœ:

apt-get update && apt-get install ufw

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

ufw default deny incoming
ufw default allow outgoing

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

ufw allow OpenSSH

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

ืงืขืจ ืื•ื™ืฃ ื“ื™ ืคื™ื™ืจื•ื•ืึทืœ:

ufw enable

ืžื™ืจ ืึทืจื•ื™ืกื’ืึทื ื’ ื“ื™ ืกืขืกื™ืข ืื•ืŸ ืงืœืึธืฅ ืื™ืŸ ื•ื•ื™ื“ืขืจ ื“ื•ืจืš ssh.

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

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

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

ssh-copy-id [email protected]

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

sudo nano /etc/ssh/sshd_config

ื“ื™ืกื™ื™ื‘ืึทืœ ืคึผืึทืจืึธืœ ืœืึธื’ื™ืŸ:

PasswordAuthentication no

ืจื™ืกื˜ืึทืจื˜ ื“ื™ sshd daemon:

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 ื›ืœ ื“ื–ืฉืขื ืขืจื™ื™ื˜ืึทื“ *.ืคึผืขื ื˜ืขืงืขืก ืคึฟืึทืจ ื“ื™ ืกืขืจื•ื•ืขืจ, ื ื™ื™ืžืœื™ ca.pem, server.pem, key.pem, ืžื•ื–ืŸ ื–ื™ื™ืŸ ื’ืขืฉื˜ืขืœื˜ ืื™ืŸ ื“ื™ /etc/docker ื•ื•ืขื’ื•ื•ื™ื™ึทื–ืขืจ ืื•ื™ืฃ ื“ื™ ืกืขืจื•ื•ืขืจ.

ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ Dockerd

ืื™ืŸ ื“ื™ ืงืึทื˜ืขืจ ืฉืจื™ืคื˜ ืคื•ืŸ ื“ืึธืงืขืจ ื“ืึทืขืžืึธืŸ, ืžื™ืจ ื‘ืึทื–ื™ื™ึทื˜ื™ืงืŸ ื“ื™ -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 ืึทืจื‘ืขื˜ืขืจ ื–ืึธืœ ืงืขื ืขืŸ ื•ื™ืกืคื™ืจืŸ ืงืึทืžืึทื ื“ื– ืื•ื™ืฃ ืึท ื•ื•ื™ื™ึทื˜ ื“ืึธืงืงืขืจ ื‘ืึทืœืขื‘ืึธืก, ืขืก ืื™ื– ื ื™ื™ื˜ื™ืง ืฆื• ื‘ืึทืฉืœื™ืกืŸ ื•ื•ื™ ืื•ืŸ ื•ื•ื• ืฆื• ืงืจืึธื ืกืขืจื˜ื™ืคื™ืงืึทืฅ ืื•ืŸ ื“ื™ ืฉืœื™ืกืœ ืคึฟืึทืจ ืึท ื™ื ืงืจื™ืคึผื˜ื™ื“ ืงืฉืจ ืžื™ื˜ Dockerd. ืื™ืš ืกืึทืœื•ื•ื“ ื“ืขื ืคึผืจืึธื‘ืœืขื ื“ื•ืจืš ืคืฉื•ื˜ ืึทื“ื™ื ื’ ื“ื™ ืคืืœื’ืขื ื“ืข ืฆื• ื“ื™ ื•ื•ืขืจื™ืึทื‘ืึทืœื– ืื™ืŸ ื“ื™ ื’ื™ื˜ืœื‘ืึทื‘ ืกืขื˜ื˜ื™ื ื’ืก:

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

ื ืึธืจ ืจืขื–ื•ืœื˜ืึทื˜ ื“ื™ ืื™ื ื”ืึทืœื˜ ืคื•ืŸ ื“ื™ ืกืขืจื˜ื™ืคื™ืงืึทืฅ ืื•ืŸ ืฉืœื™ืกืœ ื“ื•ืจืš ืงืึทืฅ: cat ca.pem. ื ืึธื›ืžืึทื›ืŸ ืื•ืŸ ืคึผืึทืคึผ ืื™ืŸ ื“ื™ ื‘ื™ื™ึทื˜ืขื•ื•ื“ื™ืง ื•ื•ืึทืœื•ืขืก.

ืœืึธืžื™ืจ ืฉืจื™ื™ึทื‘ืŸ ืึท ืฉืจื™ืคื˜ ืคึฟืึทืจ ื“ื™ืคึผืœื•ื™ืžืึทื ื˜ ื“ื•ืจืš GitLab. ื“ื™ ื“ืึธืงืงืขืจ-ืื™ืŸ-ื“ืึธืงืงืขืจ (ื“ื™ื ื“) ื‘ื™ืœื“ ื•ื•ืขื˜ ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื™ื ื˜.

.ื’ื™ื˜ืœืื‘-ืกื™.ื™ืžืœ

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

ื“ืขืจ ื”ื•ื™ืคึผื˜ ืคึผืจืึธื‘ืœืขื ืื™ื– ื’ืขื•ื•ืขืŸ ืฆื• "ืฆื™ืขืŸ" ื“ื™ ืื™ื ื”ืึทืœื˜ ืคื•ืŸ ื“ื™ ืกืขืจื˜ื™ืคื™ืงืึทืฅ ืื™ืŸ ืึท ื ืึธืจืžืึทืœ ืคืึธืจืขื ืคึฟื•ืŸ ื“ื™ gitlab CI / CD ื•ื•ืขืจื™ืึทื‘ืึทืœื–. ืื™ืš ืงืขืŸ ื ื™ืฉื˜ ื’ืขืคึฟื™ื ืขืŸ ืื•ื™ืก ื•ื•ืึธืก ื“ื™ ืงืฉืจ ืฆื• ื“ื™ ื•ื•ื™ื™ึทื˜ ื‘ืึทืœืขื‘ืึธืก ืื™ื– ื ื™ืฉื˜ ืืจื‘ืขื˜ืŸ. ืื•ื™ืฃ ื“ืขื ื‘ืึทืœืขื‘ืึธืก ืื™ืš ื’ืขืงื•ืงื˜ ืื•ื™ืฃ ื“ื™ ืœืึธื’ sudo journalctl -u docker, ืขืก ืื™ื– ื’ืขื•ื•ืขืŸ ืึท ื˜ืขื•ืช ื‘ืขืฉืึทืก ื“ื™ ื›ืึทื ื“ืฉื™ื™ืง. ืื™ืš ื‘ืึทืฉืœืึธืกืŸ ืฆื• ืงื•ืงืŸ ืื™ืŸ ื•ื•ืึธืก ืื™ื– ื‘ื›ืœืœ ืกื˜ืึธืจื“ ืื™ืŸ ื•ื•ืขืจื™ืึทื‘ืึทืœื–; ืฆื• ื˜ืึธืŸ ื“ืึธืก, ืื™ืจ ืงืขื ืขืŸ ืงื•ืงืŸ ื•ื•ื™ ื“ืึธืก: cat -A $DOCKER_CERT_PATH/key.pem. ืื™ืš ืึธื•ื•ื•ืขืจืงื™ื™ื ื“ืขื ื˜ืขื•ืช ื“ื•ืจืš ืึทื“ื™ื ื’ ื“ื™ ื‘ืึทื–ื™ื™ึทื˜ื™ืงื•ื ื’ ืคื•ืŸ ื“ื™ ื•ื•ืขื’ืขืœืข ื›ืึทืจืึทืงื˜ืขืจ tr -d 'r'.

ื“ืขืจื ืึธืš, ืื™ืจ ืงืขื ืขืŸ ืœื™ื™ื’ืŸ ื˜ืึทืกืงืก ื ืึธืš ืžืขืœื“ื•ื ื’ ืฆื• ื“ื™ ืฉืจื™ืคื˜ ืœื•ื™ื˜ ื“ื™ื™ืŸ ื“ื™ืกืงืจืขืฉืึทืŸ. ืื™ืจ ืงืขื ืขืŸ ื–ืขืŸ ื“ื™ ืึทืจื‘ืขื˜ ื•ื•ืขืจืกื™ืข ืื™ืŸ ืžื™ื™ืŸ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ https://gitlab.com/isqad/gitlab-ci-cd

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

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