25
Vagrant and Docker Portable Development Environments

Vagrant and Docker

Embed Size (px)

Citation preview

Vagrant and Docker

Portable Development Environments

Who we are

Feroj BepariSenior Software EngineerNascenia [email protected]

Samiul HoqueSenior Software EngineerNascenia [email protected]

2

Development environmentsmade easy

Create and configure lightweight, reproducible, and portable development environments.

3

What Vagrant is❏Development environment setup tool

❏Focused on automation

❏Lowers development environment setup time

❏Development - Production parity

❏No more “Works on my machine” excuses

4

Why Vagrant❏Easy to configure

❏Reproducible and portable

❏Single consistent workflow

❏Industry-standard tools integration

5

Benefits of Vagrant❏Isolate dependencies and their configuration❏A single disposable, consistent environment❏Creates a single Vagrantfile for a project and share with other

developer/designers❏Others just need to run vagrant up and everything is installed and

configured for work.

6

Installation❏ Download and Install

VirtualBox

https://www.virtualbox.org/wiki/Downloads

❏ Download and Install Vagrant

http://www.vagrantup.com/downloads

7

Let us create a VM❏ Ubuntu Server 14.04 (trusty64)

❏ Git

❏ LAMP Stack

❏ Composer

❏ Node

❏ Redis

❏ Memcached

❏ Beanstalkd

❏ Supervisor

❏ PHPMyAdmin

❏ The Web Application:

➭ A laravel installation

➭ A mysql database for the application

➭ Queue configuration

8

Initializing Vagrant

9

❏ mkdir vagrant-test

❏ cd vagrant-test

❏ laravel new testvagrant

A fresh laravel will be installed in testvagrant directory.

❏ vagrant init

A new Vagrantfile will be placed in the vagrant-test directory.

❏ vagrant up

Updating Host OS Names Hosts File

10

Access the Sample Vagrant Project

The sample file is accessible at

https://github.com/samiuln/vagrant-test

11

Provisioners❏Shell Scripts

❏Puppet

❏Chef

12

❏ Ansible

❏ Salt

❏ Docker

An open platform for distributed applications for developers and sysadminsBuild, Ship, Run

13

What Docker is❏High level

❏ A lightweight VM

❏ Own process space

❏ Own network interface

❏ Can run stuff as root

14

❏ Low level❏ Container = isolated

processes

❏ Share kernel with host

❏ <<application container>>

Why Docker❏Run everywhere

❏ Regardless of kernel version

❏ Regardless of host distro

❏ Physical or virtual, cloud or not

❏ Container and host architecture must match...

15

❏Run anything

❏ If it can run on the host, it can run in the container

❏ If it can run on a Linux kernel, it can run

VMs vs. Containers

16

Why Container are Lightweight

17

Install Docker❏Go to https://docs.docker.com/engine/installation/

❏ sudo docker run hello-world

18

Docker Hub❏More than 100,000 public images

❏Push your image to public repository

❏Use anywhere, any time :)

❏https://hub.docker.com/

19

Demo ❏Run mysql docker image from Docker hub

❏ docker run --name wordpressdb -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=wordpress -d mysql:5.7

❏Pull wordpress from docker hub❏ docker pull wordpress

❏Run wordpress container from local❏ docker run -e WORDPRESS_DB_PASSWORD=password -d --name wordpress --link

wordpressdb:mysql wordpress

20

Demo (contd.)❏Show all docker container

❏ docker ps, docker ps -a

❏Inspect wordpress configuration

❏ docker inspect wordpress

21

Demo (contd.)❏Where is my SOURCE CODE? :(

❏ docker run -e WORDPRESS_DB_PASSWORD=password -d --name

wordpress --link wordpressdb:mysql -p

127.0.0.2:8080:80 -v "$PWD/":/var/www/html wordpress

❏ TIRED typing command?❏ Docker has a solution :)

22

Resources❏https://github.com/ferojnascenia/docker-compose-wordpress/

❏https://hub.docker.com/

❏http://www.sitepoint.com/how-to-use-the-official-docker-wordpress-image/

23

24

25