How to containerzie my application using docker?

We have developed a payment plugin and want to dockerize indico for development and production workflow. How do I go about doing that?

From the indico/indico-containers project on github, I understand that multiple containers are required in Indico using OpenShift. Is that correct? Or can I put the entire project into a single container using only Docker? Will this container be development friendly? (meaning, will it allow devs to make changes and update the image?)

I cloned the GitHub - indico/indico-containers: Containerization of Indico project but it’s giving me an error when I run the dock-compose up -
indico.flask Received request with invalid url root for http://indico-web:59999/

PS: I’m new to Docker and this is my first time containerizing an application. Appreciate any help, thanks!

There are different possible strategies, but you mostly want different containers (especially the assisting services like database and redis).

Your error is probably a configuration issue, you need to use a valid root url (check indico/worker/indico.conf and of course adjust indico.env to your hostnames) in any case.

Side note: Don’t be surprised if indico-containerization seems complicated, as this is a rather complex project and especically handling of the static files requires quite a bit of docker knowlegde to get it right.

Hi, as @bpedersen2 said, it’s best to use multiple containers. Typically you’d have a container for Indico itself and then for celery, redis, your DB and potentially nginx.

Mind you, the current docker compose setup in the repository is a bit outdated. You might want to check out this PR for a more current setup.

This setup uses the latest version of Indico published on PyPI which is a production version and not really meant to be modified. If you’d like to have a development setup, you could create a custom container and install Indico in development mode like in this tutorial. We actually have a PR which adds a dev docker setup so you can check it out as well (The relevant Dockerfile is indico-dev/worker)

Good luck!

Thanks! I’m checking out the Dev PR you suggested

Yes you can. Actually I am doing this for my installation of Indico:

This way of installing Indico is development friendly, I guess, because the directory /opt/indico stays outside the container (on the host). You can modify the code (from the host) and immediately check the result on the browser, without having to rebuild the image or the container. But I have never tried this.