KAIP UŽDOMINUOTI DOKERĮ

/

Sailin' with Docker

2016.07.26

Gentleman's Guide

 

Pradžiamokslis

Kas tas yr?

What is it?

 

Kur jį dėt?

How we use it?

 

Kaip aną pažaboti?

How to use it?

Linux konteineriai?

an operating-system-level virtualization method for running multiple isolated Linux systems (containers) on a control host using a single Linux kernel.

Daug virtualkių ant vieno kernelio

DOCKER konteineriai?

Softas visom bajkom vienam konteinerį

 

Docker containers wrap a piece of software in a complete filesystem that contains everything needed to run: code, runtime, system tools, system libraries – anything that can be installed on a server.

DOCKER COMPOSE?

 

ĮraNKIS DOCKER'io PALEIDIMUI

 

Compose is a tool for defining and running multi-container Docker applications

DOCKER, Iš principo

 

 

PORTS: PORTAI ATVIRI PASAULIUI

 

EXPOSE: PORTAI, ATIDARYTI KITIEMS KONTEINERIAMS

 

VOLUMES: FOLDERIAI PRIEINAMI KONTEINERIUI

 

ENVIRONMENT: ENV KINTAMIEJI, DAŽNIAUSIAI CONFIGAMS

 

 

DOCKER, PORTAI

 

 EXPOSE VS PORTS

 

PRIEINAMI TIK REIKALINGIAUSI

EXPOSE NAUDOJAMAS TIK DOCKERFILE'UOSE

JEI NENURODOMA, PARENKAMAS ATSITIKTINIS

DOCKER, Failų sistema

 

 

 

 SUDARYTA IŠ SLUOKSNIŲ

 

SKIRTINGI DRIVERIAI: DEVICEMAPPER, AUFS, BRTFS, ETC...

 

VOLUMES - MOUNTAI IŠ HOSTO

 

 VARTOTOJAI NEMAPINAMI

DOCKER, DOCKERFILES

 

 

 

 

 

https://github.com/DATA-DOG/dockerfiles

DOCKER-COMPOSE.YML

php:
  image: datadoglt/php70
  links: [mysql, redis]
  volumes: [ ".:/var/www" ]

web:
  image: datadoglt/nginx-sf
  volumes: [".:/var/www"]
  ports: ["80:80"]
  links: ["php"]
  environment: { VIRTUAL_HOST: symfony.dev,admin.symfony.dev }

redis:
  image: redis

mysql:
  image: mysql
  hostname: mysql
  ports: ["3306"]
  environment:
    MYSQL_DATABASE: symfony2
    MYSQL_USER: symfony2
    MYSQL_PASSWORD: symfony2
    MYSQL_ROOT_PASSWORD: mysecretpw

DOCKER-COMPOSE.YML

version: "2"

services:

  php:
    image: datadoglt/php70
    volumes: ["./:/var/www"]
    links: ["mysql", "redis"]
    environment: { XDEBUG: "yes" }

  web:
    image: datadoglt/nginx-sf
    ports: ["80:80"]
    volumes: ["./:/var/www"]
    links: ["php"]
    environment: { VIRTUAL_HOST: "symfony2.dev,admin.symfony.dev" }

  redis:
    image: redis

  mysql:
    image: mysql:5.6
    ports: ["3306"]
    environment:
      MYSQL_ROOT_PASSWORD: mysecretpw
      MYSQL_DATABASE: symfony2
      MYSQL_USER: symfony2
      MYSQL_PASSWORD: secretpw

init.sh

#!/bin/bash

echo "[info] copy default parameters.yml"
cp -n /var/www/app/config/parameters.yml.dist /var/www/app/config/parameters.yml

sed -i "s/database_host:.*$/database_host: mysql/" /var/www/app/config/parameters.yml
sed -i "s/database_user:.*$/database_user: $MYSQL_ENV_MYSQL_USER/" /var/www/app/config/parameters.yml
sed -i "s/database_password:.*$/database_password: $MYSQL_ENV_MYSQL_PASSWORD/" /var/www/app/config/parameters.yml
sed -i "s/database_port:.*$/database_port: 3306/" /var/www/app/config/parameters.yml
sed -i "s/redis_host:.*$/redis_host: redis/" /var/www/app/config/parameters.yml

echo "[info] Running composer"
composer install --optimize-autoloader --working-dir=/var/www

echo "[info] Changing permissions for storage/"
chmod -R 777 /var/www/app/cache /var/www/app/logs /var/www/app/session

echo "[info] Waiting for mysql"
sleep 10

echo "[info] Migrating database"
php /var/www/app/console cache:clear
php /var/www/app/console doctrine:schema:update --force

chown -R www:www /var/www

entrypoint

#!/bin/bash

if [ -f /init.sh ]; then
    sleep 5 && echo "[info] Running /init.sh script" && sh /init.sh &
fi

if [ "$1" == "fpm" ]; then
    if [ "$XDEBUG" != "" ]; then
        PHP_ARGS="$PHP_ARGS -d xdebug.remote_enable=on"
        if [ "$XDEBUG_HOST" == "" ]; then
            XDEBUG_HOST="172.17.0.1"
        fi
    fi

    if [ "$XDEBUG_HOST" != "" ]; then
        PHP_ARGS="$PHP_ARGS -d xdebug.remote_host=$XDEBUG_HOST"
    fi
    echo "[info] starting php-fpm: /usr/sbin/php-fpm --nodaemonize --force-stderr $PHP_ARGS"
    exec /usr/sbin/php-fpm --nodaemonize --force-stderr $PHP_ARGS
else
    echo "Run: $@"
    exec "$@"
fi

www + DOCKER?

  • nginx needs code for assets
  • nginx needs php to proxy requests
  • php needs code to execute it
  • php needs mysql to store data

DOCKER, PROBLEMOS

 

 

 

  • DOCKER BE SUDO
  • PERMISSIONS
  • HOSTNAMES
  • PORTS
  • VOLUMES

 

Kas kam neaišku?

Q&A

Made with Slides.com