рд▓рд╛рд░рд╡реЗрд▓ + рдбреЙрдХрдЯрд░ + рдЧрд┐рдЯрд▓реИрдмред рдХрд╣рд╛рдБ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ

рдореИрдВрдиреЗ рдЖрдорддреМрд░ рдкрд░ рд╣рдореЗрд╢рд╛ рдПрдХ рдбреЙрдХрдЯрд░ рдХреЗ рдмрд┐рдирд╛ рдХрд┐рдпрд╛ рдФрд░ рд╕реЛрдЪрд╛ рдХрд┐ рдмрдбрд╝реА рдХрдВрдкрдирд┐рдпреЛрдВ рдореЗрдВ рдХреЗрд╡рд▓ рдмрдбрд╝реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдбреЙрдХрдЯрд░ рдХреА рдЬрд░реВрд░рдд рд╣реЛрддреА рд╣реИред рд▓реЗрдХрд┐рди рдПрдХ рджрд┐рди рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдПрдХ рдбреЙрдХрдЯрд░ рдПрдХ рджреЛрд╕реНрдд рдХреЗ рдЧреАрддрд╛рд▓рд╛рдм рдХреЗ рд╕рд╛рде рдорд┐рд▓рдХрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рдореБрдЭреЗ рдЕрднреА рднреА рдЗрд╕рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдорддреМрд░ рдкрд░ рд╣реЛрддрд╛ рд╣реИ, рдореБрдЭреЗ рдПрдХ рднреА рдЙрдкрдпреБрдХреНрдд рд▓реЗрдЦ рдирд╣реАрдВ рдорд┐рд▓рд╛ - рд╡реЗ рдпрд╛ рддреЛ рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рдереЗ рдпрд╛ рдЕрдзреВрд░реЗ рдереЗ, рдпрд╛ рдирд┐рд╣рд┐рдд рдереЗ рдЬреЛ рдЖрдк рд╕рднреА рдЬрд╛рдирддреЗ рд╣реИрдВред рдореБрдЭреЗ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд╡рд┐рднрд┐рдиреНрди рд╕реНрд░реЛрддреЛрдВ рдХреА рддрд▓рд╛рд╢ рдХрд░рдиреА рдереА, рдпрд╣ рд╕рдм рдПрдХ рд╕рд╛рде рд░рдЦрд╛ рдФрд░ рдЕрдВрдд рдореЗрдВ рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкрд░рд┐рдпреЛрдЬрдирд╛ рдФрд░ рд╕реАрдЖрдИ / рд╕реАрдбреА рдмрдирд╛рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ред

рд╕рднреА рдХрд╛рдо рдХреЛ рддреАрди рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рд╕реНрдерд╛рдиреАрдп рдорд╢реАрди рдкрд░, рд╣рд┐рдЯрд▓реИрдм рдкрд░ рдФрд░ рд╕рд░реНрд╡рд░ рдкрд░ред

рдЗрд╕рд▓рд┐рдП, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдПрдХ gitlab рдЦрд╛рддреЗ рдФрд░ KVM рдпрд╛ XEN рд╡рд░реНрдЪреБрдЕрд▓рд╛рдЗрдЬреЗрд╢рди рдХреЗ рд╕рд╛рде рдПрдХ рджреВрд░рд╕реНрде рд╕рд░реНрд╡рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рднрд╛рдЧ 1. рд╕реНрдерд╛рдиреАрдп рдорд╢реАрди


рд╕реНрдерд╛рдиреАрдп рдорд╢реАрди рдкрд░, рдЖрдкрдХреЛ рдбреЙрдХрдЯрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЯрд┐рдкреНрдкрдгреА
. Docker Linux ( Ubuntu, ), Windows MacOS. macos , Windows . - , linux . - , . VirtualBox. Ubuntu

рд▓рд┐рдирдХреНрд╕ рд╡рд╛рддрд╛рд╡рд░рдг рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдирд┐рдореНрди рдХрдорд╛рдВрдб рдЪрд▓рд╛рдиреЗ рд╣реЛрдВрдЧреЗред

рдкреБрд░рд╛рдиреЗ рдХрдВрдЯреЗрдирд░ рд╣рдЯрд╛рдПрдВ:

sudo apt-get remove docker docker-engine docker.io containerd runc

рдЕрджреНрдпрддрди рдЕрджреНрдпрддрди:

sudo apt-get update

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рддрд╛рдХрд┐ рдЖрдк doos рдХреЛ https рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХреЗрдВ:

sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

рдЖрдзрд┐рдХрд╛рд░рд┐рдХ GPG docker рдХреБрдВрдЬреА рдЬреЛрдбрд╝реЗрдВ:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдкреНрд░рд┐рдВрдЯ рд╕рд╣реА рд╣реИ:

sudo apt-key fingerprint 0EBFCD88

рдЙрддреНрддрд░:

pub   rsa4096 2017-02-22 [SCEA]
      9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88
uid           [ unknown] Docker Release (CE deb) <docker@docker.com>
sub   rsa4096 2017-02-22 [S]

рдбрд╛рдЙрдирд▓реЛрдб рд╕реНрдерд┐рд░ рд╕рдВрд╕реНрдХрд░рдг:

sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

рдлрд┐рд░ рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ:

sudo apt-get update

рдирд╡реАрдирддрдо рдбреЙрдХрдЯрд░ рдЗрдВрдЬрди рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:

sudo apt-get install docker-ce docker-ce-cli containerd.io

рдбреЙрдХрдЯрд░ рдСрдкрд░реЗрд╢рди рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ:

sudo docker run hello-world

рдпрджрд┐ рд╕рдм рдХреБрдЫ рд╕рд╣реА рд╣реИ, рддреЛ рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб рдЗрдореЗрдЬ рдХрд╛ рдбрд╛рдЙрдирд▓реЛрдб рд╢реБрд░реВ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рдбреЙрдХ рдХреЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдореЗрдВ рдкреВрд░реНрдг рдирд┐рд░реНрджреЗрд╢ ред

рд╣рдореЗрдВ рдбреЙрдХрдЯрд░-рдХрдореНрдкреЛрдЬрд╝ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдирд┐рд░реНрджреЗрд╢ рдпрд╣рд╛рдВ рд╣реИ ред

рдЗрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВред

рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ:

sudo curl -L "https://github.com/docker/compose/releases/download/1.25.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

рдПрдХ рд╡реНрдпрд╛рдпрд╛рдо рд╕рд╣реА рдЬреЛрдбрд╝рдирд╛:

sudo chmod +x /usr/local/bin/docker-compose

рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ:

sudo docker-compose --version

рд╣рдордиреЗ рдбреЙрдХрдЯрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛, рдЕрдм рдЫрд╡рд┐ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ digitalocean рд╡реЗрдмрд╕рд╛рдЗрдЯ: www.digitalocean.com/community/tutorials/how-to-set-up-laravel-nginx-and-mysql-with.nocker-compose-ru рд╕реЗ рд▓реЗрдЦ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ ред рдЗрд╕ рд▓реЗрдЦ рдХрд╛ рдкреБрдирд░реНрдореБрджреНрд░рдг рд╣реЛрдЧрд╛ред

рд▓рд╛рд░рд╡реЗрд▓ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рдФрд░ рдирд┐рд░реНрднрд░рддрд╛ рд╕реНрдерд╛рдкрд┐рдд

рдХрд░рдирд╛ рдкрд╣рд▓реЗ рдЪрд░рдг рдореЗрдВ, рд╣рдордиреЗ рд▓рд╛рд░рд╡реЗрд▓ рдХрд╛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдФрд░ рдХрдореНрдкреЛрдЬрд╝рд░, рдПрдкреНрд▓рд┐рдХреЗрд╢рди-рд╕реНрддрд░реАрдп PHP рдкреИрдХреЗрдЬ рдореИрдиреЗрдЬрд░ рд╕рд╣рд┐рдд рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рд╕реНрдерд╛рдкрд┐рдд рдХреАрдВред рд╣рдо рдбреЙрдХрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрди рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВрдЧреЗ рддрд╛рдХрд┐ рд╕рдВрдЧреАрддрдХрд╛рд░ рдХреА рд╡реИрд╢реНрд╡рд┐рдХ рд╕реНрдерд╛рдкрдирд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХреЗред

рдЕрдкрдиреА рд╣реЛрдо рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реА рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рд▓рд╛рд░рд╡реЗрд▓ рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд▓рд╛рд░реНрд╡рд╛-рдРрдк рдирд╛рдордХ рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдХреНрд▓реЛрди рдХрд░реЗрдВ:

cd ~
git clone https://github.com/laravel/laravel.git laravel-app

