SlideShare une entreprise Scribd logo
1  sur  39
Uruchomienie i praca
z Laravel w wirtualnym
kontenerze Docker'a
Marek Tenus
Full-stack Senior Developer
marek@highsolutions.pl
#1 - Czym jest Docker?
● Wewnętrzny projekt firmy dotCloud rozwijany przez
Solomona Hykesa
● W 2013 udostępniony publicznie
https://github.com/docker
● Platforma pozwalająca na uruchomienie środowiska
pracy w zwirtualizowanym środowisku kontenerów
#1 - Czym jest Docker?
Kontener posiada:
- system plików (rootfs)
- procesy
- pamięć
- urządzenia
- porty sieciowe
#2 -Instalacja Docker’a
Dostępne edycje:
Community Edition - CE
Enterprise Edition - EE
#2 -Instalacja Docker’a
Wspierane platformy dla CE (tylko x86_64):
● macOS
● Microsoft Windows 10
● AWS
● Azure
● Centos
● Debian
● Ubuntu
● Fedora
#2 -Instalacja Docker’a
https://docs.docker.com/install/
#3 -Laradock
Środowisko do rozwoju aplikacji w
języku PHP na platformie Docker
http://laradock.io
#3 -Laradock
Laradock pierwotnie był stworzony po to, aby
pracować w Dockerze z Laravel. Z czasem i
rozwojem platformy pojawił się support dla
Symphony, CodeIgniter, Wordpress, Drupal
etc.
#3 -Laradock
Dostępne narzędzia:
Bazy: MySql, PostgreSql, MongoDB, MariaDB...
Cache: Redis, Memcached, Aerospike
Serwery: Apache, Nginx, HHVM
“Kompilatory”: PHP FPM, HHVM
Proxy: HAPProxy
Kolejkowanie: RabbitMQ, PHP Worker, Beanstalkd
Inne: PhpMyadmin, Varnish, Jenkins, Laravel Echo, Elasticsearch...
#3 -Laradock
Workspace
Obraz (Image) środowiska developerskiego, które
zawiera ustawienia i narzędzia do pracy z poziomu
konsoli:
PHP CLI, Composer, Git, Linuxbrew, Node, V8JS, Gulp,
SQLite, xDebug, Envoy, Deployer, Vim, Yarn...
#4 -Instalacja Laradock
meetup
|
|- laradock
|
|- meetup3
|
|- …..
#4 -Instalacja Laradock
$ cd ~/
$ mkdir meetup
$ git clone https://github.com/Laradock/laradock.git
$ cd laradock
$ cp env-example .env
$ vim .env
#4 -Instalacja Laradock
.env
Plik konfiguracyjny zawierający parametry pracy
Dockera oraz dostępnych narzędzi
#4 -Instalacja Laradock
docker-compose.yml
Plik zawierający ustawienia, na podstawie których
budowane będą kontenery i działały poszczególne
serwisy
#4 -Instalacja Laradock
PHP_VERSION=7.2
WORKSPACE_INSTALL_PYTHON=true
MYSQL_VERSION=latest
MYSQL_DATABASE=meetup
MYSQL_USER=root
MYSQL_PASSWORD=secret
MYSQL_PORT=3306
MYSQL_ROOT_PASSWORD=secret
#4 -Instalacja Laradock
Uruchomienie kontenerów:
$ docker-compose up -d nginx mysql redis
$ docker-compose up -d workspace phpmyadmin
#4 -Instalacja Laradock
$ docker-compose ps
Name Command State Ports
-------------------------------------------------------------------------------------------------------------------------
laradock_mysql_1 docker-entrypoint.sh mysqld Up 0.0.0.0:3306->3306/tcp
laradock_nginx_1 nginx Up 0.0.0.0:443-
>443/tcp, 0.0.0.0:80->80/tcp
laradock_php-fpm_1 docker-php-entrypoint php-fpm Up 9000/tcp
laradock_phpmyadmin_1 /run.sh phpmyadmin Up 0.0.0.0:8080->80/tcp, 9000/tcp
laradock_redis_1 docker-entrypoint.sh redis ... Up 0.0.0.0:6379->6379/tcp
laradock_workspace_1 /sbin/my_init Up 0.0.0.0:2222->22/tcp
#4 -Instalacja Laradock
$ docker-compose ps
Name Ports
-----------------------------------------------------------------------------------------------
laradock_mysql_1 0.0.0.0:3306->3306/tcp
laradock_nginx_1 0.0.0.0:443->443/tcp, 0.0.0.0:80-
>80/tcp
laradock_phpmyadmin_1 0.0.0.0:8080->80/tcp, 9000/tcp
laradock_redis_1 0.0.0.0:6379->6379/tcp
#4 -Instalacja Laradock
http://localhost => port 80, nginx
http://localhost:8080 => phpmyadmin
#5 -Instalacja Laravel z Docker’a
$ docker-compose exec --user=laradock workspace bash
laradock@bd7fc09891b0:/var/www$
$ composer create-project laravel/laravel meetup3
$ cp .env.example .env
$ vim .env
#5 -Instalacja Laravel z Docker’a
$ vim .env
DB_HOST = mysql
REDIS_HOST = redis
#5 -Instalacja Laravel z Docker’a
$ composer require predis/predis
$ php artisan migrate
$ npm install
#6 - Własna domena
Pobranie IP Docker’a
$ docker network inspect bridge | grep "Gateway"
| awk '{ print $2 }';
“172.17.0.1”
#6 - Własna domena
Ustawienie host’a
$ vim /etc/hosts
172.17.0.1 meetup3.test
#6 - Własna domena
Ustawienie nginx
$ cd ~/meetup/laradock/nginx/sites
$ cp laravel.conf.example meetup3.conf
$ vim meetup3.conf
#6 - Własna domena
Ustawienie nginx
server_name meetup3.test;
root /var/www/meetup3/public;
#6 - Własna domena
Ustawienie nginx
$ docker-compose restart nginx
#6 - Własna domena
http://meetup3.test
#7 - Dostęp do bazy danych
$ docker-compose exec mysql bash
root@1d36fe803b85:/#
$ mysql -u root -p secret
#8 - Cron
Edycja Cron’a
$ cd ~/meetup/laradock
$ vim workspace/crontab/laradock
* * * * * laradock php /var/www/meetup3/artisan
schedule:run >> /dev/null 2>&1
#8 - Cron
Aktualizacja zmian
$ docker-compose down
$ docker compose build workspace
$ docker-compose up -d workspace mysql redis
nginx phpmyadmin
#9 - Aliasy
$ cd ~/meetup/laradock
$ vim workspace/aliases.sh
#9 - Aliasy
...
alias art="php artisan"
alias artisan="php artisan"
alias migrate="php artisan migrate"
alias refresh="php artisan migrate:refresh"
alias rollback="php artisan migrate:rollback"
alias seed="php artisan:seed"
alias serve="php artisan serve --quiet &"
…
#9 - Aliasy
Dodanie własnych aliasów
alias controller='php artisan make:controller'
alias model='php artisan make:model'
#9 - Aliasy
Aktualizacja zmian
$ docker-compose down
$ docker compose build workspace
$ docker-compose up -d workspace mysql redis
nginx phpmyadmin
#9 - Aliasy
$ docker-compose exec --user=laradock workspace bash
laradock@bd7fc09891b0:/var/www$
$ cd meetup3
$ controller WelcomeController
Controller created successfully.
#10 - Dlaczego warto?
Docker Vagrant
konteneryzacja
np. każda wersja PHP zamknięta jest w
osobnym kontenerze,
kontenery uruchamiane jako procesy
(system Linux)
maszyna wirtualna
zawsze wymaga maszyny wirtualnej,
większy narzut zasobów
wykorzystanie w środowisku
deweloperskim i produkcyjnym
wykorzystanie w środowisku
deweloperskim
aplikacje monolityczne i mikroserwisy aplikacje monolityczne
Marek Tenus
marek@highsolutions.pl

