Funding development of a docker Environment - how do I do it?

as some have noted I am looking to push having a production-ready docker environment for ERPNext to be developed.

Status: non-existing

I can’t do it myself and I don’t have a budget to just pay someone to do it. What’s the best approach for such?

I though about

  1. posting a job on the Community job-posting site and get an idea of the costs through that (which I don’t have. Maybe it’s a piece of cake if you just know your ways with docker and ERPNext, maybe it’s more dificult)
  2. start a funding campaign (this forum, bountysource, …)

get it done! … Is that a good approach? OR should I go through the issues on github rather then the job-posting site ? at least github would be connected to bountysource somehow (If I am not mistaken) I think and Frappe Ltd. would be aware of this matter (and maybe contribute or support efforts)

@vrms, I dont know much about docker! But I’m very experienced with Vagrant environments, and can you tell why docker and not vagrant?

https://www.hashicorp.com/blog/vagrant-push-to-deploy.html

[quote=“max_morais_dmm, post:2, topic:10825”]
@vrms, I dont know much about docker! But I’m very experienced with Vagrant environments, and can you tell why docker and not vagrant?
[/quote]no, I can’t. I just think docker is THE thing and so I am jumping on that train*. Without much knowledge I think that docker installation would work very well and also would bring attention to ERPNext due to the hype maybe.

As you know I have not much idea about vagrant (only that some here use it for development environments).

EDIT: * actually it’s a bit more then just “following the hype”. I used to use a VM for odoo and from what I know about docker it’ll beat a Virtual machine I think.

@vrms I cant see, much advantages for ERPNext and Docker, but check this discussion https://www.quora.com/What-is-the-difference-between-Docker-and-Vagrant-When-should-you-use-each-one

Vagrant already support docker!

1 Like

yes I saw that … but it actually leaves me more puzzled then before. just reading very briefly about vagrant 2 questions come to mind

  1. is vagrant more on the VM or more on the Container side of things? **
  2. can it be used to run production instances of ERPNext?

** in terms of not having to maintain an OS, or not having to reserve ressources (CPU, RAM) to a machine

I’ll try the read you recommend

@vrms, I still dont understanding where do you want to reach!

For example, in a single server, I can have:

Multiple websites, since frappe is multitenant, nativelly
Multiple bench environments, sharing standard resources like, redis, mariadb etc

Why have multiple boxes (with a full-loaded OS) will be more efficient in terms of resource management and saving, instead of the actual scheme of frappe?

Answering your questions!

Vagrant is more in therms of VM’s, where do you need manage the resources,
Yes is can be used to run production instances of ERPNext.!

there is another interesting read (actually with two comments from Vagrant authors) about vagrant vs docker (which due to many commenters is like comparing apples to oranges in a way)

1 Like

… due to the fragrant vs docker discusson @max_morais_dmm brought up (which I appreciate) I’d like to keep focus on the question of this topic.

How to stage funding a development? any input on this? I actually thought one could do both.

  1. Post an issue on github
  2. post a freelance job (related to the issue posted before)
  3. link the issue to bountysource

A community member has actually made a docker image for ERPNext :

https://hub.docker.com/r/davidgu/erpnext/

I will be testing it soon and make modifications if required.

@vjFaLk thanks, I am aware of this image, tested it as well and made it work for ERPNext 6.x (in short replacing debian:wheezy with ubuntu:14.04 made it work)

So far that is all fine but this is not diversified sufficiently. All services that built ERPNext are being bundled in one image here. Ideally each single service (ERPNext, Nginx, MariaDB, …) should be running in a separate container which then are connected to each other and serve ERPNext as a team effort, so to say.

To build such a group of images/containers is the thing my post is initially pointing at

not quite clear what this sentence means. can you explain? Are you saying there is no need for containers in order to run multiple instances of ERPNext because frappe does that already itself?

@vrms, yes!

Using bench, you is able to have n-sites per installation, eg:

Do you can have too multiple instalations, for example:

Bench 1, have 15 sites
bench 2, have 33 sites
Bench 3, have 1 site

Some resources can be, or not will be (depending of configuration), share resources, like -

  • Nginx
  • MariaDb
  • Redis
  • Celery

The unique that dont will be shared is 2 process under supervisor, frappe-web, asyncio