рд▓рд╛рд░реНрд╡рд╛-рдРрдк рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкрд░ рдЬрд╛рдПрдВ:

cd ~/laravel-app

рдлрд┐рд░ рд╕рдВрдЧреАрддрдХрд╛рд░ рдЫрд╡рд┐ рдХреЛ рдЙрди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдореЗрдВ рдорд╛рдЙрдВрдЯ рдХрд░реЗрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдЕрдкрдиреЗ рд▓рд╛рд╡реЗрд▓реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдХрдВрдкреЛрдЬрд░ рдЧреНрд▓реЛрдм рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдУрд╡рд░рд╣реЗрдб рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд╛рд╣рддреЗ рд╣реИрдВ:

docker run --rm -v $(pwd):/app composer install

рдбреЙрдХ рд░рди рдХрдорд╛рдВрдб рдХреЗ -v рдФрд░ --r рдЭрдВрдбреЗ рдПрдХ рд╡рд░реНрдЪреБрдЕрд▓ рдХрдВрдЯреЗрдирд░ рдмрдирд╛рддреЗ рд╣реИрдВ рдЬреЛ рд╡рд░реНрддрдорд╛рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рд╣рдЯрд╛рдП рдЬрд╛рдиреЗ рддрдХ рдмрд╛рдВрдзрддрд╛ рд╣реИред рдЖрдкрдХреЗ ~ / рд▓рд╛рд░реНрд╡рд╛-рдРрдк рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рд╡рд┐рдХреНрд░реЗрддрд╛ рдлрд╝реЛрд▓реНрдбрд░ рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ рдмрдирд╛рдИ рдЧрдИ рд╕рдВрдЧреАрддрдХрд╛рд░ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╡рд░реНрддрдорд╛рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдирд┐рд╖реНрдХрд░реНрд╖ рдореЗрдВ, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдЕрдиреБрдорддрд┐рдпрд╛рдБ рд╕реНрддрд░ рд╕реЗрдЯ рдХрд░реЗрдВ рддрд╛рдХрд┐ рдпрд╣ рд░реВрдЯ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдХреЗ рдмрд┐рдирд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рдореЗрдВ рд╣реЛ:

sudo chown -R $USER:$USER ~/laravel-app

рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛрдЧрд╛ рдЬрдм рдЖрдк рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреА рдЫрд╡рд┐ рдХреЗ рд▓рд┐рдП рдбреЙрдХрд░рдлрд╛рдЗрд▓ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЖрдкрдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдФрд░ рд░реВрдЯ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░реЛрдВ рдХреЗ рдмрд┐рдирд╛ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред

рдЕрдм рдЖрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рд░рдЦрд╛ рд╣реИ рдФрд░ рдбреЙрдХрд░ рдХрдВрдкреЛрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реЗрд╡рд╛рдУрдВ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛ рд╕рдХрддрд╛ рд╣реИред

рдбреЙрдХрд░ рдХрдВрдкреЛрдЬ рдХреЗ

рд╕рд╛рде рдбреЙрдХрдЯрд░ рдХрдореНрдкреЛрдЬ рдлрд╛рдЗрд▓ рдмрд┐рд▓реНрдбрд┐рдВрдЧ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдирд╛ рдЖрдкрдХреЗ рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдФрд░ рд╡рд░реНрдЬрдирд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рд▓рд╛рд░рд╡реЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╡реЗрдм рд╕рд░реНрд╡рд░ рд╕реЗрд╡рд╛рдУрдВ, рдбреЗрдЯрд╛рдмреЗрд╕ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдбреЙрдХ-рдХрдВрдкреЛрдЬ рдлрд╛рдЗрд▓ рдмрдирд╛рдПрдВрдЧреЗред

рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓реЗрдВ:

nano ~/laravel-app/docker-compose.yml

рдбреЙрдХрдЯрд░-рдХрдВрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рддреАрди рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: рдРрдк, рд╡реЗрдмрд╕рд░реНрд╡рд░ рдФрд░ рдбреАрдмреАред рдЕрдкрдиреА рдкрд╕рдВрдж рдХреЗ рдкрд╛рд╕рд╡рд░реНрдб рдХреЗ рд╕рд╛рде, db рд╕реЗрд╡рд╛ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд MYSQL_ROOT_PASSWORD рдХреЗ рд▓рд┐рдП рд░реВрдЯ рдкрд╛рд╕рд╡рд░реНрдб рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реБрдП рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рдореНрди рдХреЛрдб рдЬреЛрдбрд╝реЗрдВ:

~/laravel-app/docker-compose.yml

version: '3'
services:

  #PHP Service
  app:
    build:
      context: .
      dockerfile: Dockerfile
    image: digitalocean.com/php
    container_name: app
    restart: unless-stopped
    tty: true
    environment:
      SERVICE_NAME: app
      SERVICE_TAGS: dev
    working_dir: /var/www
    networks:
      - app-network

  #Nginx Service
  webserver:
    image: nginx:alpine
    container_name: webserver
    restart: unless-stopped
    tty: true
    ports:
      - "80:80"
      - "443:443"
    networks:
      - app-network

  #MySQL Service
  db:
    image: mysql:5.7.22
    container_name: db
    restart: unless-stopped
    tty: true
    ports:
      - "3306:3306"
    environment:
      MYSQL_DATABASE: laravel
      MYSQL_ROOT_PASSWORD: your_mysql_root_password
      SERVICE_TAGS: dev
      SERVICE_NAME: mysql
    networks:
      - app-network

#Docker Networks
networks:
  app-network:
    driver: bridge

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реЗрд╡рд╛рдПрдВ рдпрд╣рд╛рдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:

  • рдПрдкреНрд▓рд┐рдХреЗрд╢рди: рдЗрд╕ рд╕реЗрд╡рд╛ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдореЗрдВ рд▓рд╛рд░рд╡реЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╢рд╛рдорд┐рд▓ рд╣реИ рдФрд░ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдбреЙрдХрд░ рдЫрд╡рд┐, digitalocean.com/php рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдХрдВрдЯреЗрдирд░ рдореЗрдВ / var / www рдХреЗ рд▓рд┐рдП working_dir рдкреИрд░рд╛рдореАрдЯрд░ рднреА рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред
  • рд╡реЗрдмрд╕рд░реНрд╡рд░: рдЗрд╕ рд╕реЗрд╡рд╛ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдореЗрдВ рдирдЧреАрдиреЗрдХреНрд╕ рдХреЛ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: рдбреЛрдХрд░ рд╕реЗ рдЕрд▓реНрдкрд╛рдЗрди рдЫрд╡рд┐ рдФрд░ рдкреЛрд░реНрдЯ 80 рдФрд░ 443 рдХреЛ рдЦреЛрд▓рддрд╛ рд╣реИред
  • db: рдпрд╣ рд╕реЗрд╡рд╛ рдкрд░рд┐рднрд╛рд╖рд╛ mysql рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреА рд╣реИ: рдбреЙрдХрд░ рд╕реЗ 5.7.22 рдЫрд╡рд┐ рдФрд░ рдЖрдкрдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд▓рд╛рд░реНрд╡рд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рд░реВрдЯ рдкрд╛рд╕рд╡рд░реНрдб рд╕рд╣рд┐рдд рдирдП рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЖрдк рдЕрдкрдиреЗ рдЗрдЪреНрдЫрд┐рдд рдХрд┐рд╕реА рднреА рдбреЗрдЯрд╛рдмреЗрд╕ рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдордЬрдмреВрдд рдкрд╛рд╕рд╡рд░реНрдб рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ_mysql_root_password рдХреЛ рднреА рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рд╕реЗрд╡рд╛ рдкрд░рд┐рднрд╛рд╖рд╛ рд╣реЛрд╕реНрдЯ рдкреЛрд░реНрдЯ 3306 рдХреЛ рдХрдВрдЯреЗрдирд░ рдкреЛрд░реНрдЯ 3306 рдореЗрдВ рдореИрдк рдХрд░рддреА рд╣реИред