Contenu connexe

Tendances

Apache 2.0 dla zaawansowanych
Apache 2.0 dla zaawansowanychApache 2.0 dla zaawansowanych
Apache 2.0 dla zaawansowanych
Wydawnictwo Helion
 
Deployment kodu z Capistrano
Deployment kodu z CapistranoDeployment kodu z Capistrano
Deployment kodu z Capistrano
Michał Szajbe
 

Tendances (20)

Sekrety magicznego ogrodu Docker
Sekrety magicznego ogrodu DockerSekrety magicznego ogrodu Docker
Sekrety magicznego ogrodu Docker
 
Przenieś się do kontenera, czyli korzyści z Docker i Docker Compose
Przenieś się do kontenera, czyli korzyści z Docker i Docker ComposePrzenieś się do kontenera, czyli korzyści z Docker i Docker Compose
Przenieś się do kontenera, czyli korzyści z Docker i Docker Compose
 
Ansible w praktyce
Ansible w praktyceAnsible w praktyce
Ansible w praktyce
 
Hugo - make webdev fun again
Hugo - make webdev fun againHugo - make webdev fun again
Hugo - make webdev fun again
 
Testowanie rozwiązań serverless z LocalStack
Testowanie rozwiązań serverless z LocalStackTestowanie rozwiązań serverless z LocalStack
Testowanie rozwiązań serverless z LocalStack
 
