Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Docker for localhost development (on Serbian)

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.

Docker for localhost development (on Serbian)

Kad je u pitanju razvoj softvera vec duže vreme se koristi izgovor “Radi na mom računaru”. Ovim predavanjem ćemo uz pomoć Docker-a pokušati da iskorenimo taj stari običaj koji je nastao u vreme LAMP/XAMP/WAMP okruženja, a održao se i u vremenu virtualnih mašina i Vagrant-a. Saznaćemo šta su to Docker container-i, kako se kreiraju iz image-a. Videti kako je lako podići lokalno dev okruženje, jednostavno menjati ga, kao i testirati našu aplikaciju u različitim uslovima..

Avatar for Milan Urukalo

Milan Urukalo

June 29, 2017
Tweet

More Decks by Milan Urukalo

Other Decks in Programming

Transcript

  1. Pozdrav!! Ja sam Milan Urukalo. PHP-om se bavim vise od

    10 godina i trenutno radim kako Senior PHP Developer u Chord Agency na projektima koji uglavnom koriste Laravel Pored toga: • Redovno posecujem meetup-e • Vozim bajs • I obozavam palacinke (sa visnjom)
  2. O cemu cemo pricati veceras? • LAMP okruzenje • XAMPP/WAMP

    itd.. • Vagrant i virtualizacija • Docker i kontejneri • Dockerfile i image • Docker-compose • LaraDock
  3. Sad je staro opravdanje dobilo novi izgled: “Na mom `vagrant-u`

    je radilo! ” Tu je i jos par nedostataka: • Glomazno • Mnogo memorije • Tesko za podesavanje • Sporo se podize
  4. Sta je potrebno za pokretanje Docker kontejnera? • Docker daemon

    • Dovoljno je: “$ docker run … “ npr: $ docker run -d -p 80:80 --name my-apache-php-app -v "$PWD":/var/www/html php:7.0-apache Ali za lakse koriscenje tu je: • Dockerfile • Docker-compose
  5. Sta je Dockerfile Dockerfile je dokument koji sadrzi sve komande

    koje su potrebne da se prosiri image Sa docker build komandom pokrece se automatsko izvrsavanje svih komandi iz fajla i kreiranje novog image-a, bas onakvog kakav nama treba FROM php:7.1.4-fpm RUN apt-get update \ && apt-get install -y zlib1g-dev \ && apt-get install -y zip \ && apt-get install -y libpng-dev \ && apt-get install -y libmcrypt-dev \ && apt-get install -y libssl-dev \ && apt-get install -y git \ && docker-php-ext-install zip \ && docker-php-ext-install pdo_mysql \ && docker-php-ext-install json \ && docker-php-ext-install gd \ && echo "" >> ~/.bashrc \ && echo 'export PATH="/var/www/vendor/bin:$PATH"' >> ~/.bashrc \ && pecl install xdebug-2.5.0 \ && docker-php-ext-enable xdebug
  6. Mesto gde mozete pronaci image koji vam je potreban Ali

    ovo je mesto gde mozete commit-ovati vase image Docker hub/store
  7. Docker-compose Preporuka je da svaki kontejner sadrzi samo jedan server,

    zato aplikacije koje koriste vise razlicitih servera se oslanjaju na vise kontejnera Upravljanje sa svim tim kontejnerima olaksava docker-compose
  8. Primer docker-compose fajla gde imamo mysql, php i nginx kontejnere

    konfigurisane i medjusobno povezane db: image: mysql ports: - "3306:3306" volumes: - ./database/data:/var/lib/mysql:cached environment: - MYSQL_ALLOW_EMPTY_PASSWORD=yes - MYSQL_DATABASE=homestead - MYSQL_USER=homestead - MYSQL_PASSWORD=secret nginx: image: nginx volumes: - ./nginx.conf:/etc/nginx/conf.d/default.conf - .:/var/www/html:cached ports: - "80:80" links: - php command: /bin/bash -c "envsubst < /etc/nginx/conf.d/default.conf && nginx -g 'daemon off;'" php: build: ./ ports: - "9000:9000" volumes: - .:/var/www/html:cached - ./custom.ini:/usr/local/etc/php/conf.d/custom.ini links: - db
  9. Koriscenje docker-compose setup-a $ docker-compose up Creating basicdockersetup_mysql_1 ... done

    Creating basicdockersetup_php_1 ... done Creating basicdockersetup_nginx_1 ... done
  10. Zamena mysql sa mariadb :) U docker-compose izmenimo image: $

    docker-compose up Creating basicdockersetup_mariadb_1 ... done Recreating basicdockersetup_php_1 ... done Recreating basicdockersetup_nginx_1 ... done db: image: mariadb
  11. LaraDock by mahmoud zALT A full PHP development environment for

    Docker. Includes pre-packaged Docker Images, all pre-configured to provide a wonderful PHP development environment.
  12. Features • Easy switch between PHP versions: 7.1, 7.0, 5.6…

    • Choose your favorite database engine: MySQL, Postgres, MariaDB… • Run your own combination of software: Memcached, HHVM, Beanstalkd… • Every software runs on a separate container: PHP-FPM, NGINX, PHP-CLI… • Easy to customize any container, with simple edit to the Dockerfile. • All Images extends from an official base Image. (Trusted base Images). • Pre-configured NGINX to host any code at your root directory. • Can use Laradock per project, or single Laradock for all projects. • Easy to install/remove software’s in Containers using environment variables. • Clean and well structured Dockerfiles (Dockerfile). • Latest version of the Docker Compose file (docker-compose). • Everything is visible and editable. • Fast Images Builds.
  13. • Database Engines: MySQL - MariaDB - Percona - MongoDB

    - Neo4j - RethinkDB - MSSQL - PostgreSQL - Postgres-PostGIS. • Database Management: PhpMyAdmin - Adminer - PgAdmin • Cache Engines: Redis - Memcached - Aerospike • PHP Servers: NGINX - Apache2 - Caddy • PHP Compilers: PHP FPM - HHVM • Message Queueing: Beanstalkd - RabbitMQ - PHP Worker • Queueing Management: Beanstalkd Console - RabbitMQ Console • Random Tools: HAProxy - Certbot - Blackfire - Selenium - Jenkins - ElasticSearch - Kibana - Mailhog - Minio - Varnish - Swoole - Laravel Echo… Workspace Image Tools PHP CLI - Composer - Git - Linuxbrew - Node - V8JS - Gulp - SQLite - xDebug - Envoy - Deployer - Vim - Yarn - SOAP - Drush…
  14. Kako se koristi laradock? $ docker-compose up -d nginx mysql

    Posto se svaki image build-uje od oficial image-a potrebno je malo sacekati prvi put I to je sve! Genijalno, zar ne Pored toga na http://laradock.io/ mozete pronaci odlicnu dokumentaciju
  15. Kako da krenem sa Docker-om? 1. Download Docker deamon-a i

    citanje Docker doc-a 2. Probaj konfiguraciju sa ovih slajdova ( https://github.com/urukalo/basic-docker-setup.git ) 3. Probaj laradock 4. Pogledak kako je Vranac resio par problema iz svakodnevne upotrebe: https://github.com/code4hire/docker-dev-setup 5. Zaboravi na Vagrant/Homestand :p Ali pre svega.. Popij pivo i popricajmo :D