25
2015-04-15 OFBIZ.APACHE.ORG - PRELIMINARY 1 OFBiz Development with Docker http://docker.io/ http://ofbiz.apache.org 

OFBiz Development with Docker

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: OFBiz Development with Docker

2015­04­15 OFBIZ.APACHE.ORG ­ PRELIMINARY 1

OFBiz Development with Docker

http://docker.io/http://ofbiz.apache.org 

Page 2: OFBiz Development with Docker

2015­04­15 OFBIZ.APACHE.ORG ­ PRELIMINARY 2

What is OFBiz?

http://ofbiz.apache.org/

Page 3: OFBiz Development with Docker

2015­04­15 OFBIZ.APACHE.ORG ­ PRELIMINARY 3

OFBiz

● Java● ERP● 873 tables, 309 views● Tons of application service logic

Page 4: OFBiz Development with Docker

2015­04­15 OFBIZ.APACHE.ORG ­ PRELIMINARY 4

What is docker?

http://docker.io/

Page 5: OFBiz Development with Docker

2015­04­15 OFBIZ.APACHE.ORG ­ PRELIMINARY 5

Docker

● Linux● Containers ­ LXC● Copy On Write

Page 6: OFBiz Development with Docker

2015­04­15 OFBIZ.APACHE.ORG ­ PRELIMINARY 6

Docker ­ Linux

● Maybe some of you have heard of linux?

Page 7: OFBiz Development with Docker

2015­04­15 OFBIZ.APACHE.ORG ­ PRELIMINARY 7

Docker ­ Containers

Filesystem

Process

User

Network

● LXC ­ Namespaces● Each type of 

namespace is isolated from others of its type

Lighter weight than standard virtualization ­ Better performance

Page 8: OFBiz Development with Docker

2015­04­15 OFBIZ.APACHE.ORG ­ PRELIMINARY 8

Docker ­ Copy On Write

Read­Only Base Layers

Writable Top Layer

● AUFS● Multiple Layers● Copy of all files can be made in 

seconds, by adding a new layer.

Page 9: OFBiz Development with Docker

2015­04­15 OFBIZ.APACHE.ORG ­ PRELIMINARY 9

Docker ­ OSx/Windows

● docker is linux.● boot2docker.io

– self­contained bootable iso– virtualbox

Page 10: OFBiz Development with Docker

2015­04­15 OFBIZ.APACHE.ORG ­ PRELIMINARY 10

OFBiz Development ­ New Feature

● Get the code● Initialize the system(*)● Write the test case● Implement the feature● Submit for approval(and merge)

Page 11: OFBiz Development with Docker

2015­04­15 OFBIZ.APACHE.ORG ­ PRELIMINARY 11

OFBiz Development ­ Bug Found

● Yes, bugs can happen.● Replicate environment(*)● Update test case● Fix the code● Submit for approval(and merge)● Cross fingers, hope it works in production

Page 12: OFBiz Development with Docker

2015­04­15 OFBIZ.APACHE.ORG ­ PRELIMINARY 12

OFBiz Development ­ Coding

● Which code base is being updated?– OFBiz backend, content frontend, high­availability 

cat herding dispatcher?

● Does the new code require changes in multiple layers?

● Which test case framework will get updated?– OFBiz, selenium, spreadsheet?

Page 13: OFBiz Development with Docker

2015­04­15 OFBIZ.APACHE.ORG ­ PRELIMINARY 13

OFBiz Development ­ Environment

● Initialize and replicate require a real environment● Which database?

– Mysql, Postgresql, Derby, Oracle

● What web frontend?– Apache, Nginx

● Email(MTA)?– Exim, Postfix, Qmail, Sendmail

Page 14: OFBiz Development with Docker

2015­04­15 OFBIZ.APACHE.ORG ­ PRELIMINARY 14

OFBiz Development ­ Environment

● Is there a content frontend?– wordpress, drupal, django, etc?

● How much data should be made available?– Empty, seed, or a full database copy?

Page 15: OFBiz Development with Docker

2015­04­15 OFBIZ.APACHE.ORG ­ PRELIMINARY 15

OFBiz Development with Docker

Page 16: OFBiz Development with Docker

2015­04­15 OFBIZ.APACHE.ORG ­ PRELIMINARY 16

docker ­ Dockerfile

● A simple way to run a series of commands● Can do almost anything

– Install packages– Modify files– Copy external configuration settings

Page 17: OFBiz Development with Docker

2015­04­15 OFBIZ.APACHE.ORG ­ PRELIMINARY 17

docker ­ Dockerfile

● Each step is cached– This allows for long running steps to be skipped if 

nothing has changed

● There are many pre­packaged docker images available, to save time from having to build your own.

Page 18: OFBiz Development with Docker

2015­04­15 OFBIZ.APACHE.ORG ­ PRELIMINARY 18

docker/base/DockerfileFROM debian:wheezy# install packagesRUN apt­get install postgresql­9.1 libpostgresql­java nginx­full

# configure packagesUSER rootRUN ln ­s /srv/ofbiz/etc/nginx.conf /etc/nginx/sites­enabled/ofbiz.confUSER postgresqlRUN createdb ofbiz; create user ofbiz

# this will start postgres, ofbiz, and nginxCOPY ofbiz­startup.sh /etc/init.d/ofbiz­startupENTRYPOINT /etc/init.d/ofbiz­startup

Page 19: OFBiz Development with Docker

2015­04­15 OFBIZ.APACHE.ORG ­ PRELIMINARY 19

docker ­ build

● docker build ­t $name­base docker/base– Dockerfile– ofbiz­startup.sh

Page 20: OFBiz Development with Docker

2015­04­15 OFBIZ.APACHE.ORG ­ PRELIMINARY 20

docker ­ seed$ id=$(docker create ­v $PWD:/srv/ofbiz $name­base)$ docker start $id$ # wait$ docker exec $id “/srv/ofbiz/ant load­seed”$ docker stop $id$ docker commit $id $name­seed­base

Page 21: OFBiz Development with Docker

2015­04­15 OFBIZ.APACHE.ORG ­ PRELIMINARY 21

dockerfile ­ seedFROM $name­seed­baseENTRYPOINT /etc/init.d/ofbiz­startup

Page 22: OFBiz Development with Docker

2015­04­15 OFBIZ.APACHE.ORG ­ PRELIMINARY 22

docker ­ snapshot$ id=$(docker create ­v $PWD:/srv/ofbiz $name­base)$ docker start $id$ # wait$ docker exec $id “zcat /srv/ofbiz/dumps/pgdump.sql.gz | su ­ postgresql”$ docker stop $id$ docker commit $id $name­snapshot­base

Page 23: OFBiz Development with Docker

2015­04­15 OFBIZ.APACHE.ORG ­ PRELIMINARY 23

dockerfile ­ snapshotFROM $name­snapshot­baseENTRYPOINT /etc/init.d/ofbiz­startup

Page 24: OFBiz Development with Docker

2015­04­15 OFBIZ.APACHE.ORG ­ PRELIMINARY 24

docker ­ run

● docker run ­v $PWD:/srv/ofbiz $name– Created write­layer on top of files in $name– Mounts the current directory at the requested 

location– Runs the previously defined ENTRYPOINT

Page 25: OFBiz Development with Docker

2015­04­15 OFBIZ.APACHE.ORG ­ PRELIMINARY 25