Ansible - Automatyzacja zadań IT
Ansible - Automatyzacja zadań ITAnsible - Automatyzacja zadań IT
Ansible - Automatyzacja zadań IT
 
Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie...
Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie...Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie...
Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie...
 
Infrastructure As Code
Infrastructure As CodeInfrastructure As Code
Infrastructure As Code
 
PHP@Docker - w produkcji
PHP@Docker - w produkcjiPHP@Docker - w produkcji
PHP@Docker - w produkcji
 
Szybkie stawianie aplikacji z Elastic Beanstalk
Szybkie stawianie aplikacji z Elastic BeanstalkSzybkie stawianie aplikacji z Elastic Beanstalk
Szybkie stawianie aplikacji z Elastic Beanstalk
 
Wprowadzenie do testów wydajnościowych w k6
Wprowadzenie do testów wydajnościowych w k6Wprowadzenie do testów wydajnościowych w k6
Wprowadzenie do testów wydajnościowych w k6
 
Kubernetes: from zero to be hero
Kubernetes: from zero to be heroKubernetes: from zero to be hero
Kubernetes: from zero to be hero
 
Monitoring sieci
Monitoring sieciMonitoring sieci
Monitoring sieci
 
Apache 2.0 dla zaawansowanych
Apache 2.0 dla zaawansowanychApache 2.0 dla zaawansowanych
Apache 2.0 dla zaawansowanych
 
Serwer internetowy w systemie Linux
Serwer internetowy w systemie LinuxSerwer internetowy w systemie Linux
Serwer internetowy w systemie Linux
 
Deployment kodu z Capistrano
Deployment kodu z CapistranoDeployment kodu z Capistrano
Deployment kodu z Capistrano
 
Automatyzacja utrzymania jakości w środowisku PHP
Automatyzacja utrzymania jakości w środowisku PHPAutomatyzacja utrzymania jakości w środowisku PHP
Automatyzacja utrzymania jakości w środowisku PHP
 
Ruby, Ruby on Rails 2010
Ruby, Ruby on Rails 2010Ruby, Ruby on Rails 2010
Ruby, Ruby on Rails 2010
 
Aplikacje internetowe real-time w oparciu o React/Redux
Aplikacje internetowe real-time w oparciu o React/ReduxAplikacje internetowe real-time w oparciu o React/Redux
Aplikacje internetowe real-time w oparciu o React/Redux
 
