GrahamDumpleton / mod_wsgi-docker

Docker images for Apache/mod_wsgi.
Apache License 2.0
72 stars 36 forks source link

using -onbuild Dockerfiles with C library dependencies #4

Closed neoice closed 9 years ago

neoice commented 9 years ago

for example, MySQL-python will not work without libmysqld-dev (or similar) installed on the OS.

is there a good/known workaround?

GrahamDumpleton commented 9 years ago

Read:

It explains the process using PostgreSQL client libraries as an example.

Just be aware that instead of stuff being in the '.docker' subdirectory, the preferred name of the subdirectory is now '.whiskey' as the structure got applied also to non Docker contexts and so was generalised. Thus as explained in that post, extra build type package dependencies would be installed from:

Just be aware that with this approach of using a pre-build hook script, every time you build the image it will install the package again.

If you wanted to avoid that, you would instead build a new image from the mod_wsgi-docker:python-2.7 base image and install the packages in the derived Docker image Dockerfile. Then replicate the ONBUILD structure in that derived image Dockerfile as well and base your application off it instead.

Your intermediary Dockerfile would then be something like:

FROM grahamdumpleton/mod-wsgi-docker:python-2.7

RUN apt-get update && apt-get install -y libmysqld-dev && rm -r /var/lib/apt/lists/*

WORKDIR /app

ONBUILD COPY . /app
ONBUILD RUN mod_wsgi-docker-build

EXPOSE 80
ENTRYPOINT [ "mod_wsgi-docker-start" ]

So best way depends on whether you want to fiddle around with your own intermediary ONBUILD image or not.