рдкреНрд░рддреНрдпреЗрдХ рдХрдВрдЯреЗрдирд░_рдирд╛рдо рдЧреБрдг рд╕реЗрд╡рд╛ рдирд╛рдо рдХреЗ рдЕрдиреБрд░реВрдк рдПрдХ рдХрдВрдЯреЗрдирд░ рдирд╛рдо рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдбреЙрдХрд░ рдкреНрд░рддреНрдпреЗрдХ рдХрдВрдЯреЗрдирд░ рдХреЛ рдПрдХ рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдирд╛рдо рд╕реЗ рдпреБрдХреНрдд рдФрд░ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╢рдмреНрдж рджреЗрдЧрд╛, рдЬреЛ рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рдмреАрдЪ рдмрд╛рддрдЪреАрдд рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕реЗрд╡рд╛рдПрдВ рдРрдк-рдиреЗрдЯрд╡рд░реНрдХ рдирд╛рдордХ рдХрдиреЗрдХреНрдЯрд┐рдВрдЧ рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рдХрдиреЗрдХреНрдЯ рд╣реЛрддреА рд╣реИрдВред рдХрдиреЗрдХреНрдЯрд┐рдВрдЧ рдиреЗрдЯрд╡рд░реНрдХ рдПрдХ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдмреНрд░рд┐рдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЗрд╕ рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рдЬреБрдбрд╝реЗ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдмреНрд░рд┐рдЬ рдбреНрд░рд╛рдЗрд╡рд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдореЗрдЬрдмрд╛рди рдирд┐рдпрдо рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рд╡рд┐рднрд┐рдиреНрди рдХрдиреЗрдХреНрдЯрд┐рдВрдЧ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдХрдВрдЯреЗрдирд░ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рд╕реАрдзреЗ рд╕рдВрд╡рд╛рдж рди рдХрд░ рд╕рдХреЗрдВред рдпрд╣ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реБрд░рдХреНрд╖рд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдХреЗрд╡рд▓ рд╕рдВрдмрдВрдзрд┐рдд рд╕реЗрд╡рд╛рдПрдВ рдПрдХ-рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░ рд╕рдХрддреА рд╣реИрдВред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рднреА рд╣реИ рдХрд┐ рдЖрдк рд╡рд┐рднрд┐рдиреНрди рдиреЗрдЯрд╡рд░реНрдХ рдФрд░ рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╕рдВрдмрдВрдзрд┐рдд рдХрд╛рд░реНрдпреЛрдВ рд╕реЗ рдЬреБрдбрд╝рддреЗ рд╣реИрдВ: рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреНрд▓рд╛рдЗрдВрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗрд╡рд╛рдПрдВ рдлреНрд░рдВрдЯрдПрдВрдб рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреА рд╣реИрдВ, рдФрд░ рд╕рд░реНрд╡рд░ рд╕реЗрд╡рд╛рдПрдВ рдмреИрдХрдПрдВрдб рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреА рд╣реИрдВред

рдЕрдм, рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбреЗрдЯрд╛ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрд╡рд╛ рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╡реЙрд▓реНрдпреВрдо рдХреИрд╕реЗ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдорд╛рдЙрдВрдЯ рдХрд┐рдП рдЧрдП рдЪрд┐рддреНрд░реЛрдВ рдХреЛ рдХреИрд╕реЗ рдмрд╛рдВрдзреЗрдВред

рд▓рдЧрд╛рддрд╛рд░ рдбреЗрдЯрд╛ рд╕реНрдЯреЛрд░реЗрдЬ

рдбреЙрдХрд░ рдХреЗ рдкрд╛рд╕ рд▓рдЧрд╛рддрд╛рд░ рдбреЗрдЯрд╛ рд╕реНрдЯреЛрд░реЗрдЬ рдХреЗ рд▓рд┐рдП рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╕рд╛рдзрди рд╣реИрдВред рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдореЗрдВ, рд╣рдо рдбреЗрдЯрд╛рдмреЗрд╕ рдлрд╝рд╛рдЗрд▓реЛрдВ, рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рд╕рд╣реЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рд╡реЙрд▓реНрдпреВрдо рдФрд░ рдорд╛рдЙрдВрдЯреЗрдб рдЫрд╡рд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рд╡реЙрд▓реНрдпреВрдо рдХрдВрдЯреЗрдирд░ рдХреЗ рдЬреАрд╡рди рдЪрдХреНрд░ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдкрд░ рдмреИрдХрдЕрдк рд▓рдЪреАрд▓рд╛рдкрди рдФрд░ рд╕рдВрд░рдХреНрд╖рдг рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдорд╛рдЙрдВрдЯ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдорд╛рдЙрдВрдЯреЗрдмрд▓ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдХрдВрдЯреЗрдирд░реЛрдВ рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдпрд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреА рдореЗрдЬрдмрд╛рдиреА рдХреЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рддреБрд░рдВрдд рджреЗрдЦрдХрд░ рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреМрд░рд╛рди рдХреЛрдб рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИред рд╣рдо рджреЛрдиреЛрдВ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

рдЪреЗрддрд╛рд╡рдиреА!
, , . , Docker . .

MySQL рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП db-service рдлрд╝рд╛рдЗрд▓ рдореЗрдВ db-compose рдлрд╝рд╛рдЗрд▓ рдореЗрдВ dbdata рдирд╛рдо рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ:

~/laravel-app/docker-compose.yml

...
#MySQL Service
db:
  ...
    volumes:
      - dbdata:/var/lib/mysql
    networks:
      - app-network
  ...

Dbdata рдирд╛рдордХ рд╡реЙрд▓реНрдпреВрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ / var / lib / mysql рдлрд╝реЛрд▓реНрдбрд░ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рд╕рд╣реЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рдбреЗрдЯрд╛ рдЦреЛрдП рдмрд┐рдирд╛ db рд╕реЗрд╡рд╛ рдХреЛ рд░реЛрдХрдиреЗ рдФрд░ рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрдд рдореЗрдВ рдПрдХ dbdata рд╡реЙрд▓реНрдпреВрдо рдкрд░рд┐рднрд╛рд╖рд╛ рдЬреЛрдбрд╝реЗрдВ:

~/laravel-app/docker-compose.yml

...
#Volumes
volumes:
  dbdata:
    driver: local

рдЗрд╕ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рд╕рд╛рде, рдЖрдк рдЗрд╕ рд╡реЙрд▓реНрдпреВрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рднрд┐рдиреНрди рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдлрд┐рд░ MySQL рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП db рд╕реЗрд╡рд╛ рдореЗрдВ рдорд╛рдЙрдВрдЯ рдЗрдореЗрдЬ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдЬреЛрдбрд╝реЗрдВ:

~/laravel-app/docker-compose.yml

...
#MySQL Service
db:
  ...
    volumes:
      - dbdata:/var/lib/mysql
      - ./mysql/my.cnf:/etc/mysql/my.cnf
  ...

рдпрд╣ рдорд╛рдЙрдВрдЯреЗрдб рдЫрд╡рд┐ рдХрдВрдЯреЗрдирд░ рдореЗрдВ /etc/mysql/my.cnf рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП ~ / рд▓рд╛рд░реНрд╡рд╛-рдРрдк / mysql / my.cnf рдлрд╝рд╛рдЗрд▓ рдХреЛ рдмрд╛рдВрдзрддреА рд╣реИред

рдлрд┐рд░ рдорд╛рдЙрдВрдЯ рдХреА рдЧрдИ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рд╡реЗрдм рд╕рд░реНрд╡рд░ рд╕реЗрд╡рд╛ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред рджреЛ рд╣реЛрдВрдЧреЗ: рдПрдХ рдЖрд╡реЗрджрди рдХреЛрдб рдХреЗ рд▓рд┐рдП, рдФрд░ рджреВрд╕рд░рд╛ рдиреЗрдЧреНрдиреЗрдХреНрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП

~/laravel-app/docker-compose.yml

#Nginx Service
webserver:
  ...
  volumes:
      - ./:/var/www
      - ./nginx/conf.d/:/etc/nginx/conf.d/
  networks:
      - app-network

рдкрд╣рд▓реА рдШреБрдбрд╝рд╕рд╡рд╛рд░ рдЫрд╡рд┐ рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ / var / www рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП ~ / рд▓рд╛рд░реНрд╡рд╛-рдРрдк рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рдХреЛ рдмрд╛рдВрдзрддреА рд╣реИред рдХрдВрдЯреЗрдирд░ рдореЗрдВ ~ / laravel-app / nginx / conf.d / рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓, /etc/nginx/conf.d/ рдореЗрдВ рднреА рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдирд┐рд╖реНрдХрд░реНрд╖ рдореЗрдВ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдРрдк рд╕реЗрд╡рд╛ рдореЗрдВ рдорд╛рдЙрдВрдЯ рдХрд┐рдП рдЧрдП рдЪрд┐рддреНрд░реЛрдВ рдХреЗ рдирд┐рдореНрди рдорд╛рдЙрдВрдЯ рдЬреЛрдбрд╝реЗрдВ:

~/laravel-app/docker-compose.yml

#PHP Service
app:
  ...
  volumes:
       - ./:/var/www
       - ./php/local.ini:/usr/local/etc/php/conf.d/local.ini
  networks:
      - app-network