Elasticsearch i Docker - skalowalność, wysoka dostępność i zarządzanie zasobami
Elasticsearch i Docker - skalowalność, wysoka dostępność i zarządzanie zasobamiElasticsearch i Docker - skalowalność, wysoka dostępność i zarządzanie zasobami
Elasticsearch i Docker - skalowalność, wysoka dostępność i zarządzanie zasobami
 

Similaire à Laravel Poznań Meetup #3 - Uruchomienie i praca z Laravel w wirtualnym kontenerze Docker'a

Vagrant - RuPy Tuesday
Vagrant - RuPy TuesdayVagrant - RuPy Tuesday
Vagrant - RuPy Tuesday
GaldoMedia
 

Similaire à Laravel Poznań Meetup #3 - Uruchomienie i praca z Laravel w wirtualnym kontenerze Docker'a (20)

Docker
DockerDocker
Docker
 
Vagrant - RuPy Tuesday
Vagrant - RuPy TuesdayVagrant - RuPy Tuesday
Vagrant - RuPy Tuesday
 
Docker praktyczne podstawy
Docker  praktyczne podstawyDocker  praktyczne podstawy
Docker praktyczne podstawy
 
PLNOG22 - Piotr Stolarek - Bezpieczeństwo użytkowania platform usługowych Tel...
PLNOG22 - Piotr Stolarek - Bezpieczeństwo użytkowania platform usługowych Tel...PLNOG22 - Piotr Stolarek - Bezpieczeństwo użytkowania platform usługowych Tel...
PLNOG22 - Piotr Stolarek - Bezpieczeństwo użytkowania platform usługowych Tel...
 
JavaScript, Moduły
JavaScript, ModułyJavaScript, Moduły
JavaScript, Moduły
 
Kivy na Androidzie
Kivy na AndroidzieKivy na Androidzie
Kivy na Androidzie
 
Webinar - Podstawy Node.js
Webinar - Podstawy Node.jsWebinar - Podstawy Node.js
Webinar - Podstawy Node.js
 
Laravel workshops 1
Laravel workshops 1Laravel workshops 1
Laravel workshops 1
 
WordUp Trójmiasto - Sage 9 w praktyce
WordUp Trójmiasto - Sage 9 w praktyceWordUp Trójmiasto - Sage 9 w praktyce
WordUp Trójmiasto - Sage 9 w praktyce
 
Kubernetes i Docker Swarm - Tomasz Woszczynski
Kubernetes i Docker Swarm - Tomasz WoszczynskiKubernetes i Docker Swarm - Tomasz Woszczynski
Kubernetes i Docker Swarm - Tomasz Woszczynski
 
Joomla Day Poland 15 - Docker
Joomla Day Poland 15 - DockerJoomla Day Poland 15 - Docker
Joomla Day Poland 15 - Docker
 
Devbox - wirtualne środowisko pracy
Devbox - wirtualne środowisko pracyDevbox - wirtualne środowisko pracy
Devbox - wirtualne środowisko pracy
 
CruiseControl.rb
CruiseControl.rbCruiseControl.rb
CruiseControl.rb
 
PLNOG 21: Marcin Motylski - Bezpieczeństwo_i_Firewalle_w_Multi_Cloud / Data _...
PLNOG 21: Marcin Motylski - Bezpieczeństwo_i_Firewalle_w_Multi_Cloud / Data _...PLNOG 21: Marcin Motylski - Bezpieczeństwo_i_Firewalle_w_Multi_Cloud / Data _...
PLNOG 21: Marcin Motylski - Bezpieczeństwo_i_Firewalle_w_Multi_Cloud / Data _...
 
Xdebug – debugowanie i profilowanie aplikacji PHP
Xdebug – debugowanie i profilowanie aplikacji PHPXdebug – debugowanie i profilowanie aplikacji PHP
Xdebug – debugowanie i profilowanie aplikacji PHP
 
