ΠΠ°Π΄ΡΠΌΠ°Π»ΡΡ ΠΊΠ°ΠΊ-ΡΠΎ ΡΠ°Π· Ρ ΠΎΠ± Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°. gitlab.com Π»ΡΠ±Π΅Π·Π½ΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π²ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ, ΠΈ Ρ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ ΡΠ΅ΡΠΈΠ» Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ, ΡΠ°Π·ΠΎΠ±ΡΠ°Π²ΡΠΈΡΡ ΠΈ Π½Π°ΠΏΠΈΡΠ°Π² Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΡΠ΅Π½Π°ΡΠΈΠΉ Π΄Π΅ΠΏΠ»ΠΎΡ. Π ΡΡΠ°ΡΡΠ΅ Ρ Π΄Π΅Π»ΡΡΡ ΡΠ²ΠΎΠΈΠΌ ΠΎΠΏΡΡΠΎΠΌ Ρ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎΠΌ.
TL;DR
- ΠΠ°ΡΡΡΠΎΠΈΡΡ VPS: ΠΎΡΠΊΠ»ΡΡΠΈΡΡ root, Π²Ρ ΠΎΠ΄ ΠΏΠΎ ΠΏΠ°ΡΠΎΠ»Ρ, ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ dockerd, Π½Π°ΡΡΡΠΎΠΈΡΡ ufw
- Π‘Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΡ Π΄Π»Ρ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°
docs.docker.com/engine/security/https/#create-a-ca-server-and-client-keys-with-openssl ΠΠΊΠ»ΡΡΠΈΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ dockerd ΡΠ΅ΡΠ΅Π· tcp ΡΠΎΠΊΠ΅Ρ: ΡΠ±ΡΠ°ΡΡ ΠΎΠΏΡΠΈΡ -H fd:// ΠΈΠ· ΠΊΠΎΠ½ΡΠΈΠ³Π° Π΄ΠΎΠΊΠ΅ΡΠ°. - ΠΡΠΎΠΏΠΈΡΠ°ΡΡ ΠΏΡΡΠΈ Π΄ΠΎ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΠ² Π² docker.json
- ΠΡΠΎΠΏΠΈΡΠ°ΡΡ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ gitlab Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ CI/CD Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΡΠΌ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΠ². ΠΠ°ΠΏΠΈΡΠ°ΡΡ ΡΠΊΡΠΈΠΏΡ .gitlab-ci.yml Π΄Π»Ρ Π΄Π΅ΠΏΠ»ΠΎΡ.
ΠΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ Ρ Π±ΡΠ΄Ρ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π° Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π΅ Debian.
ΠΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½Π°Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° VPS
ΠΠΎΡ Π²Ρ ΠΊΡΠΏΠΈΠ»ΠΈ ΠΈΠ½ΡΡΠ°Π½Ρ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π½Π°
Π‘ΠΊΡΠΈΠ½ΡΠΎΡ
ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ
ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠΌ ΡΠ°ΠΉΠ΅ΡΠ²ΠΎΠ» ufw:
apt-get update && apt-get install ufw
ΠΠΊΠ»ΡΡΠΈΠΌ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΡ ΠΏΠΎ-ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: Π±Π»ΠΎΠΊΠΈΡΡΠ΅ΠΌ Π²ΡΠ΅ Π²Ρ ΠΎΠ΄ΡΡΠΈΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ, ΡΠ°Π·ΡΠ΅ΡΠ°Π΅ΠΌ Π²ΡΠ΅ ΠΈΡΡ ΠΎΠ΄ΡΡΠΈΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ:
ufw default deny incoming
ufw default allow outgoing
ΠΠ°ΠΆΠ½ΠΎ: Π½Π΅ Π·Π°Π±ΡΠ΄Π΅ΠΌ ΡΠ°Π·ΡΠ΅ΡΠΈΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΠΏΠΎ ssh:
ufw allow OpenSSH
ΠΠ±ΡΠΈΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΡΠ°ΠΊΠΎΠΉ: Π Π°Π·ΡΠ΅ΡΠΈΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΏΠΎΡΡΡ: ufw allow 12345, Π³Π΄Π΅ 12345 β Π½ΠΎΠΌΠ΅Ρ ΠΏΠΎΡΡΠ° ΠΈΠ»ΠΈ ΠΆΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡΠ΅ΡΠ²ΠΈΡΠ°. ΠΠ°ΠΏΡΠ΅ΡΠΈΡΡ: ufw deny 12345
ΠΠΊΠ»ΡΡΠ°Π΅ΠΌ ΡΠ°ΠΉΠ΅ΡΠ²ΠΎΠ»:
ufw enable
ΠΡΡ ΠΎΠ΄ΠΈΠΌ ΠΈΠ· ΡΠ΅ΡΡΠΈΠΈ ΠΈ ΡΠ½ΠΎΠ²Π° Π»ΠΎΠ³ΠΈΠ½ΠΈΠΌΡΡ ΠΏΠΎ ssh.
ΠΠΎΠ±Π°Π²ΡΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π½Π°Π·Π½Π°ΡΡΡΠ΅ Π΅ΠΌΡ ΠΏΠ°ΡΠΎΠ»Ρ ΠΈ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ Π΅Π³ΠΎ Π² Π³ΡΡΠΏΠΏΡ sudo.
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:
sudo systemctl reload sshd
Π’Π΅ΠΏΠ΅ΡΡ Π΅ΡΠ»ΠΈ Π²Ρ ΠΈΠ»ΠΈ ΠΊΡΠΎ-ΡΠΎ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅Ρ Π²ΠΎΠΉΡΠΈ ΡΠ΅ΡΠ΅Π· ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ root, Ρ Π½Π΅Π³ΠΎ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ.
ΠΠ°Π»Π΅Π΅ ΡΡΠ°Π²ΠΈΠΌ dockerd, ΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠΆΠ΅ Π½Π΅ Π±ΡΠ΄Ρ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π²ΡΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΆΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ, ΡΡ
ΠΎΠ΄ΠΈΡΠ΅ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅ Π½Π° ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΡΠ°ΠΉΡ ΠΈ ΠΏΡΠΎΠΉΠ΄ΠΈΡΠ΅ ΡΡΠ°ΠΏΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ docker Π½Π° Π²Π°ΡΡ Π²ΠΈΡΡΡΠ°Π»ΠΊΡ:
ΠΠ΅Π½Π΅ΡΠ°ΡΠΈΡ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΠ²
Π§ΡΠΎΠ±Ρ ΡΠΏΡΠ°Π²Π»ΡΡΡ Π΄Π΅ΠΌΠΎΠ½ΠΎΠΌ Π΄ΠΎΠΊΠ΅ΡΠ° ΡΠ΄Π°Π»Π΅Π½Π½ΠΎ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠΈΡΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ TLS ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠΌΠ΅ΡΡ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ ΠΈ ΠΊΠ»ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°Π΄ΠΎ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΠΏΠ΅ΡΠ΅Π½Π΅ΡΡΠΈ Π½Π° ΡΠ΄Π°Π»Π΅Π½Π½ΡΡ Π²Π°ΡΡ ΠΌΠ°ΡΠΈΠ½Ρ. Π‘Π»Π΅Π΄ΡΠΉΡΠ΅ ΡΠ°Π³Π°ΠΌ, Π·Π°Π΄Π°Π½Π½ΡΠΌ Π² ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π½Π° ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΌ ΡΠ°ΠΉΡΠ΅ docker:
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° dockerd
Π ΡΡΠ΅Π½Π°ΡΠΈΠΈ Π·Π°ΠΏΡΡΠΊΠ° Π΄Π΅ΠΌΠΎΠ½Π° 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
ΠΠ΅ΡΠ΅Π·Π°ΠΏΡΡΡΠΈΠΌ dockerd Ρ Π½ΠΎΠ²ΡΠΌΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΠΌΠΈ:
sudo systemctl daemon-reload && sudo systemctl restart docker
ΠΡΠΎΠ²Π΅ΡΠΈΠΌ:
sudo systemctl status docker
ΠΡΠ»ΠΈ Π²ΡΠ΅ Β«Π·Π΅Π»Π΅Π½ΠΎΠ΅Β», ΡΠΎ ΡΡΠΈΡΠ°Π΅ΠΌ, ΡΡΠΎ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ ΠΌΡ ΡΡΠΏΠ΅ΡΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΈΠ»ΠΈ docker.
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° continuous deleivery Π½Π° gitlab
ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ Π²ΠΎΡΠΊΠ΅Ρ Π³ΠΈΡΠ°Π»Π°Π±Π° ΡΠΌΠΎΠ³ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π½Π° ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌ Ρ ΠΎΡΡΠ΅ Π΄ΠΎΠΊΠ΅ΡΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠΈΠΌΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡΡΡ, ΠΊΠ°ΠΊ ΠΈ Π³Π΄Π΅ Ρ ΡΠ°Π½ΠΈΡΡ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΡ ΠΈ ΠΊΠ»ΡΡ Π΄Π»Ρ ΡΠΈΡΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Ρ dockerd. Π― ΡΠ΅ΡΠΈΠ» Π΄Π°Π½Π½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΎΠΏΠΈΡΠ°Π² Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ gitlbab:
ΠΠ°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΡΠΏΠΎΠΉΠ»Π΅ΡΠ°
ΠΡΠΎΡΡΠΎ Π²ΡΠ²ΠΎΠ΄ΠΈΡΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΠ² ΠΈ ΠΊΠ»ΡΡΠ° ΡΠ΅ΡΠ΅Π· cat: cat ca.pem
. ΠΠΎΠΏΠΈΡΡΠ΅ΡΠ΅ ΠΈ Π²ΡΡΠ°Π²Π»ΡΠ΅ΡΠ΅ Π² Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
.
ΠΡΠΎΠΏΠΈΡΠ΅ΠΌ ΡΡΠ΅Π½Π°ΡΠΈΠΉ Π΄Π»Ρ Π΄Π΅ΠΏΠ»ΠΎΡ ΡΠ΅ΡΠ΅Π· Π³ΠΈΡΠ»Π°Π±. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΡΠ΄Π΅Ρ docker-in-docker (dind) ΠΎΠ±ΡΠ°Π·.
.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
ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π±ΡΠ»Π° Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ Β«Π²ΡΡΠ°ΡΠΈΡΡΒ» ΠΈΠ· ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ gitlab CI/CD ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΠ² Π² Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠΌ Π²ΠΈΠ΄Π΅. Π― Π½Π΅ ΠΌΠΎΠ³ ΠΏΠΎΠ½ΡΡΡ, ΠΏΠΎΡΠ΅ΠΌΡ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π»ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Ρ ΡΠ΄Π°Π»Π΅Π½Π½ΡΠΌ Ρ ΠΎΡΡΠΎΠΌ. ΠΠ° Ρ ΠΎΡΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠ΅Π» ΠΆΡΡΠ½Π°Π» sudo journalctl -u docker, ΡΠ°ΠΌ ΠΎΡΠΈΠ±ΠΊΠ° ΠΏΡΠΈ ΡΡΠΊΠΎΠΏΠΎΠΆΠ°ΡΠΈΠΈ. Π Π΅ΡΠΈΠ» Π³Π»ΡΠ½ΡΡΡ, ΡΡΠΎ Π²ΠΎΠΎΠ±ΡΠ΅ Ρ ΡΠ°Π½ΠΈΡΡΡ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ , Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΡΠ°ΠΊ cat -A $DOCKER_CERT_PATH/key.pem. ΠΡΠΈΠ±ΠΊΡ ΠΏΠΎΠ±ΠΎΡΠΎΠ», Π΄ΠΎΠ±Π°Π²ΠΈΠ² ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Π° ΠΊΠ°ΡΠ΅ΡΠΊΠΈ tr -d ‘r’.
ΠΠ°Π»Π΅Π΅ Π² ΡΡΠ΅Π½Π°ΡΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΠΎΡΡ-ΡΠ΅Π»ΠΈΠ·Π½ΡΠ΅ ΡΠ°ΡΠΊΠΈ Π½Π° ΡΠ²ΠΎΠ΅ ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΠ΅. ΠΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Ρ ΡΠ°Π±ΠΎΡΠ΅ΠΉ Π²Π΅ΡΡΠΈΠ΅ΠΉ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π² ΠΌΠΎΠ΅ΠΌ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com