@vrms I use a vagrant based instance on my local Dev machine.
On my live web server I run a single CentOS 7 digitalocean droplet and controll n-sites via bench like what @max_morais_dmm describes above.
Like yourself I know very little about Docker. By all accounts it is excellent (As is Vagrant). My understanding is that Docker allows for more controlled mass deployment than Vagrant was designed to acheive. The more varied deployment options available to developers of ERPNext the better. Maybe try and contact the dev who created the other ERPNext Docker files for some pointers? You appear to have investigated Docker throughly. I would imagine that you are close to building a finished working version. Even if it doesn’t currently look like that on your desktop :slight_smile: Creating a Docker file shouldn’t be too complicated. Otherwise why all the Docker is great reviews? As such a few motivated people and zero dollars should solve the problem.
Good Luck.

@vrms I just read your link to the stack overflow article. Very cool read. I loved the Disclaimer: I wrote Vagrant! post which is followed up directly afterwards by the Disclaimer: I wrote Docker post.

Apologies for the late reply.

We actually also have a vagrant box as well: GitHub - frappe/erpnext_vagrant: Vagrantfile and Bootstrap for creating a dev environment for ERPNext

I’m having a look at both Docker and Vagrant and I’ll have to understand the pros and cons of each technology and decide on what will be best for deploying ERPNext and ERPNext related things, so I can improve on the existing Docker image or the Vagrant Box if necessary and add that to our downloads section so people can deploy in their own way.

I’m not picking either of them because they’re “better”, they both are different technologies and useful in their own way, therefore I’ll need to make a choice depending on the requirements.

Hi all,

Jumping in on this discussion…

I don’t really know tech differences/capabilities between Vagrant/ Docker / Bench, so I won’t go into that. But, from a user/admin (non-IT, sort of hobby-level admin :wink: ) POV I think the purpose of such “contained” deployment should be:

  • Ease of install, initial production-level config (AFAIK, this is already achieved using bench)
  • Ease of automate backup (this is also achieved using bench, I believe)
  • Daily backups should include all three data and config and extra modules installed (even custom ones)

So that, after a system disaster, you can install a new OS, new bench/docker/vagrant (name your pick), restore last working config and have the system up and running without (too) much hassle.

Any technology that allows a low-level geek (non-IT) to achieve all this (kind of) easily would be a hit.

P.S.: sorry if this is absolutely obvious, just bringing in the needs of a small company (which I believe are majority of ERPNext users/potential users). Not really complicated setup, not many benches, nor many sites… Ease of backup/restore after disaster is main concern.

1 Like

@System19 made THE point I think.

“…The more varied deployment options available to developers of ERPNext the better.”

@abelinux true about small business being a targer group but there will be professionals offering implementation and hosting to those non IT literate businesses as well.
And it’s important for the ecosystem of ERPNext (which still seems to be relatively small (compared to odoo for example)) to enable such professionals building careers around ERPNext. Those people will drive ERPNext ro levels the coreteam will never reach on it’s own.

And a big variety of implementation method’s for mass deployment will be something such professionals will appreciate. Alone for that purpose developing a Docker environment will be worth the effort I believe.

@vrms Of course! I do see your point, and is obviously valid…

I’m not against any development on deployment options whatsoever… Even further: if anything, I support it, given that in the short run, we users might benefit from new install/maintenance options, and in the long run a wider ecosystem is a win/win situation.

But, as you stated, efforts towards developing this container might primarily be targeted towards professionals offering implementation and hosting, and most features would probably have such use case in mind.

What I meant to point out is that if this Docker/Vagrant effort is actually made, it’d be great if it could also include some features to make backup/restore as easy (and painless :wink: ) as possible.

Given this has not started yet, I thought it was good timing to bring this concern now: if planned ahead, perhaps it makes it easier for those implementing this to take both use cases into account.

Hope my point is clearer now.

sure +1

I have had good succes with LXD/LXC containers. I am not a developer, and I am able to deploy a new instance very quickly with containers that I have built from remote images. I can easlly copy from one host to another, run Erpnext from the container, restore a backup etc. Apparely you can publish images from containers, and make your remote server public so that other people can use them, or build your own. It is quite easy to get up and running, without a lot of technical knowledge,since the concept is similar to VM’s, which most people understand, but its a lot more efficient. I can easily run on a portable with only 2 GB of RAM, which would not be enough for virtual box + VM’s. It might not be suitable for development, but I don’t know enough about docker or vagrant to compare. All I know is that it works well for my use cases which include evaluation, testing, demos, and disaster recovery.