рдРрдк рд╕реЗрд╡рд╛ ~ / рд▓рд╛рд░реНрд╡рд╛-рдРрдк рдлрд╝реЛрд▓реНрдбрд░ рдХреА рдШреБрдбрд╝рд╕рд╡рд╛рд░ рдЫрд╡рд┐ рдХреЛ рдмрд╛рдВрдзрддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб / / var / www рдлрд╝реЛрд▓реНрдбрд░ рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЧрддрд┐ рджреЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╕реНрдерд╛рдиреАрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдХреЛрдИ рднреА рдкрд░рд┐рд╡рд░реНрддрди рддреБрд░рдВрдд рдХрдВрдЯреЗрдирд░ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред рдЖрдк рдХрдВрдЯреЗрдирд░ рдореЗрдВ PHP рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ ~ / laravel-app / php / local.ini рдХреЛ /usr/local/etc/php/conf.d/local.ini рдлрд╝рд╛рдЗрд▓ рд╕реЗ рднреА рд▓рд┐рдВрдХ рдХрд░рддреЗ рд╣реИрдВред рдмрд╛рдж рдореЗрдВ рдЖрдк рдПрдХ рд╕реНрдерд╛рдиреАрдп PHP рд╡рд┐рдиреНрдпрд╛рд╕ рдлрд╛рдЗрд▓ рдмрдирд╛рдПрдВрдЧреЗред

рдЖрдкрдХреА рдбреЙрдХрдЯрд░-рдХрдВрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓ рдЕрдм рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА:

~/laravel-app/docker-compose.yml

version: '3'
services:

  #PHP Service
  app:
    build:
      context: .
      dockerfile: Dockerfile
    image: digitalocean.com/php
    container_name: app
    restart: unless-stopped
    tty: true
    environment:
      SERVICE_NAME: app
      SERVICE_TAGS: dev
    working_dir: /var/www
    volumes:
      - ./:/var/www
      - ./php/local.ini:/usr/local/etc/php/conf.d/local.ini
    networks:
      - app-network

  #Nginx Service
  webserver:
    image: nginx:alpine
    container_name: webserver
    restart: unless-stopped
    tty: true
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./:/var/www
      - ./nginx/conf.d/:/etc/nginx/conf.d/
    networks:
      - app-network

  #MySQL Service
  db:
    image: mysql:5.7.22
    container_name: db
    restart: unless-stopped
    tty: true
    ports:
      - "3306:3306"
    environment:
      MYSQL_DATABASE: laravel
      MYSQL_ROOT_PASSWORD: your_mysql_root_password
      SERVICE_TAGS: dev
      SERVICE_NAME: mysql
    volumes:
      - dbdata:/var/lib/mysql/
      - ./mysql/my.cnf:/etc/mysql/my.cnf
    networks:
      - app-network

#Docker Networks
networks:
  app-network:
    driver: bridge
#Volumes
volumes:
  dbdata:
    driver: local

Dockerfile

Docker рдмрдирд╛рдирд╛ рдЖрдкрдХреЛ Dockerfile рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рдЕрдВрджрд░ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред Dockerfile рдЖрдкрдХреЛ рд╡реИрдпрдХреНрддрд┐рдХреГрдд рдЪрд┐рддреНрд░ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрд╡рд╢реНрдпрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдФрд░ рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЖрдк рдмрдирд╛рдИ рдЧрдИ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдбреЙрдХрд░ рд╣рдм рдпрд╛ рдХрд┐рд╕реА рднреА рдирд┐рдЬреА рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

Dockerfile ~ / laravel-app рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реЛрдЧрд╛ред рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ:

nano ~/laravel-app/Dockerfile

рдпрд╣ Dockerfile Laravel рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЫрд╡рд┐ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ рдЫрд╡рд┐ рдФрд░ рдЖрд╡рд╢реНрдпрдХ рдЖрджреЗрд╢реЛрдВ рдФрд░ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдЧрд╛ред рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рдореНрди рдХреЛрдб рдЬреЛрдбрд╝реЗрдВ:

~/laravel-app/php/Dockerfile

FROM php:7.2-fpm

# Copy composer.lock and composer.json
COPY composer.lock composer.json /var/www/

# Set working directory
WORKDIR /var/www

# Install dependencies
RUN apt-get update && apt-get install -y \
    build-essential \
    mysql-client \
    libpng-dev \
    libjpeg62-turbo-dev \
    libfreetype6-dev \
    locales \
    zip \
    jpegoptim optipng pngquant gifsicle \
    vim \
    unzip \
    git \
    curl

