Hello all,
I’ve been working on a docker-compose based alternative to django-box (imaginatively named django-docker-box
) over the last month and it finally appears to be mostly complete.
For reference the tool is just a Dockerfile and a docker-compose definition that is able to run a complete test matrix of every supported Python and DB version. It’s as simple as docker-compose run sqlite
. You can see a full test run (excluding oracle) here: https://travis-ci.com/orf/django-docker-box/builds/90167436
Florian suggested I create a thread here to gather feedback and discuss any potential future directions for the project, so here goes:
Firstly I’d like to know if there is any support for moving this under the Django project itself, maybe even as a replacement for django-box? I think the setup is pretty quick compared to django-box and is more flexible in terms of database version support as well as working with Oracle. I’d also really like some help improving Oracle support if anyone has the time!
Secondly is there any support for integrating this with our current Jenkins setup? I think it would be pretty neat to have parity between what runs on the CI and what we can run locally and have any improvements shared between both. Perhaps a full matrix run (which right now is 66 different environments) is out of the question but a smaller subset could be good?
Thirdly, and this is a bit wild, but what about using this to reduce the burden of running Jenkins by running the tests on a managed CI service like Travis CI? We would likely still need Jenkins due to issues with Oracle and running tests on Windows (unless https://github.com/django/django/pull/10259 works with Docker!), but we could offload some of the environments onto a third party service. Travis gives large OS projects like Django increased concurrency limits on their accounts so we could end up with pretty speedy test runs. Also with docker-compose switching between CI services (including Jenkins) would be very simple.
The repo is here: https://github.com/orf/django-docker-box.
Any feedback on these points or the project itself would be greatly appreciated,
Tom
Thank you for the reply Josh. I didn’t anticipate any suggestions for including this inside core but off the back of your suggestion I’ve made a ticket here: https://code.djangoproject.com/ticket/30010.
I don’t think it should be complex at all to include this inside Django - it’s four or five new files at most. Hopefully this should improve the experience at sprints, however the current Dockerfile weighs in at 650+mb so the problem may switch from ‘it is hard to set up an environment’ to ‘it is hard to download one’!
--
You received this message because you are subscribed to the Google Groups "Django developers (Contributions to Django itself)" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-develop...@googlegroups.com.
To post to this group, send email to django-d...@googlegroups.com.
Visit this group at https://groups.google.com/group/django-developers.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-developers/074f68c9-2199-4128-a37a-bfc1852f4806%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
To have this completely working at sprints without having everyone building their own local images we would need to have the Jenkins server use docker in some capacity. This would also require an official django
account on Docker hub.
The pattern I’m using right now is that on every build we pull the django-ci:latest
image (from my personal account). Docker uses this image as a cache automatically (preventing rebuilds). On any successful master build we push the new image to docker-hub, so subsequent builds can utilise it.
Then anyone wanting to speed up their bootstrapping can do docker-compose pull
and automatically have the latest image available for running right away. We can make this smaller, for sure, but we can also suggest people download this beforehand (i.e at their hotel).
I don’t know how feasible this is but it’s also very easy to run a caching docker mirror (docker run -p 5000:5000 registry
). Organizers could run this at large events and configuring docker to use a local mirror on the network is a one-line change for atendees.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-developers/64a2874a-01d1-4ffd-acaa-a811ee5de5ee%40googlegroups.com.
To unsubscribe from this group and stop receiving emails from it, send an email to django-d...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-developers/04b7db46-f6d4-4f60-9e28-4a4b41f84cad%40googlegroups.com.
+1 to archiving django-box
To unsubscribe from this group and stop receiving emails from it, send an email to django-d...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-developers/04b7db46-f6d4-4f60-9e28-4a4b41f84cad%40googlegroups.com.
--Adam
To view this discussion on the web visit https://groups.google.com/d/msgid/django-developers/90f70b0e-9082-489c-ae0a-98341c917a48%40googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-developers/90f70b0e-9082-489c-ae0a-98341c917a48%40googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-developers/CAGuvt93zYniq5uL7me-Pa4D%3DnEJb0aox0PcfheVMqOFFFWRwzQ%40mail.gmail.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-developers/1BCF38D3-B3A8-4C25-9AF9-A2EA2E8A1B2E%40tomforb.es.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-developers/1BCF38D3-B3A8-4C25-9AF9-A2EA2E8A1B2E%40tomforb.es.