рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреА рдмреЗрд╣рддрд░ рд╕рдордЭ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЕрдиреБрд╢рдВрд╕рд╛ рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдЖрдк рдкрд╣рд▓реЗ
рдкрд┐рдЫрд▓рд╛ рдкреЛрд╕реНрдЯ рдкрдврд╝реЗрдВ
Nginx + PHP + MySql + phpMyAdmin рдХреЗ рдПрдХ рд╕рдореВрд╣ рд╕реЗ рдорд┐рд▓рдХрд░ рд╕реНрдерд╛рдиреАрдп рд╡рд╛рддрд╛рд╡рд░рдг рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдпрд╣ рдмрдВрдбрд▓ рдмрд╣реБрдд рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реИ рдФрд░ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдбреЗрд╡рд▓рдкрд░ рдХреА рдХрдИ рдорд╛рдирдХ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдкрд┐рдЫрд▓реЗ рдкреЛрд╕реНрдЯ рдХреА рддрд░рд╣, рдЬреЛрд░ рдХреЛ рдЕрдкрдиреЗ рд╢реБрджреНрдзрддрдо рд░реВрдк рдореЗрдВ рдбреЙрдХ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдбреЙрдХрдЯрд░-рдХрдВрдкреЛрдЬрд┐рдЯ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреА рдУрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рддреЛ рдЪрд▓рд┐рдП!
рдЪрд▓рд┐рдП docker-compose.yml рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдПрдХ рдЕрд▓рдЧ рдкреНрд░реЙрдХреНрд╕реА рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╣реИ:
рдирдЧрдиреЗрдХреНрд╕-рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рд▓рд┐рдП docker-compose.ymlversion: '3.0' services: proxy: image: jwilder/nginx-proxy ports: - 80:80 volumes: - /var/run/docker.sock:/tmp/docker.sock:ro networks: - proxy networks: proxy: driver: bridge
рдкреНрд░рд╕реНрддреБрдд рдлрд╝рд╛рдЗрд▓ рдореЗрдВ
рдЫрд╡рд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░
рдкреНрд░реЙрдХреНрд╕реА рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдПрдХрд▓ рдХрдВрдЯреЗрдирд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
: jwilder / nginx -xy рдЫрд╡рд┐ рдФрд░ рдЙрд╕реА рдирд╛рдо рд╕реЗ рдПрдХ рдиреЗрдЯрд╡рд░реНрдХ рдмрдирд╛ рд░рд╣рд╛ рд╣реИред
рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛ рдирд┐рд░реНрджреЗрд╢ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХрдВрдЯреЗрдирд░ рдХрд┐рд╕ рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реИ, рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдпрд╣ рд╣рдорд╛рд░рд╛ рдкреНрд░реЙрдХреНрд╕реА рдиреЗрдЯрд╡рд░реНрдХ рд╣реИред
рдиреЗрдЯрд╡рд░реНрдХ рдмрдирд╛рддреЗ рд╕рдордп, рдбреНрд░рд╛рдЗрд╡рд░: рдмреНрд░рд┐рдЬ рдбрд╛рдпрд░реЗрдХреНрдЯрд┐рд╡ рдХреЛ рдЫреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рдкреБрд▓ рдЪрд╛рд▓рдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЪрд╛рд▓рдХ рд╣реИред рдпрд╣ рдХрдВрдЯреЗрдирд░ рдЕрдиреНрдп рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рд╕рд╛рде рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рд╕рдВрдЪрд╛рд░ рдХрд░реЗрдЧрд╛ред
Jwilder / nginx- рдкреНрд░реЙрдХреНрд╕реА рдЗрдореЗрдЬ рдмреЗрд╕рд┐рдХ рдФрд░ рд▓реА рдЧрдИ рд╣реИ, рдФрд░
рдбреЙрдХрд░ рд╣рдм рднреА рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рдХрд╛рдлреА рд╡реНрдпрд╛рдкрдХ рдФрд░ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдиреЗрдЧреНрдиреЗрдХреНрд╕-рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ: рдпрд╣ рдПрдХ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдбреЙрдХ рд╕реЙрдХреЗрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рддрдХ рдкрд╣реБрдБрдЪрддрд╛ рд╣реИ, VIRTUAL_HOST рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддрд╛ рд╣реИ рдФрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реЛрд╕реНрдЯ рд╕реЗ рдХрдВрдЯреЗрдирд░ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдпрд╣ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬреНрдЮрд╛рдд рдбреЙрдХрдЯрд░-рдХрдореНрдкреЛрдЬ рдЕрдк-рдбреА рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдкреНрд░реЙрдХреНрд╕реА рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрдЙрдЯрдкреБрдЯ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╣реИрдВ:
Creating network "proxy_proxy" with driver "bridge" Creating proxy_proxy_1 ... done
рдпрд╣ рдирд┐рд╖реНрдХрд░реНрд╖ рд╣рдореЗрдВ рд╕реВрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╢реБрд░реБрдЖрдд рдореЗрдВ рдкреНрд░реЙрдХреНрд╕реА_рдкреНрд░реЛрдХреНрд╕реА рдиреЗрдЯрд╡рд░реНрдХ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдлрд┐рд░ рдкреНрд░реЙрдХреНрд╕реА_рдкреНрд░реЛрдХреНрд╕реА рез рдХрдВрдЯреЗрдирд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдиреЗрдЯрд╡рд░реНрдХ рдирд╛рдо рдЙрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рдирд╛рдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ docker-compose.yml рдлрд╝рд╛рдЗрд▓ рд╕реНрдерд┐рдд рдереА, рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдкреНрд░реЙрдХреНрд╕реА рд╣реИ рдФрд░ рдЙрд╕реА рдирд╛рдо рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдирд╛рдо рд╣реИред
рдпрджрд┐ рдЖрдк
docker network ls рдХрдорд╛рдВрдб рджрд░реНрдЬ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЕрдкрдиреЗ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ docker рдиреЗрдЯрд╡рд░реНрдХ рдХреА рдПрдХ рд╕реВрдЪреА рджреЗрдЦреЗрдВрдЧреЗ рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдкреНрд░реЙрдХреНрд╕реА -рдкреНрд░реЛрдХреНрд╕реА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдХрдВрдЯреЗрдирд░ рдирд╛рдо рдлрд╝реЛрд▓реНрдбрд░ рдирд╛рдо рдФрд░ рд╕реЗрд╡рд╛ рдирд╛рдо рдФрд░ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рдорд╛рди рд╕рд┐рджреНрдзрд╛рдВрдд рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рд╕рдорд╛рди рдирд╛рдореЛрдВ рд╡рд╛рд▓реЗ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдирд╣реАрдВ рд╣реЛрдиреЗ рджреЗрддрд╛ рд╣реИред рдХрдВрдЯреЗрдирд░_рдирд╛рдо рдирд┐рд░реНрджреЗрд╢
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ , рдЖрдк
рдХрдВрдЯреЗрдирд░ рдХрд╛ рдирд╛рдо рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрд╣ рдПрдХ рдмреЗрдХрд╛рд░ рдХрд╛рд░реНрдп рд▓рдЧрддрд╛ рд╣реИред рдЗрд╕ рдкрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреЛрд╕реНрдЯ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреАред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдПрдХ рджреВрд╕рд░рд╛ docker-compose.yml рдмрдирд╛рдПрдВ:
рдЕрдиреНрдп рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП docker-compose.yml version: '3.0' services: nginx: image: nginx environment: - VIRTUAL_HOST=site.local depends_on: - php volumes: - ./docker/nginx/conf.d/default.nginx:/etc/nginx/conf.d/default.conf - ./html/:/var/www/html/ networks: - frontend - backend php: build: context: ./docker/php volumes: - ./docker/php/php.ini:/usr/local/etc/php/php.ini - ./html/:/var/www/html/ networks: - backend mysql: image: mysql:5.7 volumes: - ./docker/mysql/data:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: root networks: - backend phpmyadmin: image: phpmyadmin/phpmyadmin:latest environment: - VIRTUAL_HOST=phpmyadmin.local - PMA_HOST=mysql - PMA_USER=root - PMA_PASSWORD=root networks: - frontend - backend networks: frontend: external: name: proxy_proxy backend:
рдпрд╣рд╛рдБ рдХреНрдпрд╛ рдШреЛрд╖рдгрд╛ рдХреА рдЧрдИ рд╣реИ?
рдЪрд╛рд░ рд╕реЗрд╡рд╛рдПрдВ рд╕реВрдЪреАрдмрджреНрдз рд╣реИрдВ: рдирдЧрдиреЗрдХреНрд╕, php, mysql рдФрд░ phpmyadminред рдФрд░ рджреЛ рдиреЗрдЯрд╡рд░реНрдХред рдПрдХ рдкреНрд░реЙрдХреНрд╕реА рдиреЗрдЯрд╡рд░реНрдХ, рдЬрд┐рд╕реЗ рдлреНрд░рдВрдЯреЗрдВрдб рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреЛ рдмрд╛рд╣рд░реА рдиреЗрдЯрд╡рд░реНрдХ рдФрд░ рдПрдХ рдирдП рдЖрдВрддрд░рд┐рдХ рдмреИрдХреЗрдВрдб рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рдЬреНрдЮрд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рдбреНрд░рд╛рдЗрд╡рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд▓рд┐рдЦрд╛ рдерд╛, рдкреБрд▓ рдкреНрд░рдХрд╛рд░ рдХреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдбреНрд░рд╛рдЗрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
nginx
рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рдо рдбреЙрдХрдЯрд░ рд╣рдм рдХреЗ рд╕рд╛рде рдореВрд▓ рдЫрд╡рд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдФрд░ рдпрд╣ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдХрдВрдЯреЗрдирд░ рдХрд┐рд╕ рдкрддреЗ рдкрд░ рд╕реБрд▓рдн рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рдХрдВрдЯреЗрдирд░ рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╡рд┐рдХрд▓реНрдк рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ php рдХрдВрдЯреЗрдирд░ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдЗрд╕рдХреЗ рдмрд╛рдж рдЙрд╕ рдкрд░ рдирд┐рд░реНрднрд░ nginx рдХрдВрдЯреЗрдирд░ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЕрдЧрд▓рд╛, рд╣рдо рдЕрдкрдиреЗ nginx рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдереЛрдбрд╝рд╛ рдХрдо рд╣реЛрдЧрд╛ рдФрд░ HTML рдХреЗ рд╕рд╛рде рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рдорд╛рдЙрдВрдЯ рдХрд░реЗрдЧрд╛ред рд╣рдо рдпрд╣ рднреА рдиреЛрдЯрд┐рд╕ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдПрдХ рд╕рд╛рде рджреЛ рдиреЗрдЯрд╡рд░реНрдХ рддрдХ рдкрд╣реБрдВрдЪ рд╣реИред рдпрд╣ рдлреНрд░рдВрдЯрдПрдВрдб рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рджреЛрдиреЛрдВ рдкреНрд░реЙрдХреНрд╕рд┐рд╕ рдХрд╛ рд╕рдВрдЪрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдмреИрдХрдПрдВрдб рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ php рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рд╕рднреА рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рдПрдХ рд╣реА рдлреНрд░рдВрдЯреЗрдВрдб рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рдмрдВрдж рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдЕрд▓рдЧрд╛рд╡ рдЕрдзрд┐рдХ рд╕рд╣реА рд╣реИред
default.nginx server { listen 80; server_name_in_redirect off; access_log /var/log/nginx/host.access.log main; root /var/www/html/; location / { try_files $uri /index.php$is_args$args; } location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass php: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 ~ /\.ht { deny all; } }
default.nginx nginx рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рд╣реИ рдЬрд┐рд╕реЗ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдореБрдЦреНрдп рдмрд┐рдВрджреБ
Fastcgi_pass php рдирд┐рд░реНрджреЗрд╢ рд╣реИ
: 9000 ред рдпрд╣ FastCGI рд╕рд░реНрд╡рд░ рдХрд╛ рдкрддрд╛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред рдкрддреЗ рдХреЛ рдПрдХ рдбреЛрдореЗрди рдирд╛рдо рдпрд╛ рдЖрдИрдкреА рдкрддреЗ рдФрд░ рдкреЛрд░реНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
php: 9000 - рд╕реЗрд╡рд╛ рдХрд╛ рдирд╛рдо FastCGI рд╕рд░реНрд╡рд░ рдХрд╛ рдкрддрд╛ рд╣реИред Nginx рддрдХ рдкрд╣реБрдБрдЪрдиреЗ php рдХреЛ рдХрдВрдЯреЗрдирд░ рдХрд╛ IP рдкрддрд╛ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ php рдЪрд▓ рд░рд╣рд╛ рд╣реИред рдкреЛрд░реНрдЯ 9000 рдПрдХ рдорд╛рдирдХ рдкреЛрд░реНрдЯ рд╣реИ, рдЗрд╕реЗ рдмреЗрд╕ рдХрдВрдЯреЗрдирд░ рдмрдирд╛рддреЗ рд╕рдордп рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдкреЛрд░реНрдЯ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ nginx рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИ, рд▓реЗрдХрд┐рди рд╣реЛрд╕реНрдЯ рдорд╢реАрди рдкрд░ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдЖрдЧреЗ рдирд╣реАрдВ рднреЗрдЬрд╛ рдЧрдпрд╛ рдерд╛ред
php
рдпрд╣ рдЕрд╕рд╛рдорд╛рдиреНрдп рд╣реИ рдХрд┐ рдПрдХ рдЫрд╡рд┐ рдХреЛ рдЗрдВрдЧрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдпрд╣ рдХрдореНрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд╕реАрдзреЗ рдЕрдкрдиреА рдЫрд╡рд┐ рдмрдирд╛рддрд╛ рд╣реИред рд╕рдВрджрд░реНрдн рдЙрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдбреЙрдХрд░рдлрд╛рдЗрд▓ рд╕реНрдерд┐рдд рд╣реИред
Dockerfile FROM php:7.3.2-fpm RUN apt-get update && apt-get install -y \ libzip-dev \ zip \ && docker-php-ext-configure zip --with-libzip \ && docker-php-ext-install zip \ && docker-php-ext-install mysqli COPY --from=composer:latest /usr/bin/composer /usr/bin/composer WORKDIR /var/www/html
Dockerfile рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдмрд┐рд▓реНрдб рдореВрд▓ php рдЫрд╡рд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ: 7.3.2-fpm, рдлрд┐рд░ php рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдЧрд▓рд╛, рд╕рдВрдЧреАрддрдХрд╛рд░ рдХреЛ рдЕрдиреНрдп рдЖрдзрд╛рд░ рдЫрд╡рд┐ рд╕реЗ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред рдореИрдВ рдЕрдиреНрдп рдкрджреЛрдВ рдкрд░ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рдореБрджреНрджреЛрдВ рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реВрдВрдЧрд╛ред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде php.ini рдлрд╝рд╛рдЗрд▓ рдФрд░ html рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ php рдмреИрдХрдПрдВрдб рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рд╕реНрдерд┐рдд рд╣реИ рдФрд░, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░реЙрдХреНрд╕реА рдЕрдм рдЗрд╕реЗ рдПрдХреНрд╕реЗрд╕ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
mysql
рдЖрдзрд╛рд░ mysql рдЫрд╡рд┐ 5.7 рдЯреИрдЧ рдХреЗ рд╕рд╛рде рд▓реА рдЧрдИ рд╣реИ, рдЬреЛ mysql рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдбреЗрдЯрд╛рдмреЗрд╕ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ./docker/mysql/data рдлрд╝реЛрд▓реНрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЖрдкрдХреЛ рдЗрд╕реЗ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ)ред рдФрд░ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд░реВрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдкрд╛рд╕рд╡рд░реНрдб рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд░реВрдЯ рднреАред
рдбреЗрдЯрд╛рдмреЗрд╕ рдмреИрдХрдПрдВрдб рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рд╕реНрдерд┐рдд рд╣реИ, рдЬреЛ рдЗрд╕реЗ php рдХреЗ рд╕рдВрдкрд░реНрдХ рдореЗрдВ рд░рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЖрдзрд╛рд░ рдЫрд╡рд┐ рдорд╛рдирдХ рдмрдВрджрд░рдЧрд╛рд╣ 3306 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдпрд╣ php рдХреЗ рд▓рд┐рдП docker рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрдЬрдмрд╛рди рдорд╢реАрди рдкрд░ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕ рдкреЛрд░реНрдЯ рдХреЗ рд▓рд┐рдП рдлреЙрд░рд╡рд░реНрдб рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЙрд╕реА PHPSTORM рд╕реЗ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдкрдХреЗ рд▓рд┐рдП phpmyadmin рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рддреЛ рдЖрдк рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред
phpmyadmin
Phpmyadmin рдХреА рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдЫрд╡рд┐ред рд╡рд╛рддрд╛рд╡рд░рдг рдЪрд░ nginx рдХреЗ рд╕рдорд╛рди рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП VIRTUAL_HOST рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред PMA_USER рдФрд░ PMA_PASSWORD рдбреЗрдЯрд╛рдмреЗрд╕ рддрдХ рдкрд╣реБрдБрдЪред рдФрд░ рдЦреБрдж PMA_HOST рд╣реЛрд╕реНрдЯ рдбреЗрдЯрд╛рдмреЗрд╕ред рд▓реЗрдХрд┐рди рдпрд╣ рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рдирд╣реАрдВ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдорддреМрд░ рдкрд░ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди mysqlред рдпрд╛рдиреА рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рдЗрд╕рдХреА рд╕реЗрд╡рд╛ рдХреЗ рдирд╛рдо рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реИ, рдЕрд░реНрдерд╛рдд mysqlред Phpmyadmin рдХрдВрдЯреЗрдирд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХрд╛ рдлреНрд░рдВрдЯрдПрдВрдб рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рдХрдиреЗрдХреНрд╢рди рд╣реИред
рд╣рдо рд╕рд╛рдорд╛рдиреНрдп рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рд╕реЗрд╡рд╛рдПрдВ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ: docker-compose -dред
рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрдЙрдЯрдкреБрдЯ рджреЗрдЦрддреЗ рд╣реИрдВ:
рд╕реЗрд╡рд╛ рдХрд╛ рд╢реБрднрд╛рд░рдВрдн Creating network "lesson2_backend" with the default driver Building php Step 1/4 : FROM php:7.3.2-fpm ---> 9343626a0f09 Step 2/4 : RUN apt-get update && apt-get install -y libzip-dev zip && docker-php-ext-configure zip --with-libzip && docker-php-ext-install zip && docker-php-ext-install mysqli ---> Using cache ---> 5e4687b5381f Step 3/4 : COPY --from=composer:latest /usr/bin/composer /usr/bin/composer ---> Using cache ---> 81b9c665be08 Step 4/4 : WORKDIR /var/www/html ---> Using cache ---> 3fe8397e92e6 Successfully built 3fe8397e92e6 Successfully tagged lesson2_php:latest Pulling mysql (mysql:5.7)... 5.7: Pulling from library/mysql fc7181108d40: Already exists 787a24c80112: Already exists a08cb039d3cd: Already exists 4f7d35eb5394: Already exists 5aa21f895d95: Already exists a742e211b7a2: Already exists 0163805ad937: Already exists 62d0ebcbfc71: Pull complete 559856d01c93: Pull complete c849d5f46e83: Pull complete f114c210789a: Pull complete Digest: sha256:c3594c6528b31c6222ba426d836600abd45f554d078ef661d3c882604c70ad0a Status: Downloaded newer image for mysql:5.7 Creating lesson2_php_1 ... done Creating lesson2_mysql_1 ... done Creating lesson2_phpmyadmin_1 ... done Creating lesson2_nginx_1 ... done
рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╢реБрд░реБрдЖрдд рдореЗрдВ lesson2_backend рдиреЗрдЯрд╡рд░реНрдХ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдлрд┐рд░ php рдЫрд╡рд┐ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдлрд┐рд░ рдРрд╕реА рдЫрд╡рд┐рдпрд╛рдВ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдирд╣реАрдВ рд╣реИрдВ (рдкреБрд▓) рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВ рдФрд░ рд╡рд░реНрдгрд┐рдд рд╕реЗрд╡рд╛рдПрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд▓реЙрдиреНрдЪ рдХреА рдЬрд╛рддреА рд╣реИрдВред
рдЕрдВрддрд┐рдо рд╕реНрдкрд░реНрд╢, рддрд╛рдХрд┐ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░реЗ, рдпрд╣ рдореЗрдЬрдмрд╛рди рдпрд╛ sites.local рдФрд░ phpmyadmin.local рдбреЛрдореЗрди рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд╣реИред
Index.php рдХреА рд╕рд╛рдордЧреНрд░реА рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реЛ рд╕рдХрддреА рд╣реИ:
рдпрд╣рд╛рдВ рд╣рдо рдЬрд╛рдВрдЪрддреЗ рд╣реИрдВ рдХрд┐ php рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдХрдиреЗрдХреНрд╢рди - mysqli, рдЬреЛ рдбреЙрдХрдлрд╛рдЗрд▓ рдХреА рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рджреМрд░рд╛рди рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛, рд╕рд╣реА рд╣реИред
рдФрд░ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдХрдВрдЯреЗрдирд░ рдХреЗ рд╕рд╛рде рдХрдиреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП, рд╕реЗрд╡рд╛ рдХрд╛ рдирд╛рдо рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - mysqlред
рд╕рдВрдкреВрд░реНрдг рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╕рдВрд░рдЪрдирд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдереА:
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╕рдВрд░рдЪрдирд╛ habr/lesson2$ tree . тФЬтФАтФА docker тФВ тФЬтФАтФА mysql тФВ тФВ тФФтФАтФА data тФВ тФЬтФАтФА nginx тФВ тФВ тФФтФАтФА conf.d тФВ тФВ тФФтФАтФА default.nginx тФВ тФФтФАтФА php тФВ тФЬтФАтФА Dockerfile тФВ тФФтФАтФА php.ini тФЬтФАтФА docker-compose.yml тФЬтФАтФА html тФВ тФФтФАтФА index.php тФФтФАтФА proxy тФФтФАтФА docker-compose.yml