infraxstructure: Robert Mroczkowski "Maszyny się uczą - admińskie rozmówki p...
infraxstructure: Robert Mroczkowski  "Maszyny się uczą - admińskie rozmówki p...infraxstructure: Robert Mroczkowski  "Maszyny się uczą - admińskie rozmówki p...
infraxstructure: Robert Mroczkowski "Maszyny się uczą - admińskie rozmówki p...
 
Programowanie sterowników w Linuksie.
Programowanie sterowników w Linuksie.Programowanie sterowników w Linuksie.
Programowanie sterowników w Linuksie.
 
Środowisko PWA
Środowisko PWAŚrodowisko PWA
Środowisko PWA
 
OpenEmbedded
OpenEmbeddedOpenEmbedded
OpenEmbedded
 
Wprowadzenie do Kubernetesa. K8S jako nowy Linux.
Wprowadzenie do Kubernetesa. K8S jako nowy Linux.Wprowadzenie do Kubernetesa. K8S jako nowy Linux.
Wprowadzenie do Kubernetesa. K8S jako nowy Linux.
 

Plus de HighSolutions Sp. z o.o.

Plus de HighSolutions Sp. z o.o. (19)

Laravel Poland Meetup #22 - "Kilka slajdów o castowaniu atrybutów w Eloquent"
Laravel Poland Meetup #22 - "Kilka slajdów o castowaniu atrybutów w Eloquent"Laravel Poland Meetup #22 - "Kilka slajdów o castowaniu atrybutów w Eloquent"
Laravel Poland Meetup #22 - "Kilka slajdów o castowaniu atrybutów w Eloquent"
 
Laravel Poznań Meetup #16 - "Action-based Laravel"
Laravel Poznań Meetup #16 - "Action-based Laravel" Laravel Poznań Meetup #16 - "Action-based Laravel"
Laravel Poznań Meetup #16 - "Action-based Laravel"
 
Laravel Poznań Meetup #12 - "Speed up web API with Laravel and Swoole using ...
 Laravel Poznań Meetup #12 - "Speed up web API with Laravel and Swoole using ... Laravel Poznań Meetup #12 - "Speed up web API with Laravel and Swoole using ...
Laravel Poznań Meetup #12 - "Speed up web API with Laravel and Swoole using ...
 
Laravel Poznań Meetup #12 - "Laravel 6.0 - co nowego?"
Laravel Poznań Meetup #12 - "Laravel 6.0 - co nowego?"Laravel Poznań Meetup #12 - "Laravel 6.0 - co nowego?"
Laravel Poznań Meetup #12 - "Laravel 6.0 - co nowego?"
 
Dni Kariery - "Turkusowe organizacje. Nowoczesny styl zarządzania"
Dni Kariery - "Turkusowe organizacje. Nowoczesny styl zarządzania"Dni Kariery - "Turkusowe organizacje. Nowoczesny styl zarządzania"
Dni Kariery - "Turkusowe organizacje. Nowoczesny styl zarządzania"
 
Laravel Poznań Meetup #8 - "Laravel czy lumen, oto jest pytanie"
Laravel Poznań Meetup #8 - "Laravel czy lumen, oto jest pytanie"Laravel Poznań Meetup #8 - "Laravel czy lumen, oto jest pytanie"
Laravel Poznań Meetup #8 - "Laravel czy lumen, oto jest pytanie"
 
Laravel Poznań Meetup #8 - "Laravel Telescope - niezastąpione narzędzie do de...
Laravel Poznań Meetup #8 - "Laravel Telescope - niezastąpione narzędzie do de...Laravel Poznań Meetup #8 - "Laravel Telescope - niezastąpione narzędzie do de...
Laravel Poznań Meetup #8 - "Laravel Telescope - niezastąpione narzędzie do de...
 
Laravel Poznań Meetup #7 - "Praktyczne użycie Repository Pattern w Laravel cz...
Laravel Poznań Meetup #7 - "Praktyczne użycie Repository Pattern w Laravel cz...Laravel Poznań Meetup #7 - "Praktyczne użycie Repository Pattern w Laravel cz...
Laravel Poznań Meetup #7 - "Praktyczne użycie Repository Pattern w Laravel cz...
 
