DOCKERIZANDO A INFOJR

CRISTIANO SANTOS

12/08/2016

CRISTIANO SANTOS

Feira de Santana, BA

CRISTIANO SANTOS

Feira de Santana, BA

2012 - 2014

CRISTIANO SANTOS

Feira de Santana, BA

AGO/2013 AGO/2014

LABIMM

CRISTIANO SANTOS

Feira de Santana, BA

AGO/2014 NOV/2014

CRISTIANO SANTOS

Feira de Santana, BA

NOV/2014 DEZ/2015

CRISTIANO SANTOS

Feira de Santana, BA

2016

A EVOLUÇÃO

VIRTUAL MACHINES

VIRTUAL MACHINES

E AGORA?

VMs? CONTAINERS?

Q **** É ESSA?

VIRTUAL MACHINES

CONTAINERS

LINUX CONTAINERS

Talk is cheap. Show me the code

"Linus Torvalds"

DOCKER S/ SUDO

$ sudo groupadd docker
$ sudo usermod -aG docker $USER

HELLO WORLD

HELLO WORLD

$ docker run ubuntu /bin/echo 'Hello world'

HELLO WORLD

$ docker run ubuntu /bin/echo 'Hello, World'
Unable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu

2f0243478e1f: Downloading [=======================>                           ] 23.36 MB/49.68 MB
d8909ae88469: Download complete 
820f09abed29: Download complete 
01193a8f3d88: Download complete 

HELLO WORLD

Status: Downloaded newer image for ubuntu:latest
Hello, World

 O BÁSICO

O BÁSICO

$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS               NAMES
8bb711678f6b        ubuntu              "/bin/echo 'Hello, Wo"   3 minutes ago       Exited (0) 3 minutes ago                       tiny_swirles
$ docker logs tiny_swirles
Hello, World

CONTAINERS INTERATIVOS

CONTAINERS INTERATIVOS

$ docker run -t -i ubuntu /bin/bash

root@af8bae53bdd3:/#

DOCKER & PHP

$ docker run -d php:7.0-apache

DOCKER & PHP

$ docker ps
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS               NAMES
48eb1d65abfd        php:7.0-apache      "apache2-foreground"   10 seconds ago      Up 9 seconds        80/tcp              modest_gates

DOCKER & PHP

$ ifconfig
docker0   Link encap:Ethernet  Endereço de HW 02:42:00:30:07:bd  
          inet end.: 172.17.0.1  Bcast:0.0.0.0  Masc:255.255.0.0
          endereço inet6: fe80::42:ff:fe30:7bd/64 Escopo:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Métrica:1
          pacotes RX:9490 erros:0 descartados:0 excesso:0 quadro:0
          Pacotes TX:16728 erros:0 descartados:0 excesso:0 portadora:0
          colisões:0 txqueuelen:0 
          RX bytes:562720 (562.7 KB) TX bytes:25293913 (25.2 MB)

DOCKER & PHP

$ docker exec -it modest_gates /bin/bash

MAS ... DA PRA AUTOMATIZAR?

OLHE SÓ ...

SIM, COM DOCKERFILES

DOCKERFILE

$ mkdir infojr
$ cd infojr
$ touch Dockerfile
$ echo "<?php echo 'Hello, Docker!'; ?>" > index.php

DOCKERFILE

FROM tutum/apache-php
ADD . /app

DOCKERFILE

$ docker build -t infojr/my-php-app .

DOCKERFILE

$ docker run -d -p 80:80 infojr/my-php-app

Ô CRIS,

EU USO

PHP & MYSQL

E AGORA?

DOCKER COMPOSE

DOCKER COMPOSE

$ touch docker-compose.yml

DOCKER COMPOSE

app:
  build: .
  volumes:
    - .:/app
  ports:
    - "80:80"
  environment:
    - PHP_ENV=development
  links:
    - mysql
mysql:
  image: mysql:5.7
  ports:
    - "3306:3306"
  environment:
    - MYSQL_ROOT_PASSWORD=123456
    - MYSQL_DATABASE=infojr

DOCKER COMPOSE

$ docker-compose build
$ docker-compose up -d

DOCKER COMPOSE

$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
dc8efce4d6eb        infojr_app          "/run.sh"                4 minutes ago       Up 4 minutes        0.0.0.0:80->80/tcp       infojr_app_1
6f0ed24449d6        mysql:5.7           "/entrypoint.sh mysql"   5 minutes ago       Up 4 minutes        0.0.0.0:3306->3306/tcp   infojr_mysql_1

DOCKER COMPOSE

app:
  build: .
  volumes:
    - .:/app
  ports:
    - "80:80"
  environment:
    - PHP_ENV=development
  links:
    - mysql
mysql:
  image: mysql:5.7
  ports:
    - "3306:3306"
  environment:
    - MYSQL_ROOT_PASSWORD=123456
    - MYSQL_DATABASE=infojr

DOCKER COMPOSE

<?php
  $link = mysql_connect('172.17.0.1', 'root', '123456');
  if (!$link) {
        die('Could not connect: ' . mysql_error());
  }

  echo 'Connected successfully';
  mysql_close($link);
?>

E PARA A INFOJR, QUAL A UTILIDADE?

E EM PRODUÇÃO?

DÚVIDAS?

MESMO?

/cristianossd

/cristianossd

cristianossd@gmail.com

DOCKERIZANDO A INFOJR

By cristianossd

DOCKERIZANDO A INFOJR

  • 777