# Clear cache
RUN apt-get clean && rm -rf /var/lib/apt/lists/*

# Install extensions
RUN docker-php-ext-install pdo_mysql mbstring zip exif pcntl
RUN docker-php-ext-configure gd --with-gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ --with-png-dir=/usr/include/
RUN docker-php-ext-install gd

# Install composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

# Add user for laravel application
RUN groupadd -g 1000 www
RUN useradd -u 1000 -ms /bin/bash -g www www

# Copy existing application directory contents
COPY . /var/www

# Copy existing application directory permissions
COPY --chown=www:www . /var/www

# Change current user to www
USER www

# Expose port 9000 and start php-fpm server
EXPOSE 9000
CMD ["php-fpm"]

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, Dockerfile рдЪрд┐рддреНрд░ рдХреЛ php рдХреЗ рдКрдкрд░ рдмрдирд╛рддрд╛ рд╣реИ: 7.2-fpm Docker рдЫрд╡рд┐ред рдпрд╣ PHP FastCGI PHP-FPM рдХреЗ рд╕реНрдерд╛рдкрд┐рдд рдЙрджрд╛рд╣рд░рдг рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдПрдХ рдЫрд╡рд┐ рд╣реИред рдпрд╣ рдлрд╝рд╛рдЗрд▓ рд▓рд╛рд░рд╡реЗрд▓ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рдВрдХреБрд▓ рднреА рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреА рд╣реИ: mcrypt, pdo_mysql, mbstring рдФрд░ рдХрдВрдкреЛрдЬрд░ рдХреЗ рд╕рд╛рде рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВред

рдЖрд░рдпреВрдПрди рдирд┐рд░реНрджреЗрд╢ рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ, рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрджреЗрд╢реЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╕рдорд░реНрдкрд┐рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдФрд░ www рдирд╛рдо рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд╢рд╛рдорд┐рд▓ рд╣реИред рдХрд╛рд░реНрдп рд╡рд┐рд╡рд░рдг рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ / var / www рдХреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреА рдХрд╛рд░реНрдпрд╢реАрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред

рд╕реАрдорд┐рдд рдПрдХреНрд╕реЗрд╕ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрд▓рдЧ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдФрд░ рд╕рдореВрд╣ рдмрдирд╛рдиреЗ рд╕реЗ рдбреЙрдХрд░ рдХрдВрдЯреЗрдирд░ рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╕рдордп рднреЗрджреНрдпрддрд╛ рдХрдо рд╣реЛ рдЬрд╛рддреА рд╣реИ, рдЬреЛ рдореВрд▓ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЪрд▓рддреА рд╣реИред рдЗрд╕ рдХрдВрдЯреЗрдирд░ рдХреЛ рд░реВрдЯ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдЪрд▓рд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╣рдордиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдлрд╝реЛрд▓реНрдбрд░ рдХреА рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЛ рдХреЙрдкреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП --chown рдзреНрд╡рдЬ рдХреЗ рд╕рд╛рде COPY рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ / var / www рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рд▓рд┐рдП рдкрдврд╝рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдХреЗ рд╕рд╛рде рдПрдХ www рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрдирд╛рдпрд╛ред

EXPOSE рдХрдорд╛рдВрдб рдХрдВрдЯреЗрдирд░ рдореЗрдВ php-fpm рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдкреЛрд░реНрдЯ 9000 рдХреЛ рдЦреЛрд▓рддрд╛ рд╣реИред рд╕реАрдПрдордбреА рдЙрд╕ рдХрдорд╛рдВрдб рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдХрдВрдЯреЗрдирд░ рдмрдирдиреЗ рдХреЗ рдмрд╛рдж рдЪрд▓рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣рд╛рдВ, рд╕реАрдПрдордбреА рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ php-fpm рдХрдорд╛рдВрдб рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред

рдЬрдм рдЖрдк рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдирд╛ рд╕рдорд╛рдкреНрдд рдХрд░ рд▓реЗрдВ, рддреЛ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рд╣реЗрдЬреЗрдВ рдФрд░ рд╕рдВрдкрд╛рджрдХ рдХреЛ рдмрдВрдж рдХрд░реЗрдВред

рдЕрдм рдЖрдк рдЕрдкрдиреЗ PHP рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред

PHP рд╕реЗрдЯрдЕрдк

рдЖрдкрдиреЗ рдбреЙрдХрдЯрд░-рдХрдореНрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЕрд╡рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рдЕрдм рдЖрдк рдЖрдиреЗ рд╡рд╛рд▓реЗ Nginx рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП PHP рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП PHP рд╕реЗрд╡рд╛ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

PHP рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк php рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдПрдХ local.ini рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВрдЧреЗред рдпрд╣ рд╡рд╣ рдлрд╝рд╛рдЗрд▓ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдкрдиреЗ рдКрдкрд░ рдХреЗ рдХрдВрдЯреЗрдирд░ рдореЗрдВ /usr/local/etc/php/conf.d/local.ini рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд▓рд┐рдВрдХ рдХрд┐рдпрд╛ рд╣реИред рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдмрдирд╛рдиреЗ рд╕реЗ рдЖрдк рдбрд┐рдлрд╝реЙрд▓реНрдЯ php.ini рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ PHP рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рдкрдврд╝рддреА рд╣реИред

рдПрдХ php рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдПрдБ:

mkdir ~/laravel-app/php

рдлрд┐рд░ local.ini рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓реЗрдВ:

nano ~/laravel-app/php/local.ini

PHP рд╕реЗрдЯрдЕрдк рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдлрд╝рд╛рдЗрд▓ рдЕрдкрд▓реЛрдб рдЖрдХрд╛рд░ рд╕реАрдорд╛рдПрдБ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрди рдХреЛрдб рдЬреЛрдбрд╝реЗрдВрдЧреЗ:

~/laravel-app/php/local.ini

upload_max_filesize=40M
post_max_size=40M

рдЕрдкрд▓реЛрдб_max_filesize рдФрд░ post_max_size рдирд┐рд░реНрджреЗрд╢ рдЕрдкрд▓реЛрдб рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдЕрдзрд┐рдХрддрдо рдЕрдиреБрдордд рдЖрдХрд╛рд░ рдХреЛ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рдХрд┐ рд╕реНрдерд╛рдиреАрдп.ini рдлрд╝рд╛рдЗрд▓ рд╕реЗ php.ini рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреИрд╕реЗ рд╕реЗрдЯ рдХрд░реЗрдВред рдЖрдк рдХрд┐рд╕реА рднреА PHP рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдЖрдк рд╕реНрдерд╛рдиреАрдп.ini рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЕрдирджреЗрдЦрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

Nginx рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛

рдЬрдм рдЖрдк PHP рд╕реЗрд╡рд╛ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЧрддрд┐рд╢реАрд▓ рд╕рд╛рдордЧреНрд░реА рдХреА рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП FastCGI рд╕рд░реНрд╡рд░ рдХреЗ рд░реВрдк рдореЗрдВ PHP-FPM рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Nginx рд╕реЗрд╡рд╛ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред FastCGI рд╕рд░реНрд╡рд░ рдПрдХ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреА рдмрд╛рддрдЪреАрдд рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╛рдЗрдирд░реА рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА "Nginx рдореЗрдВ FastCGI рдкреНрд░реЙрдХреНрд╕реА рдХреЛ рд╕рдордЭрдирд╛ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдирд╛" рд▓реЗрдЦ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
Nginx рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк ~ / laravel-app / nginx / conf.d / рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рдПрдХ app.conf рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВрдЧреЗред

рдкрд╣рд▓реЗ nginx / conf.d / рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдПрдБ:

mkdir -p ~/laravel-app/nginx/conf.d

рдлрд┐рд░ app.conf рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ:

nano ~/laravel-app/nginx/conf.d/app.conf

Nginx рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рдореНрди рдХреЛрдб рдЬреЛрдбрд╝реЗрдВ:

~/laravel-app/nginx/conf.d/app.conf

server {
    listen 80;
    index index.php index.html;
    error_log  /var/log/nginx/error.log;
    access_log /var/log/nginx/access.log;
    root /var/www/public;
    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass app:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
    location / {
        try_files $uri $uri/ /index.php?$query_string;
        gzip_static on;
    }
}

рд╕рд░реНрд╡рд░ рдмреНрд▓реЙрдХ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП Nginx рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИ:

  • рд╕реБрдиреЛ: рдпрд╣ рдирд┐рд░реНрджреЗрд╢ рдЙрд╕ рдкреЛрд░реНрдЯ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╕рд░реНрд╡рд░ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реБрдирддрд╛ рд╣реИред
  • error_log рдФрд░ access_log: рдпреЗ рдирд┐рд░реНрджреЗрд╢ рд▓реЙрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред
  • рд░реВрдЯ: рдпрд╣ рдирд┐рд░реНрджреЗрд╢ рд░реВрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдкрде рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╕реНрдерд╛рдиреАрдп рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдХрд┐рд╕реА рднреА рдЕрдиреБрд░реЛрдзрд┐рдд рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рдкрде рдмрдирд╛рддрд╛ рд╣реИред

Php рд▓реЛрдХреЗрд╢рди рдмреНрд▓реЙрдХ рдореЗрдВ, fastcgi_pass рдирд┐рд░реНрджреЗрд╢ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдРрдк рд╕реЗрд╡рд╛ рдкреЛрд░реНрдЯ 9000 рдкрд░ рдЯреАрд╕реАрдкреА рд╕реЙрдХреЗрдЯ рдкрд░ рд╕реБрди рд░рд╣реА рд╣реИред рдЗрд╕рдХреЗ рд╕рд╛рде, PHP-FPM рд╕рд░реНрд╡рд░ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рд╕реБрдирддрд╛ рд╣реИ, рдпреВрдирд┐рдХреНрд╕ рд╕реЙрдХреЗрдЯ рдкрд░ рдирд╣реАрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпреВрдирд┐рдХреНрд╕ рд╕реЙрдХреЗрдЯ рдЯреАрд╕реАрдкреА рд╕реЙрдХреЗрдЯ рдкрд░ рдереЛрдбрд╝реА рдЧрддрд┐ рдХрд╛ рд▓рд╛рдн рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдирд╣реАрдВ рд╣реИ рдФрд░ рдпрд╣ рдиреЗрдЯрд╡рд░реНрдХ рд╕реНрдЯреИрдХ рдХреЛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЬрд╣рд╛рдВ рдореЗрдЬрдмрд╛рди рдПрдХ рд╣реА рд╕рд┐рд╕реНрдЯрдо рдкрд░ рд╕реНрдерд┐рдд рд╣реИрдВ, рдпреВрдирд┐рдХреНрд╕ рд╕реЙрдХреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд╕рдордЭ рдореЗрдВ рдЖ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рд╕реЗрд╡рд╛рдПрдВ рд╡рд┐рднрд┐рдиреНрди рд╣реЛрд╕реНрдЯ рдкрд░ рдЪрд▓ рд░рд╣реА рд╣реИрдВ, рддреЛ рдЯреАрд╕реАрдкреА рд╕реЙрдХреЗрдЯ рдЖрдкрдХреЛ рд╡рд┐рддрд░рд┐рдд рд╕реЗрд╡рд╛рдУрдВ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдХрд░ рдПрдХ рд▓рд╛рдн рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдРрдк рдФрд░ рд╡реЗрдмрд╕рд░реНрд╡рд░ рдХрдВрдЯреЗрдирд░ рд╡рд┐рднрд┐рдиреНрди рд╣реЛрд╕реНрдЯреНрд╕ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдПрдХ рдЯреАрд╕реАрдкреА рд╕реЙрдХреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рд╣реИред

рдЬрдм рдЖрдк рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдирд╛ рд╕рдорд╛рдкреНрдд рдХрд░ рд▓реЗрдВ, рддреЛ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рд╣реЗрдЬреЗрдВ рдФрд░ рд╕рдВрдкрд╛рджрдХ рдХреЛ рдмрдВрдж рдХрд░реЗрдВред

рдкрд╣рд▓реЗ рдмрдирд╛рдП рдЧрдП рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, nginx / conf.d / рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдХреЛрдИ рднреА рдкрд░рд┐рд╡рд░реНрддрди рд╕реАрдзреЗ рд╡реЗрдмрд╕рд░реНрд╡рд░ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВред

рдЕрдм рдЖрдЗрдП MySQL рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рджреЗрдЦреЗрдВред

MySQL рдХреА

рд╕реНрдерд╛рдкрдирд╛ PHP рдФрд░ Nginx рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рдмрд╛рдж, рдЖрдк рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ MySQL рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

MySQL рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ mysql рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ my.cnf рдлрд╛рдЗрд▓ рдмрдирд╛рдиреА рд╣реЛрдЧреАред рдпрд╣ рд╡рд╣ рдлрд╝рд╛рдЗрд▓ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдкрдиреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЪрд░рдг рдХреЗ рджреМрд░рд╛рди рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ /etc/mysql/my.cnf рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдЬреЛрдбрд╝рд╛ рд╣реИред рдорд╛рдЙрдВрдЯ рдХреА рдЧрдИ рдЫрд╡рд┐ рдХреЛ рдорд╛рдЙрдВрдЯ рдХрд░рдирд╛ рдЖрдкрдХреЛ рдХрд┐рд╕реА рднреА my.cnf рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЕрдЧрд░ рдФрд░ рдЬрдм рдЖрд╡рд╢реНрдпрдХ рд╣реЛред

рдпрд╣ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд╣рдо my.cnf рдореЗрдВ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдЬреЛрдбрд╝реЗрдВрдЧреЗ рдЬрд┐рд╕рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдЕрдиреБрд░реЛрдз рд▓реЙрдЧ рд╢рд╛рдорд┐рд▓ рд╣реИ рдФрд░ рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓ рд╕реЗрдЯ рдХрд░реЗрдВред

рдПрдХ mysql рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдПрдБ:

mkdir ~/laravel-app/mysql

My.cnf рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ:

nano ~/laravel-app/mysql/my.cnf

рдХреНрд╡реЗрд░реА рд▓реЙрдЧ рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рдиреЗ рдФрд░ рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рд╕реНрдерд╛рди рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рдореНрди рдХреЛрдб рдЬреЛрдбрд╝реЗрдВ:

~/laravel-app/mysql/my.cnf

[mysqld]
general_log = 1
general_log_file = /var/lib/mysql/general.log

My.cnf рдлрд╝рд╛рдЗрд▓ general_log рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ 1 рдкрд░ рд╕реЗрдЯ рдХрд░рдХреЗ рд▓реЙрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИ, рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп рд▓реЙрдЧ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рддреА рд╣реИред рд╕рд╛рдорд╛рдиреНрдп_рд▓реЙрдЧ_рдлрд╛рдЗрд▓ рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд▓реЙрдЧ рдХрд╣рд╛рдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред

рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рд╢реБрд░реВ рдХрд░рдирд╛ рдФрд░ рдкрд░реНрдпрд╛рд╡рд░рдг рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдмрджрд▓рдирд╛

рдЖрдкрдиреЗ рдбреЙрдХрдЯрд░-рдХрдВрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рднреА рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдФрд░ рдЗрди рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдмрдирд╛рдпрд╛ред рдЕрдм рдЖрдк рдХрдВрдЯреЗрдирд░ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдВрдд рдореЗрдВ, рд╣рдо .env.example рдлрд╝рд╛рдЗрд▓ рдХреА рдПрдХ рдкреНрд░рддрд┐ рдмрдирд╛рдПрдВрдЧреЗ рдЬрд┐рд╕рдореЗрдВ рд▓рд╛рд░рд╡реЗрд▓ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдФрд░ рдирд╛рдо рдХреЗ рд╕рд╛рде рд╢рд╛рдорд┐рд▓ рд╣реИред рдЪреВрдВрдХрд┐, рд▓рд╛рд░рд╡реЗрд▓ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рдХреА рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ:

cp .env.example .env

рдХрдВрдЯреЗрдирд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВрдЧреЗред

рдЕрдм рдЖрдкрдХреА рд╕рднреА рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдбреЙрдХрдЯрд░-рдХрдореНрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рд╕рднреА рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ, рд╡реЙрд▓реНрдпреВрдо рдмрдирд╛рдиреЗ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдФрд░ рдиреЗрдЯрд╡рд░реНрдХ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

docker-compose up -d

рдкрд╣рд▓реА рдмрд╛рд░ рдЬрдм рдЖрдк рдбреЙрдХ-рдХрдВрдкреЛрдЬрд╝ рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдбреЙрдХрд░ рдЪрд┐рддреНрд░ рдбрд╛рдЙрдирд▓реЛрдб рд╣реЛ рдЬрд╛рдПрдВрдЧреЗ, рдЬрд┐рд╕рдореЗрдВ рдХреБрдЫ рд╕рдордп рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕реНрдерд╛рдиреАрдп рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рд╕рд╣реЗрдЬрдиреЗ рдХреЗ рдмрд╛рдж, рдХрдореНрдкреЛрдЬрд╝ рдЖрдкрдХреЗ рдХрдВрдЯреЗрдирд░ рдмрдирд╛рдПрдЧрд╛ред -D рдзреНрд╡рдЬ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдПрдХ рдбреАрдорди рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдХрдВрдЯреЗрдирд░ рдЪрд▓рддреЗ рд░рд╣рддреЗ рд╣реИрдВред

рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреВрд░реА рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рд╕рднреА рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
docker ps


рдЖрдк рдРрдк, рд╡реЗрдмрд╕рд░реНрд╡рд░ рдФрд░ рдбреАрдмреА рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рдгрд╛рдо рджреЗрдЦреЗрдВрдЧреЗ:

Output
CONTAINER ID        NAMES               IMAGE                             STATUS              PORTS
c31b7b3251e0        db                  mysql:5.7.22                      Up 2 seconds        0.0.0.0:3306->3306/tcp
ed5a69704580        app                 digitalocean.com/php              Up 2 seconds        9000/tcp
5ce4ee31d7c0        webserver           nginx:alpine                      Up 2 seconds        0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp

рдЗрди рдкрд░рд┐рдгрд╛рдореЛрдВ рдореЗрдВ, рдХрдВрдЯреЗрдирд░ рдЖрдИрдбреА рдкреНрд░рддреНрдпреЗрдХ рдХрдВрдЯреЗрдирд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реИ, рдФрд░ NAMES рдкреНрд░рддреНрдпреЗрдХ рдХрдВрдЯреЗрдирд░ рдХреЗ рд▓рд┐рдП рд╕реЗрд╡рд╛ рдирд╛рдо рд╕реВрдЪреАрдмрджреНрдз рдХрд░рддрд╛ рд╣реИред рдЖрдк рдХрдВрдЯреЗрдирд░ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрди рджреЛрдиреЛрдВ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред IMAGE рдкреНрд░рддреНрдпреЗрдХ рдХрдВрдЯреЗрдирд░ рдХреЗ рдЫрд╡рд┐ рдирд╛рдо рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ STATUS рдХрдВрдЯреЗрдирд░ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ: рд╢реБрд░реВ, рдкреБрдирд░рд╛рд░рдВрдн рдпрд╛ рд░реЛрдХрд╛ рдЧрдпрд╛ред

рдЕрдм рдЖрдк рдЕрдкрдиреЗ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдРрдк рдХрдВрдЯреЗрдирд░ рдореЗрдВ .env рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдлрд╝рд╛рдЗрд▓ рдХреЛ рдбреЙрдХрдЯрд░-рдХрдВрдкреЛрдЬрд╝ рдПрдХреНрдЬрд╝реАрдХреНрдпреВрд╢рди рдХреЗ рд╕рд╛рде рдЦреЛрд▓реЗрдВ, рдЬреЛ рдЖрдкрдХреЛ рдХрдВрдЯреЗрдирд░реЛрдВ рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЖрдк рд╕рдВрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓реЗрдВ:

docker-compose exec app nano .env

DB_CONNECTION рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдмреНрд▓реЙрдХ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВ рдФрд░ рдЗрд╕реЗ рдЕрдкрдиреЗ рд╕рд┐рд╕реНрдЯрдо рд╕реЗрдЯрдЕрдк рдХреЛ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВред рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдлрд╝реАрд▓реНрдб рдмрджрд▓реЗрдВрдЧреЗ:

  1. DB_HOST рдЖрдкрдХрд╛ db рдбреЗрдЯрд╛рдмреЗрд╕ рдХрдВрдЯреЗрдирд░ рд╣реЛрдЧрд╛ред
  2. DB_DATABASE рд▓рд╛рд░реНрд╡рд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╣реЛрдЧрд╛ред
  3. DB_USERNAME рдЖрдкрдХреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рд╣реЛрдЧрд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рд▓рд╛рд░рд╡реЗрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред
  4. DB_PASSWORD рдЗрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЦрд╛рддреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрд░рдХреНрд╖рд┐рдд рдкрд╛рд╕рд╡рд░реНрдб рд╣реЛрдЧрд╛ред

/var/www/.env

DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=laraveluser
DB_PASSWORD=your_laravel_db_password

.Env.example рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдорд╛рди рдЪрд░реЛрдВ рдХреЛ рдареАрдХ рдХрд░рдирд╛ рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕рд░реНрд╡рд░ рдкрд░ рддреИрдирд╛рддреА рдХреЗ рдмрд╛рдж рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдлрд┐рд░ рд▓рд╛рд░рд╡реЗрд▓ рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреБрдВрдЬреА рдХреЛ php рдХрд╛рд░реАрдЧрд░ рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ: рдХрдорд╛рдВрдб рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВред рдпрд╣ рдХрдорд╛рдВрдб рдПрдХ рдХреБрдВрдЬреА рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛ рдФрд░ рдЗрд╕реЗ .env рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреЙрдкреА рдХрд░реЗрдЧрд╛, рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рддреНрд░ рдФрд░ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдбреЗрдЯрд╛ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХрд░реЗрдЧрд╛:

docker-compose exec app php artisan key:generate

рдЕрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрдпрд╛рд╡рд░рдг рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╣реИрдВред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЧрддрд┐ рдмрдврд╝рд╛рдиреЗ рд╡рд╛рд▓реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЗрди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдХреИрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдБ:

docker-compose exec app php artisan config:cache

рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдХрдВрдЯреЗрдирд░ рдореЗрдВ /var/www/bootstrap/cache/config.php рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдЕрдВрдд рдореЗрдВ, рдЕрдкрдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рд╕рд╛рдЗрдЯ рдЦреЛрд▓реЗрдВ ред рд▓рд╛рд░рд╡реЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдореБрдЦреНрдп рдкреГрд╖реНрда рдЦреБрд▓рддрд╛ рд╣реИред

MySQL рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрдирд╛рдирд╛ MySQL

рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╕рдордп, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдХреЗрд╡рд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рд░реНрд╡рд░ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд╕реАрдорд┐рдд рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд░рд╢рд╛рд╕рдирд┐рдХ рд░реВрдЯ рдЦрд╛рддрд╛ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп, рдЖрдорддреМрд░ рдкрд░ рдкреНрд░рд╢рд╛рд╕рдирд┐рдХ рд░реВрдЯ рдЦрд╛рддреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд╛рд░рд╡реЗрд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рдбреЗрдЯрд╛рдмреЗрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрдирд╛рдПрдВрдЧреЗред
рдПрдХ рдирдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, db-compose exec рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ db рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдмреИрд╢ рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рд╢реЗрд▓ рд╢реБрд░реВ рдХрд░реЗрдВ:

docker-compose exec db bash

рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░, MySQL рд░реВрдЯ рдкреНрд░рд╢рд╛рд╕рдирд┐рдХ рдЦрд╛рддреЗ рдореЗрдВ рд▓реЙрдЧ рдЗрди рдХрд░реЗрдВ:

mysql -u root -p

рдЖрдкрдХреЛ рдбреЙрдХ-рдХрдВрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрдиреЗ рдкрд░ MySQL рд░реВрдЯ рдЦрд╛рддреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкрд╛рд╕рд╡рд░реНрдб рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдбреЙрдХрдЯрд░-рдХрдВрдкреЛрдЬ рдлрд╛рдЗрд▓ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд▓рд╛рд░реНрд╡рд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВред
рдореМрдЬреВрджрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢реЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдБ:

show databases;

рдкрд░рд┐рдгрд╛рдореЛрдВ рдореЗрдВ рдЖрдкрдХреЛ рд▓рд╛рд░реНрд╡рд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:

Output
+--------------------+
| Database           |
+--------------------+
| information_schema |
| laravel            |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

рдлрд┐рд░ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЦрд╛рддрд╛ рдмрдирд╛рдПрдВ рдЬрд┐рд╕реЗ рдЗрд╕ рдбреЗрдЯрд╛рдмреЗрд╕ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реЛрдЧреАред
рд╣рдо рд▓рд╛рд░рд╡реЗрд▓рд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдк рдЗрд╕реЗ рдХрд┐рд╕реА рднреА рдкрд╕рдВрджреАрджрд╛ рдирд╛рдо рд╕реЗ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдмрд╕ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рдкрд┐рдЫрд▓реЗ рдЪрд░рдг рдореЗрдВ .env рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВ:

GRANT ALL ON laravel.* TO 'laraveluser'@'%' IDENTIFIED BY 'your_laravel_db_password';

рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ MySQL рд╕рд░реНрд╡рд░ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдЕрджреНрдпрддрди рдХрд░реЗрдВ:

FLUSH PRIVILEGES;

MySQL рдХреЛ рдмрдВрдж рдХрд░реЗрдВ:

EXIT;

рдХрдВрдЯреЗрдирд░ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ:

exit

рдЕрдм рдЖрдк рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

docker-compose exec app php artisan migrate

рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдкреБрд╖реНрдЯрд┐рдХрд░рдг рдХреЗ рдкрд░рд┐рдгрд╛рдо рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИрдВ:

Output

Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Migrated:  2014_10_12_000000_create_users_table
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated:  2014_10_12_100000_create_password_resets_table

рднрд╛рдЧ 2. рдЧрд┐рдЯрд▓рдм


рд╣рд┐рддрд▓рд╛рдм рдореЗрдВ, рдЖрдкрдХреЛ рдПрдХ рдирдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЕрдм рд╣рдореЗрдВ рд╣рд┐рдЯрд▓реИрдм рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕реНрдерд╛рдиреАрдп рдорд╢реАрди рдкрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ рдирд┐рдореНрди рдЖрджреЗрд╢реЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ:

git init
git remote add origin git@gitlab.com:<>/<>  
git remote add origin https://gitlab.com/<>/<>      SSH
git add .
git commit -m "Initial commit"
git push -u origin master

рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЕрд╡рд▓реЛрдХрди -> рд╡рд┐рд╡рд░рдг рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред
рддреИрдпрд╛рд░ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЛ рддреБрд░рдВрдд рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╣рд┐рдЯрд▓рд┐рд╕реНрдЯ рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреА рдбреЙрдХрдЯрд░ рдЫрд╡рд┐ рдХреЛ рд╕рд╣реЗрдЬрддреЗ рд╣реИрдВред

рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдпрд╣ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:

docker login registry.gitlab.com

рдФрд░ рдЫрд╡рд┐ рдХреЛ рдЧрд┐рдЯрд▓реИрдм рдкрд░ рдлреЗрдВрдХреЗрдВ:

docker build -t registry.gitlab.com/<>/<> .
docker push registry.gitlab.com/<>/<>

рдЫрд╡рд┐

рд╕рдВрдХреБрд▓- > рдХрдВрдЯреЗрдирд░ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рд╕реНрдерд┐рдд рд╣реЛрдЧреАред рдЧрд┐рдЯреНрд▓рд╛рдм рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рддреБрд░рдВрдд рдЧрд┐рдЯрд▓рдм-рд░рдирд░ рдХреА рдХреБрдВрдЬреА рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, Setting-> CI / CD-> рд░рдирд░ рдкрд░ рдЬрд╛рдПрдВред рдХреБрдВрдЬреА рдЕрдиреБрднрд╛рдЧ рдореИрдиреБрдЕрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдЪрд░рдг 3 рдореЗрдВ рд╣реИ (рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдзрд╛рд╡рдХ рд╕реЗрдЯ рдХрд░реЗрдВ)ред

рднрд╛рдЧ 3. рд╕рд░реНрд╡рд░ рд╡рд┐рдиреНрдпрд╛рд╕


VPS рд╕рд░реНрд╡рд░ рдХреЛ рд╡рд░реНрдЪреБрдЕрд▓рд╛рдЗрдЬреЗрд╢рди рдкреНрд░рдХрд╛рд░ KVM рдпрд╛ XEN рдХреЗ рд╕рд╛рде рд▓рд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдУрдкрдирд╡реАрдЬреЗрдб рдЬреИрд╕реЗ рд╡рд░реНрдЪреБрдЕрд▓рд╛рдЗрдЬреЗрд╢рди рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмреАрдЪ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдореВрд▓ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдореЗрдВ рдХрд░реНрдиреЗрд▓ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдирд╣реАрдВ рд╣реИред рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдбреЙрдХрд░ рдХреЗ рд╕рд╛рде рдХреЗрд╡реАрдПрдо рд╕рд░реНрд╡рд░ рдХреЛ рдкреНрд░реАрдЗрдВрд╕реНрдЯреЙрд▓реНрдб рдХрд┐рдпрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╕рд░реНрд╡рд░ рдкрд░ рдПрдХ docker рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдкрдХреЛ рдЗрд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╕реНрдерд╛рдиреАрдп рдорд╢реАрди рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╕рдордп рд╕рдорд╛рди рд╣реИред рдкреАрдПрдЪрдкреА рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИред рд▓рд╛рд░рд╡реЗрд▓ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдХрдо рд╕реЗ рдХрдо 7.2 рдЪрд╛рд╣рд┐рдПред рдореБрдЭреЗ рдЕрд▓рдЧ рд╕реЗ php ext-mbstring (php 7.3 рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ) рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдкрдбрд╝рд╛:

sudo apt-get update
sudo apt-get install php7.3-mbstring

рдЕрдЧрд▓рд╛, рд╣рдореЗрдВ рдЧрд┐рдЯрд▓реИрдм-рд░рдирд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд░рдирд░ рдПрдХ рдРрд╕реА рд╕реЗрд╡рд╛ рд╣реИ рдЬреЛ рдПрдХ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╕рдордп рдПрдХ рд╣рд┐рдЯрд▓реИрдм рд╕реЗ рдПрдХ рд╡реЗрдмрд╣реБрдХ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдЧреА рдФрд░ рд╣рдорд╛рд░реЗ рд╕рд░реНрд╡рд░ рдкрд░ рд╕рдм рдХреБрдЫ рддреИрдирд╛рдд рдХрд░реЗрдЧреАред

Gitlab-runner рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:

curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64

рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╕реЗрдЯ рдХрд░реЗрдВ:

sudo chmod +x /usr/local/bin/gitlab-runner

рдЕрдЧрд▓рд╛, gitlab-runner рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрдирд╛рдПрдБ рдФрд░ gitlab рдзрд╛рд╡рдХ рд╕реЗрд╡рд╛ рдЪрд▓рд╛рдПрдБ:

sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
sudo gitlab-runner start

рд░рдЬрд┐рд╕реНрдЯрд░ рдзрд╛рд╡рдХред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЗрд╕ рд▓реЗрдЦ рдХреЗ рднрд╛рдЧ 2 рд╕реЗ рдЯреЛрдХрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

sudo gitlab-runner register

рдЬрд╡рд╛рдм рдореЗрдВ, рд╡реЗ рдЖрдкрд╕реЗ рдЖрдкрдХреЗ рд╣рд┐рдЯрд▓реИрдм рдХрд╛ рдкрддрд╛ рдкреВрдЫреЗрдВрдЧреЗред Gitlab.com

рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ :

Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com )
https://gitlab.com

рдЕрдЧрд▓рд╛, рдЖрдкрдХреЛ рдЯреЛрдХрди рджрд░реНрдЬ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рднрд╛рдЧ 2 рд╕реЗ рдЯреЛрдХрди рджрд░реНрдЬ рдХрд░реЗрдВред

Please enter the gitlab-ci token for this runner
xxx

рдЗрд╕рдХреЗ рдмрд╛рдж, рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ рдПрдХ рд╡рд┐рд╡рд░рдг рдФрд░ рдЯреИрдЧ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред рдлрд┐рд░ рд╣рдореЗрдВ рдПрдХ рдирд┐рд╖реНрдкрд╛рджрдХ рдЪреБрдирдиреЗ рдХреА рдкреЗрд╢рдХрд╢ рдХреА рдЬрд╛рддреА рд╣реИред рдпрд╣рд╛рдВ рдЖрдкрдХреЛ рдПрдХ рд╢реЗрд▓ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:


Please enter the executor:
shell

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕рдордЭрд╛, рдирд┐рд╖реНрдкрд╛рджрдХ рдПрдХ рдРрд╕рд╛ рд╡рд╛рддрд╛рд╡рд░рдг рд╣реИ рдЬрд┐рд╕рдореЗрдВ .itlab-ci.yml рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдмреИрд╢, ssh, docker, рд╕рдорд╛рдирддрд╛рдПрдВ, virtualbox рдФрд░ kubernets рд╣реИрдВред рдкреНрд░рд▓реЗрдЦрди рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ, рддреЛ рдмреИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдпрд╣ рдПрдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд╡рд┐рдХрд▓реНрдк рд╣реИ рдЬреЛ рдЖрдкрдХреЗ рд╕рд░реНрд╡рд░ рдкрд░ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ рдЪрд▓рддрд╛ рд╣реИред

рдлрд┐рд░ рд╣рдореЗрдВ gitlab-runner рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ docker рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдореВрд╣ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

sudo usermod -aG docker gitlab-runner

рдПрдХреНрд╕реЗрд╕ рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, sudoers рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ

sudo nano /etc/sudoers

рд▓рд╛рдЗрди

gitlab-runner ALL=(ALL) NOPASSWD: ALL

рдЕрдм рд╣рдо .itlab-ci.yml рдлрд╝рд╛рдЗрд▓ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рддрдерд╛рдХрдерд┐рдд рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ: рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрджреЗрд╢реЛрдВ рдХрд╛ рдПрдХ рдХреНрд░рдоред

рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рд┐рдЯрд▓рд┐рд╕реНрдЯ рдкрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдкрд░ рдЬрд╛рдПрдВ рдФрд░ Create a new file рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рдЧреАрддрд╛рд▓рд╛рдм рдЦреБрдж рдлрд╝рд╛рдЗрд▓ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдкреЗрд╢ рдХрд░реЗрдВрдЧреЗ, рдЙрдирдореЗрдВ рд╕реЗ рдЖрдкрдХреЛ .itlab-ci.yml рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЧрд┐рдЯрд▓реИрдм рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЪрдпрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВрдиреЗ рд▓рд╛рд░реНрд╡рд╛ рдХреЛ рдЪреБрдирд╛ рдФрд░ рдЗрд╕реЗ рдЕрдкрдиреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рдмрджрд▓ рджрд┐рдпрд╛:


# This file is a template, and might need editing before it works on your project.
# Official framework image. Look for the different tagged releases at:
# https://hub.docker.com/r/library/php
# .    ,        
image: registry.gitlab.com/<>/<>:latest

# Pick zero or more services to be used on all builds.
# Only needed when using a docker container to run your tests in.
# Check out: http://docs.gitlab.com/ce/ci/docker/using_docker_images.html#what-is-a-service
services:
  - mysql:latest
#    
variables:
  MYSQL_DATABASE: laravel
  MYSQL_ROOT_PASSWORD: ***********

# This folder is cached between builds
# ,      
# http://docs.gitlab.com/ce/ci/yaml/README.html#cache
cache:
  paths:
    - vendor/
    - node_modules/

# This is a basic example for a gem or script which doesn't use
# services such as redis or postgres
#     
before_script:
  #   
  - sudo apt-get update -yqq
  #    nodejs
  - sudo apt-get install gnupg -yqq
  #  Node   12
  - curl -sL https://deb.nodesource.com/setup_12.x | sudo bash -
  #  
  - sudo apt-get install git nodejs libcurl4-gnutls-dev libicu-dev libmcrypt-dev libvpx-dev libjpeg-dev libpng-dev libxpm-dev zlib1g-dev libfreetype6-dev libxml2-dev libexpat1-dev libbz2-dev libgmp3-dev libldap2-dev unixodbc-dev libpq-dev libsqlite3-dev libaspell-dev libsnmp-dev libpcre3-dev libtidy-dev -yqq
  #  composer
  - curl -sS https://getcomposer.org/installer | php
  - php composer.phar install
  - composer install
  #   Node
  - npm install
  # Copy over testing configuration.
  # Don't forget to set the database config in .env.testing correctly
  - DB_HOST=mysql
  - DB_DATABASE=laravel
  - DB_USERNAME=root
  - DB_PASSWORD=*********
  #  .env.example    .env
  - cp .env.example .env
  #  npm build
  - npm run dev
  #       laravel
  - php artisan key:generate
  - php artisan config:cache
  - php artisan route:clear
  - php artisan config:clear
  - php artisan cache:clear
  #  .
  - docker-compose exec app php artisan migrate
  #   
  #- docker-compose exec app php artisan db:seed

#
test:
  script:
    #  
    - php vendor/bin/phpunit --coverage-text --colors=never
    #  npm
    - npm test

#       
deploying:
  stage: deploy
  script:
    - echo "Deployed"
    - docker-compose stop
    - docker-compose up -d

рдЕрдкрдиреЗ рд╕рд░реНрд╡рд░ рдХреЗ рдЖрдИрдкреА рдкрддреЗ рдкрд░ рдкрд╛рдЗрдкрд▓рд╛рдЗрди (CI / CD-> рдкрд╛рдЗрдкрд▓рд╛рдЗрди) рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдЕрдкрдирд╛ рд▓рд╛рд░реНрд╡рд╛ рдкреГрд╖реНрда рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред

CI / CD рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рд╕реАрди рдмреНрд░реИрдбрд▓реА рдХреЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛:


рдФрд░ рдордзреНрдпрдо.com/@sean_bradley/auto - devops - with - gitlab - ci- and- docker - compose - f931233f080f

All Articles