Contributors mailing list archives

Re: Docker :: Distributed Deployment Wheelhouse

- 12/11/2015 00:45:47

@ Levent: Thanks! I'll watch out for that hint as we go down the line.

@ Moisés: I'll see what I can do. Of course this would be perfect. For now, I'll share the ideas behind.

I got another useful patten, which is what I tried to achieve by a coordinated OCA community open design process about docker, which sadly until now did not get accepted. I'll share it here:

When we prepare the Zip artifacts of the Odoo source code we invalidate the cache very individually with a docker build --no-cache or its compose equivalent. This pattern needs to split every zip-factory in a separate dockerfile and inherit the volumes from the former. Like this we are able to very flexibly construct the artefacts and expose them via the mentioned uhttpd at the end of the factory chain uhttpd simply picks up the "volumes from" the last image. If an intermediate image has been rebuild at *buildtime* those changes are correctly passed to the file server at runtime.

Best, David

Moises Lopez <> schrieb am Mi., 11. Nov. 2015 um 10:08:
Maybe you can share a Dockerfile versioned...

2015-11-11 2:53 GMT-05:00 Levent Karakas <>:
shouldn't it be libxslt1-dev ?
2015-11-11 6:23 GMT+02:00 David Arnold <>:
sorry, I missed those two beforehand:     
libsasl2-dev \
    libssl-dev \

El mar., 10 nov. 2015 a las 18:41, David Arnold (<>) escribió:
It's not nice to share headache without remedy, so on ubunty:trusty, those where the deps to build all current standard pip requirements.txt of the offical odoor repo properly:

# Additional dependencies for wheelfactory (placed here for caching reasons)
RUN apt-get update && apt-get install -y 
python-pip \
libldap2-dev \
libxml2-dev \
libxslt-dev \
    libpq-dev \
    libjpeg-dev \

The last one I'm not 100% sure. Just put it there, as it doesn't really matter and sounds so similar to a pip req.

El mar., 10 nov. 2015 a las 16:28, David Arnold (<>) escribió:

I wanted to share with you a pattern for rather easily achieving a distributed deployment wheelhouse on your distributed CI runners on your docker infrastructure with the purpose of saving bandwidth and pushing speed.

Step 1: Make a pre-build Dockerfile which prepares wheels and other stuff such as odoo.zips and webserver binaries.

Step 2: on docker run copy those to a bindmounted shared volume

Step 3: run a uhttp (ej. fnichol/uhttpd) with volumes_from

Step 4: access your ephemeral, but cached (by docker build stack), webserver from your other dockers via the host gateway and the exposed port [ej. $(ip route get | grep -Eo 'via \S+' | awk '{print $2}')]

Enjoy the speed up, even more so on slow network connection (or just save on your bandwith)

Best David


Post to:

Moisés López Calderón
Vauxoo - OpenERP's Gold Partner
Mobile: (+521) 477-752-22-30
Office: (+52) 477-773-33-46
twitter: @vauxoo

Post to: