SlideShare uma empresa Scribd logo
1 de 12
Docker
Wykorzystanie technologii docker w codziennej pracy na stanowisku developera
Prepared by:
Marek Milewski
Aurora Creation / Senior Magento Developer
m.milewski@auroracreation.com
Docker
Docker jest lekkim środowiskiem wirtualizacyjnym, zawiera narzędzia, które
umożliwiają podział naszego środowiska na niezależne komponenty
(kontenery), oraz:
● Zarządzanie kontenerami, i obrazami kontenerów
● Pobieranie gotowych obrazów
● Budowanie własnych obrazów oraz ich publikowanie
Docker Hub
Zawiera ponad 100,000 gotowych do użycia obrazów kontenerów, z których
możemy skorzystać, lub dostosować je do własnych potrzeb.
● Serwery: nginx, apache, node ...
● Języki programowania: PHP, Java, Ruby ...
● Systemy operacyjne: alpine, ubuntu, centOS, debian ...
● Bazy danych: mysql, postgres, mongo ...
● Silniki wyszukiwania: Sphinx, Elastic Search ...
● Systemy cache: Redis, Varnish ...
● Frameworki i aplikacje: Symfony, Zend, Laravel, Magento, Wordpress, Gitlab, Selenium ...
Obrazy kontenerów Dockera
● Zazwyczaj bazują na jakiejś lekkiej dystrybucji linuxa
● Zazwyczaj mamy możliwość pobrania dowolnej wersji, która jest nam potrzebna
docker pull [nazwa obrazu], [nazwa obrazu]:[tag]
docker pull ubuntu
docker pull ubuntu:16.04
docker images
docker rmi [nazwa lub id obrazu]
docker rmi ubuntu
DockerFile - własny obraz
Możemy budować własne obrazy, lub rozbudowywać już istniejące.
FROM php:7.2.13-fpm
RUN DEBIAN_FRONTEND=noninteractive apt-get -y --force-yes install nano mc
curl
RUN pecl install xdebug-2.6.1
RUN docker-php-ext-enable xdebug
RUN echo "zend_extension = /usr/local/lib/php/extensions/no-debug-non-zts-
20170718/xdebug.so" >> /usr/local/etc/php/conf.d/xdebug.ini
RUN curl -sS https://getcomposer.org/installer | php && mv composer.phar
/usr/local/bin/composer
DockerFile - komendy
● FROM - nazwa obrazu na podstawie którego tworzymy nasz własny obraz
● RUN - uruchomienie komendy w obrazie
● EXPOSE - wystawienie portu kontenera na zewnątrz
● ENV - definiowanie zmiennej środowiskowej
● ADD - skopiowanie plików z naszego hosta do obrazu
● WORKDIR - katalog roboczy do którego nastąpi przejście po uruchomieniu kontenera
● ENTRYPOINT - operacje jakie mają zajść w kontenerze po jego uruchomieniu
docker build mmilewski/php-xdebug:7.2.13 -f PHP-DockerFile .
docker push mmilewski/php-xdebug:7.2.13
Kontenery - przykładowe polecenia
docker run -v [host]:[kontener] -p [host]:[kontener] [nazwa_obrazu]
docker exec -it --user www-data php bash
Docker stop [id_kontenera], docker rm [id_kontenera]
docker ps
Środowisko developerskie
APACHE 2.4 / NGINX
PHP 7.2
MYSQL 8.0
PHP 5.6
MYSQL 5.7
PHP 7.0
MYSQL 5.7
REDIS
PHPCS
VARNISH
COMPOSER
SPHINX XDEBUG
Deploy aplikacji z użyciem Docker
● Testy PHPUnit phpunit/phpunit
● Testy funkcjonalne selenium/standalone-chrome
● Testy zgodności ze standardem PSR pipelinecomponents/php-codesniffer
● Testy wydajności kodu blackfire/blackfire
Testy aplikacji z użyciem Docker
unitTesting:
image: mmilewski/php_xdebug:7.2
stage: test
script:
- composer create-project --repository=https://repo.magento.com/
magento/project-community-edition:$MAGENTO_VERSION . --no-progress
- mkdir -p ./app/code/Aurora/$MODULE_NAME
- mv /var/www/module/* ./app/code/Aurora/$MODULE_NAME
- ./vendor/phpunit/phpunit/phpunit ./app/code/Aurora/$MODULE_NAME/. --
whitelist ./app/code/Aurora/$MODULE_NAME --coverage-text
tags:
- phpunit-tests
Obsługa Docker w managerach repozytoriów
RUNNERS PIPELINES DRONE IO
Dziekuję za uwagę

Mais conteúdo relacionado

Mais procurados

Jak zostać mobile deweloperem w 1 dzień
Jak zostać mobile deweloperem w 1 dzieńJak zostać mobile deweloperem w 1 dzień
Jak zostać mobile deweloperem w 1 dzieńPaweł Kondraciuk
 
Webinar - Podstawy Node.js
Webinar - Podstawy Node.jsWebinar - Podstawy Node.js
Webinar - Podstawy Node.jsWojciech Kaniuka
 
Hostory
HostoryHostory
Hostorygnosek
 
[QE 2017] Adrian Gonciarz - Tester w Kontenerze, czyli jak Docker może pomóc ...
[QE 2017] Adrian Gonciarz - Tester w Kontenerze, czyli jak Docker może pomóc ...[QE 2017] Adrian Gonciarz - Tester w Kontenerze, czyli jak Docker może pomóc ...
[QE 2017] Adrian Gonciarz - Tester w Kontenerze, czyli jak Docker może pomóc ...Future Processing
 
Sekrety magicznego ogrodu Docker
Sekrety magicznego ogrodu DockerSekrety magicznego ogrodu Docker
Sekrety magicznego ogrodu DockerKamil Grabowski
 
Full Stack JavaScript case study na podstawie Maracuya Jukebox audio player
Full Stack JavaScript case study na podstawie Maracuya Jukebox audio playerFull Stack JavaScript case study na podstawie Maracuya Jukebox audio player
Full Stack JavaScript case study na podstawie Maracuya Jukebox audio playerMarek Będkowski
 
Hugo - make webdev fun again
Hugo - make webdev fun againHugo - make webdev fun again
Hugo - make webdev fun againMarcin Gajda
 
Metaprogramowanie w JS
Metaprogramowanie w JSMetaprogramowanie w JS
Metaprogramowanie w JSDawid Rusnak
 
Laravel Poznań Meetup #3 - Uruchomienie i praca z Laravel w wirtualnym konten...
Laravel Poznań Meetup #3 - Uruchomienie i praca z Laravel w wirtualnym konten...Laravel Poznań Meetup #3 - Uruchomienie i praca z Laravel w wirtualnym konten...
Laravel Poznań Meetup #3 - Uruchomienie i praca z Laravel w wirtualnym konten...HighSolutions Sp. z o.o.
 
Uruchomienie i praca z laravel w wirtualnym kontenerze docker'a
Uruchomienie i praca z laravel w wirtualnym kontenerze docker'aUruchomienie i praca z laravel w wirtualnym kontenerze docker'a
Uruchomienie i praca z laravel w wirtualnym kontenerze docker'aLaravel Poland MeetUp
 
Webpack - Czym jest webpack i dlaczego chcesz go używać? - wersja krótka
Webpack - Czym jest webpack i dlaczego chcesz go używać? - wersja krótkaWebpack - Czym jest webpack i dlaczego chcesz go używać? - wersja krótka
Webpack - Czym jest webpack i dlaczego chcesz go używać? - wersja krótkaMarcin Gajda
 
Zastosowanie buildout przy wdrażaniu projektów opartych o framework Django
Zastosowanie buildout przy wdrażaniu projektów opartych o framework DjangoZastosowanie buildout przy wdrażaniu projektów opartych o framework Django
Zastosowanie buildout przy wdrażaniu projektów opartych o framework DjangoDominik Szopa
 

Mais procurados (15)

Jak zostać mobile deweloperem w 1 dzień
Jak zostać mobile deweloperem w 1 dzieńJak zostać mobile deweloperem w 1 dzień
Jak zostać mobile deweloperem w 1 dzień
 
Webinar - Podstawy Node.js
Webinar - Podstawy Node.jsWebinar - Podstawy Node.js
Webinar - Podstawy Node.js
 
Hostory
HostoryHostory
Hostory
 
[QE 2017] Adrian Gonciarz - Tester w Kontenerze, czyli jak Docker może pomóc ...
[QE 2017] Adrian Gonciarz - Tester w Kontenerze, czyli jak Docker może pomóc ...[QE 2017] Adrian Gonciarz - Tester w Kontenerze, czyli jak Docker może pomóc ...
[QE 2017] Adrian Gonciarz - Tester w Kontenerze, czyli jak Docker może pomóc ...
 
Sekrety magicznego ogrodu Docker
Sekrety magicznego ogrodu DockerSekrety magicznego ogrodu Docker
Sekrety magicznego ogrodu Docker
 
Full Stack JavaScript case study na podstawie Maracuya Jukebox audio player
Full Stack JavaScript case study na podstawie Maracuya Jukebox audio playerFull Stack JavaScript case study na podstawie Maracuya Jukebox audio player
Full Stack JavaScript case study na podstawie Maracuya Jukebox audio player
 
Hugo - make webdev fun again
Hugo - make webdev fun againHugo - make webdev fun again
Hugo - make webdev fun again
 
Metaprogramowanie w JS
Metaprogramowanie w JSMetaprogramowanie w JS
Metaprogramowanie w JS
 
Laravel Poznań Meetup #3 - Uruchomienie i praca z Laravel w wirtualnym konten...
Laravel Poznań Meetup #3 - Uruchomienie i praca z Laravel w wirtualnym konten...Laravel Poznań Meetup #3 - Uruchomienie i praca z Laravel w wirtualnym konten...
Laravel Poznań Meetup #3 - Uruchomienie i praca z Laravel w wirtualnym konten...
 
Uruchomienie i praca z laravel w wirtualnym kontenerze docker'a
Uruchomienie i praca z laravel w wirtualnym kontenerze docker'aUruchomienie i praca z laravel w wirtualnym kontenerze docker'a
Uruchomienie i praca z laravel w wirtualnym kontenerze docker'a
 
CruiseControl.rb
CruiseControl.rbCruiseControl.rb
CruiseControl.rb
 
Swoole w PHP. Czy to ma sens?
Swoole w PHP. Czy to ma sens?Swoole w PHP. Czy to ma sens?
Swoole w PHP. Czy to ma sens?
 
Ansible w 5 minut... Playbooki
Ansible w 5 minut...  PlaybookiAnsible w 5 minut...  Playbooki
Ansible w 5 minut... Playbooki
 
Webpack - Czym jest webpack i dlaczego chcesz go używać? - wersja krótka
Webpack - Czym jest webpack i dlaczego chcesz go używać? - wersja krótkaWebpack - Czym jest webpack i dlaczego chcesz go używać? - wersja krótka
Webpack - Czym jest webpack i dlaczego chcesz go używać? - wersja krótka
 
Zastosowanie buildout przy wdrażaniu projektów opartych o framework Django
Zastosowanie buildout przy wdrażaniu projektów opartych o framework DjangoZastosowanie buildout przy wdrażaniu projektów opartych o framework Django
Zastosowanie buildout przy wdrażaniu projektów opartych o framework Django
 

Semelhante a 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 ComposeMariusz Bąk
 
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...The Software House
 
Xdebug – debugowanie i profilowanie aplikacji PHP
Xdebug – debugowanie i profilowanie aplikacji PHPXdebug – debugowanie i profilowanie aplikacji PHP
Xdebug – debugowanie i profilowanie aplikacji PHP3camp
 
Jak zbudować aplikacje z wykorzystaniem funkcjonalności windows server 2016...
Jak zbudować aplikacje z wykorzystaniem funkcjonalności windows server 2016...Jak zbudować aplikacje z wykorzystaniem funkcjonalności windows server 2016...
Jak zbudować aplikacje z wykorzystaniem funkcjonalności windows server 2016...Lukasz Kaluzny
 
Kubernetes i Docker Swarm - Tomasz Woszczynski
Kubernetes i Docker Swarm - Tomasz WoszczynskiKubernetes i Docker Swarm - Tomasz Woszczynski
Kubernetes i Docker Swarm - Tomasz Woszczynskiduchowe50k
 
Testowanie rozwiązań serverless z LocalStack
Testowanie rozwiązań serverless z LocalStackTestowanie rozwiązań serverless z LocalStack
Testowanie rozwiązań serverless z LocalStackThe Software House
 
Kivy na Androidzie
Kivy na AndroidzieKivy na Androidzie
Kivy na AndroidzieDaftcode
 
Delphi 2005. 303 gotowe rozwiązania
Delphi 2005. 303 gotowe rozwiązaniaDelphi 2005. 303 gotowe rozwiązania
Delphi 2005. 303 gotowe rozwiązaniaWydawnictwo Helion
 
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...Kainos Polska
 
Joomla Day Poland 15 - Docker
Joomla Day Poland 15 - DockerJoomla Day Poland 15 - Docker
Joomla Day Poland 15 - DockerLukas Lesniewski
 
Vagrant - RuPy Tuesday
Vagrant - RuPy TuesdayVagrant - RuPy Tuesday
Vagrant - RuPy TuesdayGaldoMedia
 
Skazani na firmware. Serwer na ARM64? Tak, to możliwe! S07E03
Skazani na firmware. Serwer na ARM64? Tak, to możliwe! S07E03Skazani na firmware. Serwer na ARM64? Tak, to możliwe! S07E03
Skazani na firmware. Serwer na ARM64? Tak, to możliwe! S07E03Semihalf
 
Ganymede - nowoczesne technologie w grach przeglądarkowych i mobilnych
Ganymede - nowoczesne technologie w grach przeglądarkowych i mobilnychGanymede - nowoczesne technologie w grach przeglądarkowych i mobilnych
Ganymede - nowoczesne technologie w grach przeglądarkowych i mobilnychSKN Shader
 
Code driven development w Drupalu 7 | DrupalCamp Wrocław 2014
Code driven development w Drupalu 7 | DrupalCamp Wrocław 2014Code driven development w Drupalu 7 | DrupalCamp Wrocław 2014
Code driven development w Drupalu 7 | DrupalCamp Wrocław 2014Grzegorz Bartman
 
Ruby, Ruby on Rails 2010
Ruby, Ruby on Rails 2010Ruby, Ruby on Rails 2010
Ruby, Ruby on Rails 2010Natalia Stanko
 
Drupal jako modularny i rozszerzalny CMS [PL]
Drupal jako modularny i rozszerzalny CMS [PL]Drupal jako modularny i rozszerzalny CMS [PL]
Drupal jako modularny i rozszerzalny CMS [PL]Droptica
 
PLNOG 13: Adam Heczko: Openstack, Ceph, SDN
PLNOG 13: Adam Heczko: Openstack, Ceph, SDNPLNOG 13: Adam Heczko: Openstack, Ceph, SDN
PLNOG 13: Adam Heczko: Openstack, Ceph, SDNPROIDEA
 
NGSec 2016 - Ile warstw, tyle szans. - Leszek Miś@Defensive-Security.com
NGSec 2016 - Ile warstw, tyle szans. - Leszek Miś@Defensive-Security.comNGSec 2016 - Ile warstw, tyle szans. - Leszek Miś@Defensive-Security.com
NGSec 2016 - Ile warstw, tyle szans. - Leszek Miś@Defensive-Security.comLeszek Mi?
 
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.Wojciech Barczyński
 

Semelhante a Docker (20)

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
 
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
 
Xdebug – debugowanie i profilowanie aplikacji PHP
Xdebug – debugowanie i profilowanie aplikacji PHPXdebug – debugowanie i profilowanie aplikacji PHP
Xdebug – debugowanie i profilowanie aplikacji PHP
 
Jak zbudować aplikacje z wykorzystaniem funkcjonalności windows server 2016...
Jak zbudować aplikacje z wykorzystaniem funkcjonalności windows server 2016...Jak zbudować aplikacje z wykorzystaniem funkcjonalności windows server 2016...
Jak zbudować aplikacje z wykorzystaniem funkcjonalności windows server 2016...
 
Kubernetes i Docker Swarm - Tomasz Woszczynski
Kubernetes i Docker Swarm - Tomasz WoszczynskiKubernetes i Docker Swarm - Tomasz Woszczynski
Kubernetes i Docker Swarm - Tomasz Woszczynski
 
Testowanie rozwiązań serverless z LocalStack
Testowanie rozwiązań serverless z LocalStackTestowanie rozwiązań serverless z LocalStack
Testowanie rozwiązań serverless z LocalStack
 
Kivy na Androidzie
Kivy na AndroidzieKivy na Androidzie
Kivy na Androidzie
 
Delphi 2005. 303 gotowe rozwiązania
Delphi 2005. 303 gotowe rozwiązaniaDelphi 2005. 303 gotowe rozwiązania
Delphi 2005. 303 gotowe rozwiązania
 
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...
 
Joomla Day Poland 15 - Docker
Joomla Day Poland 15 - DockerJoomla Day Poland 15 - Docker
Joomla Day Poland 15 - Docker
 
Vagrant - RuPy Tuesday
Vagrant - RuPy TuesdayVagrant - RuPy Tuesday
Vagrant - RuPy Tuesday
 
Skazani na firmware. Serwer na ARM64? Tak, to możliwe! S07E03
Skazani na firmware. Serwer na ARM64? Tak, to możliwe! S07E03Skazani na firmware. Serwer na ARM64? Tak, to możliwe! S07E03
Skazani na firmware. Serwer na ARM64? Tak, to możliwe! S07E03
 
Ganymede - nowoczesne technologie w grach przeglądarkowych i mobilnych
Ganymede - nowoczesne technologie w grach przeglądarkowych i mobilnychGanymede - nowoczesne technologie w grach przeglądarkowych i mobilnych
Ganymede - nowoczesne technologie w grach przeglądarkowych i mobilnych
 
Code driven development w Drupalu 7 | DrupalCamp Wrocław 2014
Code driven development w Drupalu 7 | DrupalCamp Wrocław 2014Code driven development w Drupalu 7 | DrupalCamp Wrocław 2014
Code driven development w Drupalu 7 | DrupalCamp Wrocław 2014
 
Ruby, Ruby on Rails 2010
Ruby, Ruby on Rails 2010Ruby, Ruby on Rails 2010
Ruby, Ruby on Rails 2010
 
Drupal jako modularny i rozszerzalny CMS [PL]
Drupal jako modularny i rozszerzalny CMS [PL]Drupal jako modularny i rozszerzalny CMS [PL]
Drupal jako modularny i rozszerzalny CMS [PL]
 
PLNOG 13: Adam Heczko: Openstack, Ceph, SDN
PLNOG 13: Adam Heczko: Openstack, Ceph, SDNPLNOG 13: Adam Heczko: Openstack, Ceph, SDN
PLNOG 13: Adam Heczko: Openstack, Ceph, SDN
 
NGSec 2016 - Ile warstw, tyle szans. - Leszek Miś@Defensive-Security.com
NGSec 2016 - Ile warstw, tyle szans. - Leszek Miś@Defensive-Security.comNGSec 2016 - Ile warstw, tyle szans. - Leszek Miś@Defensive-Security.com
NGSec 2016 - Ile warstw, tyle szans. - Leszek Miś@Defensive-Security.com
 
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.
 
Platforma Kontentowa
Platforma KontentowaPlatforma Kontentowa
Platforma Kontentowa
 

Mais de PHPstokPHPstok

Jak ograniczyć używanie tablic w PHP.pptx
Jak ograniczyć używanie tablic w PHP.pptxJak ograniczyć używanie tablic w PHP.pptx
Jak ograniczyć używanie tablic w PHP.pptxPHPstokPHPstok
 
Blaski i cienie pracy Project Managera.pptx
Blaski i cienie pracy Project Managera.pptxBlaski i cienie pracy Project Managera.pptx
Blaski i cienie pracy Project Managera.pptxPHPstokPHPstok
 
Zarządzanie złożonością
Zarządzanie złożonościąZarządzanie złożonością
Zarządzanie złożonościąPHPstokPHPstok
 
Najczęstsze błędy początkujących programistów PHP
Najczęstsze błędy początkujących programistów PHPNajczęstsze błędy początkujących programistów PHP
Najczęstsze błędy początkujących programistów PHPPHPstokPHPstok
 
Bezpieczeństwo aplikacji webowych
Bezpieczeństwo aplikacji webowychBezpieczeństwo aplikacji webowych
Bezpieczeństwo aplikacji webowychPHPstokPHPstok
 
Wzorce projektowe w praktyce
Wzorce projektowe w praktyceWzorce projektowe w praktyce
Wzorce projektowe w praktycePHPstokPHPstok
 
Sztuka samodoskonalenia programisty
Sztuka samodoskonalenia programistySztuka samodoskonalenia programisty
Sztuka samodoskonalenia programistyPHPstokPHPstok
 
Testy jednostkowe - PHPUnit
Testy jednostkowe - PHPUnitTesty jednostkowe - PHPUnit
Testy jednostkowe - PHPUnitPHPstokPHPstok
 
PSR czyli dobre praktyki programistyczne
PSR czyli dobre praktyki programistycznePSR czyli dobre praktyki programistyczne
PSR czyli dobre praktyki programistycznePHPstokPHPstok
 

Mais de PHPstokPHPstok (14)

Jak ograniczyć używanie tablic w PHP.pptx
Jak ograniczyć używanie tablic w PHP.pptxJak ograniczyć używanie tablic w PHP.pptx
Jak ograniczyć używanie tablic w PHP.pptx
 
Blaski i cienie pracy Project Managera.pptx
Blaski i cienie pracy Project Managera.pptxBlaski i cienie pracy Project Managera.pptx
Blaski i cienie pracy Project Managera.pptx
 
Refaktoryzacja
RefaktoryzacjaRefaktoryzacja
Refaktoryzacja
 
PHP 8.1
PHP 8.1PHP 8.1
PHP 8.1
 
Zarządzanie złożonością
Zarządzanie złożonościąZarządzanie złożonością
Zarządzanie złożonością
 
Clean Code
Clean CodeClean Code
Clean Code
 
Testy mutacyjne
Testy mutacyjneTesty mutacyjne
Testy mutacyjne
 
Najczęstsze błędy początkujących programistów PHP
Najczęstsze błędy początkujących programistów PHPNajczęstsze błędy początkujących programistów PHP
Najczęstsze błędy początkujących programistów PHP
 
Bezpieczeństwo aplikacji webowych
Bezpieczeństwo aplikacji webowychBezpieczeństwo aplikacji webowych
Bezpieczeństwo aplikacji webowych
 
Wzorce projektowe w praktyce
Wzorce projektowe w praktyceWzorce projektowe w praktyce
Wzorce projektowe w praktyce
 
Sztuka samodoskonalenia programisty
Sztuka samodoskonalenia programistySztuka samodoskonalenia programisty
Sztuka samodoskonalenia programisty
 
Testy jednostkowe - PHPUnit
Testy jednostkowe - PHPUnitTesty jednostkowe - PHPUnit
Testy jednostkowe - PHPUnit
 
SOLID
SOLIDSOLID
SOLID
 
PSR czyli dobre praktyki programistyczne
PSR czyli dobre praktyki programistycznePSR czyli dobre praktyki programistyczne
PSR czyli dobre praktyki programistyczne
 

Docker

  • 1. Docker Wykorzystanie technologii docker w codziennej pracy na stanowisku developera Prepared by: Marek Milewski Aurora Creation / Senior Magento Developer m.milewski@auroracreation.com
  • 2. Docker Docker jest lekkim środowiskiem wirtualizacyjnym, zawiera narzędzia, które umożliwiają podział naszego środowiska na niezależne komponenty (kontenery), oraz: ● Zarządzanie kontenerami, i obrazami kontenerów ● Pobieranie gotowych obrazów ● Budowanie własnych obrazów oraz ich publikowanie
  • 3. Docker Hub Zawiera ponad 100,000 gotowych do użycia obrazów kontenerów, z których możemy skorzystać, lub dostosować je do własnych potrzeb. ● Serwery: nginx, apache, node ... ● Języki programowania: PHP, Java, Ruby ... ● Systemy operacyjne: alpine, ubuntu, centOS, debian ... ● Bazy danych: mysql, postgres, mongo ... ● Silniki wyszukiwania: Sphinx, Elastic Search ... ● Systemy cache: Redis, Varnish ... ● Frameworki i aplikacje: Symfony, Zend, Laravel, Magento, Wordpress, Gitlab, Selenium ...
  • 4. Obrazy kontenerów Dockera ● Zazwyczaj bazują na jakiejś lekkiej dystrybucji linuxa ● Zazwyczaj mamy możliwość pobrania dowolnej wersji, która jest nam potrzebna docker pull [nazwa obrazu], [nazwa obrazu]:[tag] docker pull ubuntu docker pull ubuntu:16.04 docker images docker rmi [nazwa lub id obrazu] docker rmi ubuntu
  • 5. DockerFile - własny obraz Możemy budować własne obrazy, lub rozbudowywać już istniejące. FROM php:7.2.13-fpm RUN DEBIAN_FRONTEND=noninteractive apt-get -y --force-yes install nano mc curl RUN pecl install xdebug-2.6.1 RUN docker-php-ext-enable xdebug RUN echo "zend_extension = /usr/local/lib/php/extensions/no-debug-non-zts- 20170718/xdebug.so" >> /usr/local/etc/php/conf.d/xdebug.ini RUN curl -sS https://getcomposer.org/installer | php && mv composer.phar /usr/local/bin/composer
  • 6. DockerFile - komendy ● FROM - nazwa obrazu na podstawie którego tworzymy nasz własny obraz ● RUN - uruchomienie komendy w obrazie ● EXPOSE - wystawienie portu kontenera na zewnątrz ● ENV - definiowanie zmiennej środowiskowej ● ADD - skopiowanie plików z naszego hosta do obrazu ● WORKDIR - katalog roboczy do którego nastąpi przejście po uruchomieniu kontenera ● ENTRYPOINT - operacje jakie mają zajść w kontenerze po jego uruchomieniu docker build mmilewski/php-xdebug:7.2.13 -f PHP-DockerFile . docker push mmilewski/php-xdebug:7.2.13
  • 7. Kontenery - przykładowe polecenia docker run -v [host]:[kontener] -p [host]:[kontener] [nazwa_obrazu] docker exec -it --user www-data php bash Docker stop [id_kontenera], docker rm [id_kontenera] docker ps
  • 8. Środowisko developerskie APACHE 2.4 / NGINX PHP 7.2 MYSQL 8.0 PHP 5.6 MYSQL 5.7 PHP 7.0 MYSQL 5.7 REDIS PHPCS VARNISH COMPOSER SPHINX XDEBUG
  • 9. Deploy aplikacji z użyciem Docker ● Testy PHPUnit phpunit/phpunit ● Testy funkcjonalne selenium/standalone-chrome ● Testy zgodności ze standardem PSR pipelinecomponents/php-codesniffer ● Testy wydajności kodu blackfire/blackfire
  • 10. Testy aplikacji z użyciem Docker unitTesting: image: mmilewski/php_xdebug:7.2 stage: test script: - composer create-project --repository=https://repo.magento.com/ magento/project-community-edition:$MAGENTO_VERSION . --no-progress - mkdir -p ./app/code/Aurora/$MODULE_NAME - mv /var/www/module/* ./app/code/Aurora/$MODULE_NAME - ./vendor/phpunit/phpunit/phpunit ./app/code/Aurora/$MODULE_NAME/. -- whitelist ./app/code/Aurora/$MODULE_NAME --coverage-text tags: - phpunit-tests
  • 11. Obsługa Docker w managerach repozytoriów RUNNERS PIPELINES DRONE IO