рдореА рдПрдХрджрд╛ рдорд╛рдЭреНрдпрд╛ рдкреНрд░рдХрд▓реНрдкрд╛рдЪреА рддреИрдирд╛рддреА рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рдХрд░рдгреНрдпрд╛рдЪрд╛ рд╡рд┐рдЪрд╛рд░ рдХреЗрд▓рд╛. gitlab.com рджрдпрд╛рд│реВрдкрдгреЗ рдпрд╛рд╕рд╛рдареА рд╕рд░реНрд╡ рд╕рд╛рдзрдиреЗ рдкреНрд░рджрд╛рди рдХрд░рддреЗ, рдЖрдгрд┐ рдЕрд░реНрдерд╛рддрдЪ рдореА рддреНрдпрд╛рдЪрд╛ рдлрд╛рдпрджрд╛ рдШреЗрдгреНрдпрд╛рдЪреЗ рдард░рд╡рд▓реЗ, рддреЗ рд╢реЛрдзреВрди рдХрд╛рдврд▓реЗ рдЖрдгрд┐ рдПрдХ рдЫреЛрдЯреА рдбрд┐рдкреНрд▓реЙрдпрдореЗрдВрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рд╣рд┐рд▓реА. рдпрд╛ рд▓реЗрдЦрд╛рдд рдореА рдорд╛рдЭрд╛ рдЕрдиреБрднрд╡ рд╕рдореБрджрд╛рдпрд╛рд╢реА рд╢реЗрдЕрд░ рдХреЗрд▓рд╛ рдЖрд╣реЗ.
TL; рдбреЙ
- VPS рд╕реЗрдЯ рдХрд░рд╛: рд░реВрдЯ рдЕрдХреНрд╖рдо рдХрд░рд╛, рдкрд╛рд╕рд╡рд░реНрдбрд╕рд╣ рд▓реЙрдЧ рдЗрди рдХрд░рд╛, рдбреЙрдХрд░реНрдб рд╕реНрдерд╛рдкрд┐рдд рдХрд░рд╛, ufw рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рд╛
- рд╕рд░реНрд╡реНрд╣рд░ рдЖрдгрд┐ рдХреНрд▓рд╛рдпрдВрдЯрд╕рд╛рдареА рдкреНрд░рдорд╛рдгрдкрддреНрд░реЗ рд╡реНрдпреБрддреНрдкрдиреНрди рдХрд░рд╛
docs.docker.com/engine/security/https/#create-a-ca-server-and-client-keys-with-openssl tcp рд╕реЙрдХреЗрдЯрджреНрд╡рд╛рд░реЗ рдбреЙрдХрд░реНрдб рдирд┐рдпрдВрддреНрд░рдг рд╕рдХреНрд╖рдо рдХрд░рд╛: рдбреЙрдХрд░ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рдирдордзреВрди -H fd:// рдкрд░реНрдпрд╛рдп рдХрд╛рдврд╛. - docker.json рдордзреНрдпреЗ рдкреНрд░рдорд╛рдгрдкрддреНрд░рд╛рдВрд╕рд╛рдареА рдкрде рдиреЛрдВрджрдгреА рдХрд░рд╛
- рдкреНрд░рдорд╛рдгрдкрддреНрд░рд╛рдВрдЪреНрдпрд╛ рд╕рд╛рдордЧреНрд░реАрд╕рд╣ CI/CD рд╕реЗрдЯрд┐рдВрдЧреНрдЬрдордзреНрдпреЗ рдЧрд┐рдЯрд▓реЕрдм рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕рдордзреНрдпреЗ рдиреЛрдВрджрдгреА рдХрд░рд╛. рдЙрдкрдпреЛрдЬрдирд╛рд╕рд╛рдареА рд╕реНрдХреНрд░рд┐рдкреНрдЯ .gitlab-ci.yml рд▓рд┐рд╣рд╛.
рдореА рдбреЗрдмрд┐рдпрди рд╡рд┐рддрд░рдгрд╛рд╡рд░реАрд▓ рд╕рд░реНрд╡ рдЙрджрд╛рд╣рд░рдгреЗ рджрд╛рдЦрд╡рддреЛ.
рдкреНрд░рд╛рд░рдВрднрд┐рдХ VPS рд╕реЗрдЯрдЕрдк
рддрд░ рддреБрдореНрд╣реА рдпреЗрдереЗ рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╡рд┐рдХрдд рдШреЗрддрд▓реЗ
рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ
рдкреНрд░рдердо, 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 рджреНрд╡рд╛рд░реЗ рдкреБрдиреНрд╣рд╛ рд▓реЙрдЧ рдЗрди рдХрд░рддреЛ.
рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдЬреЛрдбрд╛, рддреНрдпрд╛рд▓рд╛ рдкрд╛рд╕рд╡рд░реНрдб рджреНрдпрд╛ рдЖрдгрд┐ рддреНрдпрд╛рд▓рд╛ sudo рдЧрдЯрд╛рдд рдЬреЛрдбрд╛.
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
рдЖрддрд╛ рдЬрд░ рддреБрдореНрд╣реА рдХрд┐рдВрд╡рд╛ рдЗрддрд░ рдХреЛрдгреА рд░реВрдЯ рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдореНрд╣рдгреВрди рд▓реЙрдЧ рдЗрди рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХреЗрд▓рд╛ рддрд░ рддреЗ рдХрд╛рд░реНрдп рдХрд░рдгрд╛рд░ рдирд╛рд╣реА.
рдкреБрдвреЗ, рдбреЙрдХрд░реНрдб рд╕реНрдерд╛рдкрд┐рдд рдХрд░рд╛, рдореА рдпреЗрдереЗ рдкреНрд░рдХреНрд░рд┐рдпреЗрдЪреЗ рд╡рд░реНрдгрди рдХрд░рдгрд╛рд░ рдирд╛рд╣реА, рдХрд╛рд░рдг рд╕рд░реНрд╡рдХрд╛рд╣реА рдЖрдзреАрдЪ рдмрджрд▓рд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ, рдЕрдзрд┐рдХреГрдд рд╡реЗрдмрд╕рд╛рдЗрдЯрдЪреНрдпрд╛ рджреБрд╡реНрдпрд╛рдЪреЗ рдЕрдиреБрд╕рд░рдг рдХрд░рд╛ рдЖрдгрд┐ рдЖрдкрд▓реНрдпрд╛ рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдорд╢реАрдирд╡рд░ рдбреЙрдХрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдЪрд░рдгрд╛рдВрд╡рд░ рдЬрд╛:
рдкреНрд░рдорд╛рдгрдкрддреНрд░реЗ рддрдпрд╛рд░ рдХрд░рдгреЗ
рдбреЙрдХрд░ рдбрд┐рдорди рджреВрд░рд╕реНрдердкрдгреЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдПрдирдХреНрд░рд┐рдкреНрдЯреЗрдб TLS рдХрдиреЗрдХреНрд╢рди рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рд╣реЗ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдкрд▓реНрдпрд╛рдХрдбреЗ рдПрдХ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЖрдгрд┐ рдПрдХ рдХреА рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ, рдЬреЗ рдЖрдкрд▓реНрдпрд╛ рд░рд┐рдореЛрдЯ рдорд╢реАрдирд╡рд░ рд╡реНрдпреБрддреНрдкрдиреНрди рдЖрдгрд┐ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдЕрдзрд┐рдХреГрдд рдбреЙрдХрд░ рд╡реЗрдмрд╕рд╛рдЗрдЯрд╡рд░реАрд▓ рд╕реВрдЪрдирд╛рдВрдордзреНрдпреЗ рджрд┐рд▓реЗрд▓реНрдпрд╛ рдЪрд░рдгрд╛рдВрдЪреЗ рдЕрдиреБрд╕рд░рдг рдХрд░рд╛:
рдбреЙрдХрд░реНрдб рд╕реЗрдЯ рдХрд░рдд рдЖрд╣реЗ
рдбреЙрдХрд░ рдбрд┐рдорди рд▓рд╛рдБрдЪ рд╕реНрдХреНрд░рд┐рдкреНрдЯрдордзреНрдпреЗ, рдЖрдореНрд╣реА -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
рдЬрд░ рд╕рд░реНрд╡ рдХрд╛рд╣реА "рд╣рд┐рд░рд╡реЗ" рдЕрд╕реЗрд▓, рддрд░ рдЖрдореНрд╣реА рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЛ рдХреА рдЖрдореНрд╣реА рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рдбреЙрдХрд░ рдпрд╢рд╕реНрд╡реАрд░рд┐рддреНрдпрд╛ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХреЗрд▓реЗ рдЖрд╣реЗ.
gitlab рд╡рд░ рд╕рддрдд рдбрд┐рд▓рд┐рд╡реНрд╣рд░реА рд╕реЗрдЯ рдХрд░рдгреЗ
рд░рд┐рдореЛрдЯ рдбреЙрдХрд░ рд╣реЛрд╕реНрдЯрд╡рд░ рдЧрд┐рддрд╛рд▓рд╛рдмрд╛ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдЖрджреЗрд╢ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдгреНрдпрд╛рд╕ рд╕рдХреНрд╖рдо рд╣реЛрдгреНрдпрд╛рд╕рд╛рдареА, рдбреЙрдХрд░реНрдбрд╕рд╣ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдХрдиреЗрдХреНрд╢рдирд╕рд╛рдареА рдкреНрд░рдорд╛рдгрдкрддреНрд░реЗ рдЖрдгрд┐ рдХреА рдХрд╢реА рдЖрдгрд┐ рдХреБрдареЗ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд░рд╛рдпрдЪреА рд╣реЗ рдард░рд╡рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдореА 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
рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯрдЪреА рд╕рд╛рдордЧреНрд░реА рдЧрд┐рдЯрд▓реЕрдм рд╕реАрдЖрдп/рд╕реАрдбреА рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕рдордзреВрди рд╕рд╛рдорд╛рдиреНрдп рд╕реНрд╡рд░реВрдкрд╛рдд "рдкреБрд▓" рдХрд░рдгреЗ рд╣реА рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛ рд╣реЛрддреА. рд░рд┐рдореЛрдЯ рд╣реЛрд╕реНрдЯрдЪреЗ рдХрдиреЗрдХреНрд╢рди рдХрд╛ рдХрд╛рдо рдХрд░рдд рдирд╛рд╣реА рд╣реЗ рдорд▓рд╛ рд╕рдордЬреВ рд╢рдХрд▓реЗ рдирд╛рд╣реА. рд╣реЛрд╕реНрдЯрд╡рд░ рдореА рд▓реЙрдЧ sudo journalctl -u рдбреЙрдХрд░ рдкрд╛рд╣рд┐рд▓рд╛, рд╣рдБрдбрд╢реЗрдХ рджрд░рдореНрдпрд╛рди рдПрдХ рддреНрд░реБрдЯреА рдЖрд▓реА. рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕рдордзреНрдпреЗ рд╕рд╛рдзрд╛рд░рдгрдкрдгреЗ рдХрд╛рдп рд╕рд╛рдард╡рд▓реЗ рдЬрд╛рддреЗ рддреЗ рдкрд╛рд╣рдгреНрдпрд╛рдЪреЗ рдореА рдард░рд╡рд▓реЗ; рд╣реЗ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣реА рдЕрд╕реЗ рджрд┐рд╕реВ рд╢рдХрддрд╛: cat -A $DOCKER_CERT_PATH/key.pem. рдореА рдХреЕрд░реЗрдЬ рд╡рд░реНрдг tr -d 'r' рдХрд╛рдвреВрди рдЯрд╛рдХреВрди рддреНрд░реБрдЯреАрд╡рд░ рдорд╛рдд рдХреЗрд▓реА.
рдкреБрдвреЗ, рддреБрдореНрд╣реА рддреБрдордЪреНрдпрд╛ рд╡рд┐рд╡реЗрдХрдмреБрджреНрдзреАрдиреБрд╕рд╛рд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯрдордзреНрдпреЗ рдкреЛрд╕реНрдЯ-рд░рд┐рд▓реАрдЭ рдХрд╛рд░реНрдпреЗ рдЬреЛрдбреВ рд╢рдХрддрд╛. рддреБрдореНрд╣реА рдорд╛рдЭреНрдпрд╛ рднрд╛рдВрдбрд╛рд░рд╛рдд рдХрд╛рд░реНрдпрд░рдд рдЖрд╡реГрддреНрддреА рдкрд╛рд╣реВ рд╢рдХрддрд╛
рд╕реНрддреНрд░реЛрдд: www.habr.com