Laravel Poznań Meetup #7 - "PWA - Progressive Web App"
Laravel Poznań Meetup #7 - "PWA - Progressive Web App"Laravel Poznań Meetup #7 - "PWA - Progressive Web App"
Laravel Poznań Meetup #7 - "PWA - Progressive Web App"
 
Laravel Poznań Meetup #7 - "Laravel nova - czy to się w ogóle opłaca"
Laravel Poznań Meetup #7 - "Laravel nova - czy to się w ogóle opłaca"Laravel Poznań Meetup #7 - "Laravel nova - czy to się w ogóle opłaca"
Laravel Poznań Meetup #7 - "Laravel nova - czy to się w ogóle opłaca"
 
Laravel Poznań Meetup #6 - "Nowości w Laravel 5.7"
Laravel Poznań Meetup #6 - "Nowości w Laravel 5.7"Laravel Poznań Meetup #6 - "Nowości w Laravel 5.7"
Laravel Poznań Meetup #6 - "Nowości w Laravel 5.7"
 
Laravel Poznań Meetup #4 - EloquentSequence - Historia pewnej biblioteki Open...
Laravel Poznań Meetup #4 - EloquentSequence - Historia pewnej biblioteki Open...Laravel Poznań Meetup #4 - EloquentSequence - Historia pewnej biblioteki Open...
Laravel Poznań Meetup #4 - EloquentSequence - Historia pewnej biblioteki Open...
 
How business and IT should cooperate with each other to verify business model...
How business and IT should cooperate with each other to verify business model...How business and IT should cooperate with each other to verify business model...
How business and IT should cooperate with each other to verify business model...
 
Jak Biznes i IT powinny współpracować ze sobą by zweryfikować model biznesowy...
Jak Biznes i IT powinny współpracować ze sobą by zweryfikować model biznesowy...Jak Biznes i IT powinny współpracować ze sobą by zweryfikować model biznesowy...
Jak Biznes i IT powinny współpracować ze sobą by zweryfikować model biznesowy...
 
Laravel Poznań Meetup #2 - Creating chatbots with BotMan
Laravel Poznań Meetup #2 - Creating chatbots with BotManLaravel Poznań Meetup #2 - Creating chatbots with BotMan
Laravel Poznań Meetup #2 - Creating chatbots with BotMan
 
Laravel Poznań Meetup #2 - Koniec CSS? Jest Tailwind!
Laravel Poznań Meetup #2 - Koniec CSS? Jest Tailwind!Laravel Poznań Meetup #2 - Koniec CSS? Jest Tailwind!
Laravel Poznań Meetup #2 - Koniec CSS? Jest Tailwind!
 
Laravel Poznań Meetup #2 - Wykorzystanie FormRequest w Laravelu
Laravel Poznań Meetup #2 - Wykorzystanie FormRequest w LaraveluLaravel Poznań Meetup #2 - Wykorzystanie FormRequest w Laravelu
Laravel Poznań Meetup #2 - Wykorzystanie FormRequest w Laravelu
 
Laravel Poznań Meetup #2 - Tworzenie chatbotów z BotMan
Laravel Poznań Meetup #2 - Tworzenie chatbotów z BotManLaravel Poznań Meetup #2 - Tworzenie chatbotów z BotMan
Laravel Poznań Meetup #2 - Tworzenie chatbotów z BotMan
 
Jak błędów unikać prowadząc własną firmę i jak ją rozwijać
Jak błędów unikać prowadząc własną firmę i jak ją rozwijaćJak błędów unikać prowadząc własną firmę i jak ją rozwijać
Jak błędów unikać prowadząc własną firmę i jak ją rozwijać
 

