{"id":570,"date":"2018-07-07T14:50:03","date_gmt":"2018-07-07T12:50:03","guid":{"rendered":"https:\/\/olkn.myvnc.com\/?p=570"},"modified":"2018-07-07T16:20:26","modified_gmt":"2018-07-07T14:20:26","slug":"docker-web-dev","status":"publish","type":"post","link":"https:\/\/olkn.myvnc.com\/?p=570","title":{"rendered":"docker web dev"},"content":{"rendered":"<p>To simplify the development I tried docker for building the runtime environment. Here are the major steps to get it running. <\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 eztoc-toggle-hide-by-default' ><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/olkn.myvnc.com\/?p=570\/#Prerequisites\" >Prerequisites<\/a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/olkn.myvnc.com\/?p=570\/#un-install_old_version\" >un-install old version<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/olkn.myvnc.com\/?p=570\/#add_reporitory\" >add reporitory<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/olkn.myvnc.com\/?p=570\/#Docker_Cheat_Sheet\" >Docker Cheat Sheet<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/olkn.myvnc.com\/?p=570\/#Development_Environment\" >Development Environment<\/a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/olkn.myvnc.com\/?p=570\/#create_folder_for_docker_environment\" >create folder for docker environment<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/olkn.myvnc.com\/?p=570\/#create_yaml_file_for_docker_compose\" >create yaml file for docker compose<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/olkn.myvnc.com\/?p=570\/#and_now_the_app_configuration\" >and now the app configuration<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/olkn.myvnc.com\/?p=570\/#the_web_configuration\" >the web configuration<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h1><span class=\"ez-toc-section\" id=\"Prerequisites\"><\/span>Prerequisites<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>The docker installation is straight forward as described on the docker home page:<\/p>\n<h2><span class=\"ez-toc-section\" id=\"un-install_old_version\"><\/span>un-install old version<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><code>aptitude remove docker docker-engine docker.io<\/code><\/p>\n<h2><span class=\"ez-toc-section\" id=\"add_reporitory\"><\/span>add reporitory<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><code>aptitude update<\/code><\/p>\n<p><code>aptitude install apt-transport-https ca-certificates curl gnupg2 software-properties-common<\/code><\/p>\n<p>add docker official key<\/p>\n<p><code>curl -fsSL https:\/\/download.docker.com\/linux\/debian\/gpg | sudo apt-key add -<\/code><\/p>\n<p>check fingerprint<\/p>\n<p><code>apt-key fingerprint 0EBFCD88<\/code><\/p>\n<p>add repository<\/p>\n<p><code>add-apt-repository \"deb [arch=amd64] https:\/\/download.docker.com\/linux\/debian $(lsb_release -cs) stable\"<\/code><\/p>\n<p><code>aptitude update<\/code><\/p>\n<p>install docker from repo<\/p>\n<p><code>aptitude  install docker-ce<\/code><\/p>\n<p>check if everything works<\/p>\n<p><code>docker run hello-world<\/code><\/p>\n<p>install docker compose<\/p>\n<p><code>curl -L https:\/\/github.com\/docker\/compose\/releases\/download\/1.21.2\/docker-compose-$(uname -s)-$(uname -m) -o \/usr\/local\/bin\/docker-compose<\/p>\n<p>chmod +x \/usr\/local\/bin\/docker-compose<\/code><\/p>\n<p>and check everything works<\/p>\n<p><code>docker-compose --version<\/code><\/p>\n<h1><span class=\"ez-toc-section\" id=\"Docker_Cheat_Sheet\"><\/span>Docker Cheat Sheet<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>## List Docker CLI commands<br \/>\ndocker<br \/>\ndocker container &#8211;help<\/p>\n<p>## Display Docker version and info<br \/>\ndocker &#8211;version<br \/>\ndocker version<br \/>\ndocker info<\/p>\n<p>## Execute Docker image<br \/>\ndocker run hello-world<\/p>\n<p>## List Docker images<br \/>\ndocker image ls<\/p>\n<p>## List Docker containers (running, all, all in quiet mode)<br \/>\ndocker container ls<br \/>\ndocker container ls &#8211;all<br \/>\ndocker container ls -aq<\/p>\n<h1><span class=\"ez-toc-section\" id=\"Development_Environment\"><\/span>Development Environment<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<h2><span class=\"ez-toc-section\" id=\"create_folder_for_docker_environment\"><\/span>create folder for docker environment<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><code>mkdir dockerproject<\/code><\/p>\n<h2><span class=\"ez-toc-section\" id=\"create_yaml_file_for_docker_compose\"><\/span>create yaml file for docker compose<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><code>vi docker-compose.yaml<\/code><\/p>\n<p>At least the following sections should be available:<\/p>\n<ul>\n<li>app<\/li>\n<p>main application configuration<\/p>\n<li>web<\/li>\n<p>Webserver configuration is required<\/p>\n<li>database<\/li>\n<p>database configuration is required\n<\/ul>\n<p>and here comes an exmaple<\/p>\n<p><code><br \/>\nversion: '3'<br \/>\nservices:<br \/>\n  app:<br \/>\n    build:<br \/>\n      context: .\/<br \/>\n      dockerfile: app.dockerfile<br \/>\n    working_dir: \/var\/www<br \/>\n    volumes:<br \/>\n      - .\/..\/laravel:\/var\/www<br \/>\n    environment:<br \/>\n      - \"DB_PORT=3306\"<br \/>\n      - \"DB_HOST=database\"<br \/>\n  web:<br \/>\n    build:<br \/>\n      context: .\/<br \/>\n      dockerfile: web.dockerfile<br \/>\n    working_dir: \/var\/www<br \/>\n    volumes:<br \/>\n      - .\/..\/laravel:\/var\/www<br \/>\n    ports:<br \/>\n      - 8080:80<br \/>\n  database:<br \/>\n    image: mysql:5.6<br \/>\n    volumes:<br \/>\n      - dbdata:\/var\/lib\/mysql<br \/>\n    environment:<br \/>\n      - \"MYSQL_DATABASE=homestead\"<br \/>\n      - \"MYSQL_USER=homestead\"<br \/>\n      - \"MYSQL_PASSWORD=secret\"<br \/>\n      - \"MYSQL_ROOT_PASSWORD=secret\"<br \/>\n    ports:<br \/>\n      - \"33061:3306\"<br \/>\nvolumes:<br \/>\n  dbdata:<br \/>\n<\/code><\/p>\n<h2><span class=\"ez-toc-section\" id=\"and_now_the_app_configuration\"><\/span>and now the app configuration<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><code><br \/>\nFROM php:7.1.3-fpm<\/p>\n<p>RUN apt-get update<br \/>\nRUN apt-get install -y libmcrypt-dev<br \/>\nRUN apt-get install -y mysql-client<br \/>\nRUN apt-get install -y libmagickwand-dev --no-install-recommends<br \/>\nRUN pecl install imagick<br \/>\nRUN docker-php-ext-enable imagick<br \/>\nRUN docker-php-ext-install mcrypt pdo_mysql<br \/>\nRUN php -r \"copy('https:\/\/getcomposer.org\/installer', 'composer-setup.php');\"<br \/>\nRUN php -r \"if (hash_file('SHA384', 'composer-setup.php') === '544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;\"<br \/>\nRUN php composer-setup.php<br \/>\nRUN php -r \"unlink('composer-setup.php');\"<br \/>\nRUN mv composer.phar \/usr\/local\/bin\/composer<br \/>\nRUN apt-get install -y git<br \/>\nRUN apt-get update && apt-get install -y zlib1g-dev<br \/>\nRUN docker-php-ext-install zip<br \/>\n<\/code><\/p>\n<h2><span class=\"ez-toc-section\" id=\"the_web_configuration\"><\/span>the web configuration<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><code><br \/>\nFROM nginx:1.10<\/p>\n<p>ADD vhost.conf \/etc\/nginx\/conf.d\/default.conf<br \/>\n<\/code><\/p>\n","protected":false},"excerpt":{"rendered":"<p>To simplify the development I tried docker for building the runtime environment. Here are the major steps to get it running. Prerequisites The docker installation is straight forward as described on the docker home page: un-install old version aptitude remove docker docker-engine docker.io add reporitory aptitude update aptitude install apt-transport-https ca-certificates curl gnupg2 software-properties-common add &hellip; <a href=\"https:\/\/olkn.myvnc.com\/?p=570\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">docker web dev<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[184],"tags":[35,40,46,185,73,79,116],"class_list":["post-570","post","type-post","status-publish","format-standard","hentry","category-php-development","tag-administration","tag-apache","tag-config","tag-container","tag-install","tag-linux","tag-server"],"_links":{"self":[{"href":"https:\/\/olkn.myvnc.com\/index.php?rest_route=\/wp\/v2\/posts\/570","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/olkn.myvnc.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/olkn.myvnc.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/olkn.myvnc.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/olkn.myvnc.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=570"}],"version-history":[{"count":9,"href":"https:\/\/olkn.myvnc.com\/index.php?rest_route=\/wp\/v2\/posts\/570\/revisions"}],"predecessor-version":[{"id":580,"href":"https:\/\/olkn.myvnc.com\/index.php?rest_route=\/wp\/v2\/posts\/570\/revisions\/580"}],"wp:attachment":[{"href":"https:\/\/olkn.myvnc.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=570"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/olkn.myvnc.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=570"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/olkn.myvnc.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=570"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}