рдореИрдВрдиреЗ рдПрдХ рдмрд╛рд░ рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рддреИрдирд╛рддреА рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрд╛ рдерд╛ред gitlab.com рдХреГрдкрдпрд╛ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рднреА рдЙрдкрдХрд░рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдФрд░ рдПрдХ рдЫреЛрдЯреА рддреИрдирд╛рддреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦреАред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рд╕рдореБрджрд╛рдп рдХреЗ рд╕рд╛рде рдЕрдкрдирд╛ рдЕрдиреБрднрд╡ рд╕рд╛рдЭрд╛ рдХрд░рддрд╛ рд╣реВрдВред
TL, рдбреЙ
- рд╡реАрдкреАрдПрд╕ рд╕реЗрдЯ рдХрд░реЗрдВ: рд░реВрдЯ рдЕрдХреНрд╖рдо рдХрд░реЗрдВ, рдкрд╛рд╕рд╡рд░реНрдб рд╕реЗ рд▓реЙрдЧ рдЗрди рдХрд░реЗрдВ, рдбреЙрдХрд░реНрдб рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ, рдпреВрдПрдлрдбрдмреНрд▓реНрдпреВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ
- рд╕рд░реНрд╡рд░ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдкреНрд░рдорд╛рдгрдкрддреНрд░ рддреИрдпрд╛рд░ рдХрд░реЗрдВ
docs.docker.com/engine/security/https/#create-a-ca-server-and-client-keys-with-openssl рдЯреАрд╕реАрдкреА рд╕реЙрдХреЗрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЙрдХрд░реНрдб рдирд┐рдпрдВрддреНрд░рдг рд╕рдХреНрд╖рдо рдХрд░реЗрдВ: рдбреЙрдХрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗ -H fd:// рд╡рд┐рдХрд▓реНрдк рд╣рдЯрд╛ рджреЗрдВред - Docker.json рдореЗрдВ рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдкрде рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдВ
- рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рд╕реАрдЖрдИ/рд╕реАрдбреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдЧрд┐рдЯрд▓реИрдм рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдореЗрдВ рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░реЗрдВред рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ .gitlab-ci.yml рд▓рд┐рдЦреЗрдВред
рдореИрдВ рдбреЗрдмрд┐рдпрди рд╡рд┐рддрд░рдг рдкрд░ рд╕рднреА рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рдКрдВрдЧрд╛ред
рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╡реАрдкреАрдПрд╕ рд╕реЗрдЯрдЕрдк
рддреЛ рдЖрдкрдиреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЦрд░реАрджрд╛
рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, ufw рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:
apt-get update && apt-get install ufw
рдЖрдЗрдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдиреАрддрд┐ рд╕рдХреНрд╖рдо рдХрд░реЗрдВ: рд╕рднреА рдЖрдиреЗ рд╡рд╛рд▓реЗ рдХрдиреЗрдХреНрд╢рдиреЛрдВ рдХреЛ рдмреНрд▓реЙрдХ рдХрд░реЗрдВ, рд╕рднреА рдЖрдЙрдЯрдЧреЛрдЗрдВрдЧ рдХрдиреЗрдХреНрд╢рдиреЛрдВ рдХреЛ рдЕрдиреБрдорддрд┐ рджреЗрдВ:
ufw default deny incoming
ufw default allow outgoing
рдорд╣рддреНрд╡рдкреВрд░реНрдг: рдПрд╕рдПрд╕рдПрдЪ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрдиреЗрдХреНрд╢рди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдирд╛ рди рднреВрд▓реЗрдВ:
ufw allow OpenSSH
рд╕рд╛рдорд╛рдиреНрдп рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ: рдкреЛрд░реНрдЯ рджреНрд╡рд╛рд░рд╛ рдХрдиреЗрдХреНрд╢рди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВ: ufw 12345 рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВ, рдЬрд╣рд╛рдВ 12345 рдкреЛрд░реНрдЯ рдирдВрдмрд░ рдпрд╛ рд╕реЗрд╡рд╛ рдХрд╛ рдирд╛рдо рд╣реИред рдЗрдирдХрд╛рд░: рдпреВрдПрдлрдбрдмреНрд▓реНрдпреВ рдЗрдирдХрд╛рд░ 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
рдЕрдм рдпрджрд┐ рдЖрдк рдпрд╛ рдХреЛрдИ рдЕрдиреНрдп рд╡реНрдпрдХреНрддрд┐ рд░реВрдЯ рдпреВрдЬрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЙрдЧ рдЗрди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред
рдЗрд╕рдХреЗ рдмрд╛рдж, рдбреЙрдХрд░рдб рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ, рдореИрдВ рдпрд╣рд╛рдВ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╕рдм рдХреБрдЫ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХреЗ рд▓рд┐рдВрдХ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ рдФрд░ рдЕрдкрдиреЗ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдкрд░ рдбреЙрдХрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдЪрд░рдгреЛрдВ рд╕реЗ рдЧреБрдЬрд░реЗрдВ:
рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдмрдирд╛рдирд╛
рдбреЙрдХрд░ рдбреЗрдореЙрди рдХреЛ рджреВрд░рд╕реНрде рд░реВрдк рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдЯреАрдПрд▓рдПрд╕ рдХрдиреЗрдХреНрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдФрд░ рдПрдХ рдХреБрдВрдЬреА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕реЗ рдЬреЗрдирд░реЗрдЯ рдХрд░рдХреЗ рдЖрдкрдХреА рд░рд┐рдореЛрдЯ рдорд╢реАрди рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдбреЙрдХрд░ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рджрд┐рдП рдЧрдП рдирд┐рд░реНрджреЗрд╢реЛрдВ рдореЗрдВ рджрд┐рдП рдЧрдП рдЪрд░рдгреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ:
рдбреЙрдХрд░реНрдб рдХреА рд╕реНрдерд╛рдкрдирд╛
рдбреЙрдХрд░ рдбреЗрдореЙрди рд▓реЙрдиреНрдЪ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ, рд╣рдо -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
рдпрджрд┐ рд╕рдм рдХреБрдЫ "рд╣рд░рд╛" рд╣реИ, рддреЛ рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╣рдордиреЗ рд╕рд░реНрд╡рд░ рдкрд░ рдбреЙрдХрд░ рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд▓рд┐рдпрд╛ рд╣реИред
рдЧрд┐рдЯрд▓реИрдм рдкрд░ рдирд┐рд░рдВрддрд░ рдбрд┐рд▓реАрд╡рд░реА рдХреА рд╕реНрдерд╛рдкрдирд╛
рдЧреАрддрд╛рд▓рдмрд╛ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рджреВрд░рд╕реНрде рдбреЙрдХрд░ рд╣реЛрд╕реНрдЯ рдкрд░ рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рддрдп рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдбреЙрдХрд░рдб рдХреЗ рд╕рд╛рде рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдХрдиреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдФрд░ рдХреБрдВрдЬреА рдХреЛ рдХреИрд╕реЗ рдФрд░ рдХрд╣рд╛рдБ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдПред рдореИрдВрдиреЗ 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 # ╤Б╨║╤А╨╕╨┐╤В ╨┤╨╡╨┐╨╗╨╛╤П ╤В╤Г╤В
рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдкрд░рд┐рдирд┐рдпреЛрдЬрди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рд╕рд╛рдордЧреНрд░реА:
рдмрд┐рди/рддреИрдирд╛рддреА.рд╢
#!/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
рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛ рдЧрд┐рдЯрд▓реИрдм рд╕реАрдЖрдИ/рд╕реАрдбреА рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рд╕реЗ рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рдореЗрдВ "рдЦреАрдВрдЪрдиреЗ" рдХреА рдереАред рдореИрдВ рд╕рдордЭ рдирд╣реАрдВ рдкрд╛рдпрд╛ рдХрд┐ рд░рд┐рдореЛрдЯ рд╣реЛрд╕реНрдЯ рд╕реЗ рдХрдиреЗрдХреНрд╢рди рдХрд╛рдо рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рдерд╛ред рд╣реЛрд╕реНрдЯ рдкрд░ рдореИрдВрдиреЗ рд▓реЙрдЧ рд╕реБрдбреЛ рдЬрд░реНрдирд▓рдХреНрдЯрд▓ -рдпреВ рдбреЙрдХрд░ рдХреЛ рджреЗрдЦрд╛, рд╣реИрдВрдбрд╢реЗрдХ рдХреЗ рджреМрд░рд╛рди рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реБрдИ рдереАред рдореИрдВрдиреЗ рдпрд╣ рджреЗрдЦрдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдХрд┐ рдЖрдо рддреМрд░ рдкрд░ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдореЗрдВ рдХреНрдпрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ; рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ: cat -A $DOCKER_CERT_PATH/key.pem. рдореИрдВрдиреЗ рдХреИрд░рд┐рдПрдЬ рдХреИрд░реЗрдХреНрдЯрд░ tr -d 'r' рдХреЛ рд╣рдЯрд╛рдХрд░ рддреНрд░реБрдЯрд┐ рдкрд░ рдХрд╛рдмреВ рдкрд╛ рд▓рд┐рдпрд╛ред
рдЗрд╕рдХреЗ рдмрд╛рдж, рдЖрдк рдЕрдкрдиреЗ рд╡рд┐рд╡реЗрдХ рд╕реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд░рд┐рд▓реАрдЬрд╝ рдХреЗ рдмрд╛рдж рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдк рдореЗрд░реЗ рднрдВрдбрд╛рд░ рдореЗрдВ рдХрд╛рд░реНрдпрд╢реАрд▓ рд╕рдВрд╕реНрдХрд░рдг рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ
рд╕реНрд░реЛрдд: www.habr.com