Laravel Poznań Meetup #3 - Uruchomienie i praca z Laravel w wirtualnym kontenerze Docker'a

  • 1. Uruchomienie i praca z Laravel w wirtualnym kontenerze Docker'a
  • 2. Marek Tenus Full-stack Senior Developer marek@highsolutions.pl
  • 3. #1 - Czym jest Docker? ● Wewnętrzny projekt firmy dotCloud rozwijany przez Solomona Hykesa ● W 2013 udostępniony publicznie https://github.com/docker ● Platforma pozwalająca na uruchomienie środowiska pracy w zwirtualizowanym środowisku kontenerów
  • 4. #1 - Czym jest Docker? Kontener posiada: - system plików (rootfs) - procesy - pamięć - urządzenia - porty sieciowe
  • 5. #2 -Instalacja Docker’a Dostępne edycje: Community Edition - CE Enterprise Edition - EE
  • 6. #2 -Instalacja Docker’a Wspierane platformy dla CE (tylko x86_64): ● macOS ● Microsoft Windows 10 ● AWS ● Azure ● Centos ● Debian ● Ubuntu ● Fedora
  • 8. #3 -Laradock Środowisko do rozwoju aplikacji w języku PHP na platformie Docker http://laradock.io
  • 9. #3 -Laradock Laradock pierwotnie był stworzony po to, aby pracować w Dockerze z Laravel. Z czasem i rozwojem platformy pojawił się support dla Symphony, CodeIgniter, Wordpress, Drupal etc.
  • 10. #3 -Laradock Dostępne narzędzia: Bazy: MySql, PostgreSql, MongoDB, MariaDB... Cache: Redis, Memcached, Aerospike Serwery: Apache, Nginx, HHVM “Kompilatory”: PHP FPM, HHVM Proxy: HAPProxy Kolejkowanie: RabbitMQ, PHP Worker, Beanstalkd Inne: PhpMyadmin, Varnish, Jenkins, Laravel Echo, Elasticsearch...
  • 11. #3 -Laradock Workspace Obraz (Image) środowiska developerskiego, które zawiera ustawienia i narzędzia do pracy z poziomu konsoli: PHP CLI, Composer, Git, Linuxbrew, Node, V8JS, Gulp, SQLite, xDebug, Envoy, Deployer, Vim, Yarn...
  • 12. #4 -Instalacja Laradock meetup | |- laradock | |- meetup3 | |- …..
  • 13. #4 -Instalacja Laradock $ cd ~/ $ mkdir meetup $ git clone https://github.com/Laradock/laradock.git $ cd laradock $ cp env-example .env $ vim .env
  • 14. #4 -Instalacja Laradock .env Plik konfiguracyjny zawierający parametry pracy Dockera oraz dostępnych narzędzi
  • 15. #4 -Instalacja Laradock docker-compose.yml Plik zawierający ustawienia, na podstawie których budowane będą kontenery i działały poszczególne serwisy
  • 17. #4 -Instalacja Laradock Uruchomienie kontenerów: $ docker-compose up -d nginx mysql redis $ docker-compose up -d workspace phpmyadmin
  • 18. #4 -Instalacja Laradock $ docker-compose ps Name Command State Ports ------------------------------------------------------------------------------------------------------------------------- laradock_mysql_1 docker-entrypoint.sh mysqld Up 0.0.0.0:3306->3306/tcp laradock_nginx_1 nginx Up 0.0.0.0:443- >443/tcp, 0.0.0.0:80->80/tcp laradock_php-fpm_1 docker-php-entrypoint php-fpm Up 9000/tcp laradock_phpmyadmin_1 /run.sh phpmyadmin Up 0.0.0.0:8080->80/tcp, 9000/tcp laradock_redis_1 docker-entrypoint.sh redis ... Up 0.0.0.0:6379->6379/tcp laradock_workspace_1 /sbin/my_init Up 0.0.0.0:2222->22/tcp
  • 19. #4 -Instalacja Laradock $ docker-compose ps Name Ports ----------------------------------------------------------------------------------------------- laradock_mysql_1 0.0.0.0:3306->3306/tcp laradock_nginx_1 0.0.0.0:443->443/tcp, 0.0.0.0:80- >80/tcp laradock_phpmyadmin_1 0.0.0.0:8080->80/tcp, 9000/tcp laradock_redis_1 0.0.0.0:6379->6379/tcp
  • 20. #4 -Instalacja Laradock http://localhost => port 80, nginx http://localhost:8080 => phpmyadmin
  • 21. #5 -Instalacja Laravel z Docker’a $ docker-compose exec --user=laradock workspace bash laradock@bd7fc09891b0:/var/www$ $ composer create-project laravel/laravel meetup3 $ cp .env.example .env $ vim .env
  • 22. #5 -Instalacja Laravel z Docker’a $ vim .env DB_HOST = mysql REDIS_HOST = redis
  • 23. #5 -Instalacja Laravel z Docker’a $ composer require predis/predis $ php artisan migrate $ npm install
  • 24. #6 - Własna domena Pobranie IP Docker’a $ docker network inspect bridge | grep "Gateway" | awk '{ print $2 }'; “172.17.0.1”
  • 25. #6 - Własna domena Ustawienie host’a $ vim /etc/hosts 172.17.0.1 meetup3.test
  • 26. #6 - Własna domena Ustawienie nginx $ cd ~/meetup/laradock/nginx/sites $ cp laravel.conf.example meetup3.conf $ vim meetup3.conf
  • 27. #6 - Własna domena Ustawienie nginx server_name meetup3.test; root /var/www/meetup3/public;
  • 28. #6 - Własna domena Ustawienie nginx $ docker-compose restart nginx
  • 29. #6 - Własna domena http://meetup3.test
  • 30. #7 - Dostęp do bazy danych $ docker-compose exec mysql bash root@1d36fe803b85:/# $ mysql -u root -p secret
  • 31. #8 - Cron Edycja Cron’a $ cd ~/meetup/laradock $ vim workspace/crontab/laradock * * * * * laradock php /var/www/meetup3/artisan schedule:run >> /dev/null 2>&1
  • 32. #8 - Cron Aktualizacja zmian $ docker-compose down $ docker compose build workspace $ docker-compose up -d workspace mysql redis nginx phpmyadmin
  • 33. #9 - Aliasy $ cd ~/meetup/laradock $ vim workspace/aliases.sh
  • 34. #9 - Aliasy ... alias art="php artisan" alias artisan="php artisan" alias migrate="php artisan migrate" alias refresh="php artisan migrate:refresh" alias rollback="php artisan migrate:rollback" alias seed="php artisan:seed" alias serve="php artisan serve --quiet &" …
  • 35. #9 - Aliasy Dodanie własnych aliasów alias controller='php artisan make:controller' alias model='php artisan make:model'
  • 36. #9 - Aliasy Aktualizacja zmian $ docker-compose down $ docker compose build workspace $ docker-compose up -d workspace mysql redis nginx phpmyadmin
  • 37. #9 - Aliasy $ docker-compose exec --user=laradock workspace bash laradock@bd7fc09891b0:/var/www$ $ cd meetup3 $ controller WelcomeController Controller created successfully.
  • 38. #10 - Dlaczego warto? Docker Vagrant konteneryzacja np. każda wersja PHP zamknięta jest w osobnym kontenerze, kontenery uruchamiane jako procesy (system Linux) maszyna wirtualna zawsze wymaga maszyny wirtualnej, większy narzut zasobów wykorzystanie w środowisku deweloperskim i produkcyjnym wykorzystanie w środowisku deweloperskim aplikacje monolityczne i mikroserwisy aplikacje monolityczne

Notes de l'éditeur

  1. Docker to platforma służąca tworzeniu, dostarczaniu oraz uruchamianiu aplikacji w zwirtualizowanym środowisku kontenerów
  2. Compose is a tool for defining and running multi-container Docker applications
  3. Compose is a tool for defining and running multi-container Docker applications