Git Product home page Git Product logo

erpnext-docker's Introduction

ERPNext Docker Image

This image can be used to run ERPNext in production within Docker.

Run with docker-compose

Build or pull ERPNext image.

Pull:

docker-compose pull

Build:

docker-compose build

Start:

docker-compose up --force-recreate -d
docker-compose logs -f --tail=10

Open in Browser

http://127.0.0.1:8080

Login with Administrator and 123

Start in developer mode

Start container in dev-mode:

docker-compose -f docker-compose-dev.yml up -d
docker-compose -f docker-compose-dev.yml logs -f --tail=10

Customization

Best practice for adding custom apps is building an individual child image which inherits from this image. One basic example can be found under examples/customize-image/

Links

inspired by https://github.com/frappe/frappe_docker

Docker Compose https://docs.docker.com/compose/install/

erpnext-docker's People

Contributors

bborbe avatar loehnertz avatar mlodev avatar mlorenzsm avatar ttacke avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

erpnext-docker's Issues

localhost:8080 404s

Sometimes when I run docker-compose up and hit localhost:8080, I get the login form as expected, but sometimes I only get 404s with nothing in logs. I haven't been able to yet isolate why it works sometimes but not others.

Docker-compose build error on Ubuntu 18.04 LTS

Heyo, I tried today to build the docker-compose.yml file, but it resulted in this error. Would be nice, if you could have a look on it. Thanks for this project anyways.

docker-compose build erpnext
Building erpnext
[+] Building 0.8s (3/3) FINISHED
 => [internal] load build definition from Dockerfile                                           0.2s
 => => transferring dockerfile: 2.79kB                                                         0.0s
 => [internal] load .dockerignore                                                              0.2s
 => => transferring context: 2B                                                                0.0s
 => ERROR [internal] load metadata for docker.io/library/ubuntu:18.04                          0.4s
------
 > [internal] load metadata for docker.io/library/ubuntu:18.04:
------
Dockerfile:1
--------------------
   1 | >>> FROM ubuntu:18.04
   2 |
   3 |     LABEL maintainer="//SEIBERT/MEDIA GmbH  <[email protected]>"
--------------------
ERROR: failed to solve: ubuntu:18.04: error getting credentials - err: exit status 1, out: `GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.freedesktop.secrets was not provided by any .service files`

Error in docker-compose pull

manifest for quay.io/seibertmedia/erpnext:latest is not found.
I edited my docker-compose.yml file to quay.io/seibertmedia/erpnext:'master' since there is no 'latest' version.

Please correct this on this master version as well so it will be fine for future installs.

Errors during docker-compose up

How to reproduce

git clone https://github.com/seibert-media/erpnext-docker
cd erpnext-docker
docker-compose build
docker-compose up

Errors

erpnext           | install erpnext app
erpnext           | 
erpnext           | Installing erpnext...
Updating DocTypes for erpnext       : [=======                                 ]Traceback (most recent call last):
erpnext           |   File "/home/frappe/bench-repo/apps/frappe/frappe/modules/utils.py", line 185, in load_doctype_module
erpnext           |     doctype_python_modules[key] = frappe.get_module(module_name)
erpnext           |   File "/home/frappe/bench-repo/apps/frappe/frappe/__init__.py", line 798, in get_module
erpnext           |     return importlib.import_module(modulename)
erpnext           |   File "/home/frappe/bench-repo/env/lib/python3.6/importlib/__init__.py", line 126, in import_module
erpnext           |     return _bootstrap._gcd_import(name[level:], package, level)
erpnext           |   File "<frozen importlib._bootstrap>", line 994, in _gcd_import
erpnext           |   File "<frozen importlib._bootstrap>", line 971, in _find_and_load
erpnext           |   File "<frozen importlib._bootstrap>", line 941, in _find_and_load_unlocked
erpnext           |   File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
erpnext           |   File "<frozen importlib._bootstrap>", line 994, in _gcd_import
erpnext           |   File "<frozen importlib._bootstrap>", line 971, in _find_and_load
erpnext           |   File "<frozen importlib._bootstrap>", line 953, in _find_and_load_unlocked
erpnext           | ModuleNotFoundError: No module named 'frappe.core.doctype.notification'
erpnext           | 
erpnext           | During handling of the above exception, another exception occurred:
erpnext           | 
erpnext           | Traceback (most recent call last):
erpnext           |   File "/usr/lib/python3.6/runpy.py", line 193, in _run_module_as_main
erpnext           |     "__main__", mod_spec)
erpnext           |   File "/usr/lib/python3.6/runpy.py", line 85, in _run_code
erpnext           |     exec(code, run_globals)
erpnext           |   File "/home/frappe/bench-repo/apps/frappe/frappe/utils/bench_helper.py", line 97, in <module>
erpnext           |     main()
erpnext           |   File "/home/frappe/bench-repo/apps/frappe/frappe/utils/bench_helper.py", line 18, in main
erpnext           |     click.Group(commands=commands)(prog_name='bench')
erpnext           |   File "/home/frappe/bench-repo/env/lib/python3.6/site-packages/click/core.py", line 764, in __call__
erpnext           |     return self.main(*args, **kwargs)
erpnext           |   File "/home/frappe/bench-repo/env/lib/python3.6/site-packages/click/core.py", line 717, in main
erpnext           |     rv = self.invoke(ctx)
erpnext           |   File "/home/frappe/bench-repo/env/lib/python3.6/site-packages/click/core.py", line 1137, in invoke
erpnext           |     return _process_result(sub_ctx.command.invoke(sub_ctx))
erpnext           |   File "/home/frappe/bench-repo/env/lib/python3.6/site-packages/click/core.py", line 1137, in invoke
erpnext           |     return _process_result(sub_ctx.command.invoke(sub_ctx))
erpnext           |   File "/home/frappe/bench-repo/env/lib/python3.6/site-packages/click/core.py", line 956, in invoke
erpnext           |     return ctx.invoke(self.callback, **ctx.params)
erpnext           |   File "/home/frappe/bench-repo/env/lib/python3.6/site-packages/click/core.py", line 555, in invoke
erpnext           |     return callback(*args, **kwargs)
erpnext           |   File "/home/frappe/bench-repo/env/lib/python3.6/site-packages/click/decorators.py", line 17, in new_func
erpnext           |     return f(get_current_context(), *args, **kwargs)
erpnext           |   File "/home/frappe/bench-repo/apps/frappe/frappe/commands/__init__.py", line 25, in _func
erpnext           |     ret = f(frappe._dict(ctx.obj), *args, **kwargs)
erpnext           |   File "/home/frappe/bench-repo/apps/frappe/frappe/commands/site.py", line 168, in install_app
erpnext           |     _install_app(app, verbose=context.verbose)
erpnext           |   File "/home/frappe/bench-repo/apps/frappe/frappe/installer.py", line 145, in install_app
erpnext           |     sync_for(name, force=True, sync_everything=True, verbose=verbose, reset_permissions=True)
erpnext           |   File "/home/frappe/bench-repo/apps/frappe/frappe/model/sync.py", line 56, in sync_for
erpnext           |     reset_permissions=reset_permissions, for_sync=True)
erpnext           |   File "/home/frappe/bench-repo/apps/frappe/frappe/modules/import_file.py", line 65, in import_file_by_path
erpnext           |     ignore_version=ignore_version, reset_permissions=reset_permissions)
erpnext           |   File "/home/frappe/bench-repo/apps/frappe/frappe/modules/import_file.py", line 100, in import_doc
erpnext           |     doc = frappe.get_doc(docdict)
erpnext           |   File "/home/frappe/bench-repo/apps/frappe/frappe/__init__.py", line 724, in get_doc
erpnext           |     doc = frappe.model.document.get_doc(*args, **kwargs)
erpnext           |   File "/home/frappe/bench-repo/apps/frappe/frappe/model/document.py", line 67, in get_doc
erpnext           |     controller = get_controller(doctype)
erpnext           |   File "/home/frappe/bench-repo/apps/frappe/frappe/model/base_document.py", line 36, in get_controller
erpnext           |     module = load_doctype_module(doctype, module_name)
erpnext           |   File "/home/frappe/bench-repo/apps/frappe/frappe/modules/utils.py", line 187, in load_doctype_module
erpnext           |     raise ImportError('Module import failed for {0} ({1})'.format(doctype, module_name + ' Error: ' + str(e)))
erpnext           | ImportError: Module import failed for Notification (frappe.core.doctype.notification.notification Error: No module named 'frappe.core.doctype.notification')

erpnext           | Executing frappe.patches.v11_0.rename_standard_reply_to_email_template in site1.local (1bd3e0294da19198)
erpnext           | Traceback (most recent call last):
erpnext           |   File "/usr/lib/python3.6/runpy.py", line 193, in _run_module_as_main
erpnext           |     "__main__", mod_spec)
erpnext           |   File "/usr/lib/python3.6/runpy.py", line 85, in _run_code
erpnext           |     exec(code, run_globals)
erpnext           |   File "/home/frappe/bench-repo/apps/frappe/frappe/utils/bench_helper.py", line 97, in <module>
erpnext           |     main()
erpnext           |   File "/home/frappe/bench-repo/apps/frappe/frappe/utils/bench_helper.py", line 18, in main
erpnext           |     click.Group(commands=commands)(prog_name='bench')
erpnext           |   File "/home/frappe/bench-repo/env/lib/python3.6/site-packages/click/core.py", line 764, in __call__
erpnext           |     return self.main(*args, **kwargs)
erpnext           |   File "/home/frappe/bench-repo/env/lib/python3.6/site-packages/click/core.py", line 717, in main
erpnext           |     rv = self.invoke(ctx)
erpnext           |   File "/home/frappe/bench-repo/env/lib/python3.6/site-packages/click/core.py", line 1137, in invoke
erpnext           |     return _process_result(sub_ctx.command.invoke(sub_ctx))
erpnext           |   File "/home/frappe/bench-repo/env/lib/python3.6/site-packages/click/core.py", line 1137, in invoke
erpnext           |     return _process_result(sub_ctx.command.invoke(sub_ctx))
erpnext           |   File "/home/frappe/bench-repo/env/lib/python3.6/site-packages/click/core.py", line 956, in invoke
erpnext           |     return ctx.invoke(self.callback, **ctx.params)
erpnext           |   File "/home/frappe/bench-repo/env/lib/python3.6/site-packages/click/core.py", line 555, in invoke
erpnext           |     return callback(*args, **kwargs)
erpnext           |   File "/home/frappe/bench-repo/env/lib/python3.6/site-packages/click/decorators.py", line 17, in new_func
erpnext           |     return f(get_current_context(), *args, **kwargs)
erpnext           |   File "/home/frappe/bench-repo/apps/frappe/frappe/commands/__init__.py", line 25, in _func
erpnext           |     ret = f(frappe._dict(ctx.obj), *args, **kwargs)
erpnext           |   File "/home/frappe/bench-repo/apps/frappe/frappe/commands/site.py", line 227, in migrate
erpnext           |     migrate(context.verbose, rebuild_website=rebuild_website)
erpnext           |   File "/home/frappe/bench-repo/apps/frappe/frappe/migrate.py", line 38, in migrate
erpnext           |     frappe.modules.patch_handler.run_all()
erpnext           |   File "/home/frappe/bench-repo/apps/frappe/frappe/modules/patch_handler.py", line 29, in run_all
erpnext           |     if not run_single(patchmodule = patch):
erpnext           |   File "/home/frappe/bench-repo/apps/frappe/frappe/modules/patch_handler.py", line 63, in run_single
erpnext           |     return execute_patch(patchmodule, method, methodargs)
erpnext           |   File "/home/frappe/bench-repo/apps/frappe/frappe/modules/patch_handler.py", line 83, in execute_patch
erpnext           |     frappe.get_attr(patchmodule.split()[0] + ".execute")()
erpnext           |   File "/home/frappe/bench-repo/apps/frappe/frappe/patches/v11_0/rename_standard_reply_to_email_template.py", line 7, in execute
erpnext           |     rename_doc('DocType', 'Standard Reply', 'Email Template')
erpnext           |   File "/home/frappe/bench-repo/apps/frappe/frappe/model/rename_doc.py", line 47, in rename_doc
erpnext           |     update_link_field_values(link_fields, old, new, doctype)
erpnext           |   File "/home/frappe/bench-repo/apps/frappe/frappe/model/rename_doc.py", line 199, in update_link_field_values
erpnext           |     single_doc = frappe.get_doc(field['parent'])
erpnext           |   File "/home/frappe/bench-repo/apps/frappe/frappe/__init__.py", line 724, in get_doc
erpnext           |     doc = frappe.model.document.get_doc(*args, **kwargs)
erpnext           |   File "/home/frappe/bench-repo/apps/frappe/frappe/model/document.py", line 69, in get_doc
erpnext           |     return controller(*args, **kwargs)
erpnext           |   File "/home/frappe/bench-repo/apps/frappe/frappe/model/document.py", line 104, in __init__
erpnext           |     self.load_from_db()
erpnext           |   File "/home/frappe/bench-repo/apps/frappe/frappe/model/document.py", line 130, in load_from_db
erpnext           |     single_doc = frappe.new_doc(self.doctype).as_dict()
erpnext           |   File "/home/frappe/bench-repo/apps/frappe/frappe/__init__.py", line 658, in new_doc
erpnext           |     return get_new_doc(doctype, parent_doc, parentfield, as_dict=as_dict)
erpnext           |   File "/home/frappe/bench-repo/apps/frappe/frappe/model/create_new.py", line 21, in get_new_doc
erpnext           |     frappe.local.new_doc_templates[doctype] = make_new_doc(doctype)
erpnext           |   File "/home/frappe/bench-repo/apps/frappe/frappe/model/create_new.py", line 42, in make_new_doc
erpnext           |     set_user_and_static_default_values(doc)
erpnext           |   File "/home/frappe/bench-repo/apps/frappe/frappe/model/create_new.py", line 62, in set_user_and_static_default_values
erpnext           |     user_default_value = get_user_default_value(df, defaults, doctype_user_permissions, allowed_records)
erpnext           |   File "/home/frappe/bench-repo/apps/frappe/frappe/model/create_new.py", line 77, in get_user_default_value
erpnext           |     if frappe.get_meta(df.options).document_type=="Setup" and len(allowed_records)==1:
erpnext           |   File "/home/frappe/bench-repo/apps/frappe/frappe/__init__.py", line 749, in get_meta
erpnext           |     return frappe.model.meta.get_meta(doctype, cached=cached)
erpnext           |   File "/home/frappe/bench-repo/apps/frappe/frappe/model/meta.py", line 38, in get_meta
erpnext           |     meta = Meta(doctype)
erpnext           |   File "/home/frappe/bench-repo/apps/frappe/frappe/model/meta.py", line 85, in __init__
erpnext           |     super(Meta, self).__init__("DocType", doctype)
erpnext           |   File "/home/frappe/bench-repo/apps/frappe/frappe/model/document.py", line 104, in __init__
erpnext           |     self.load_from_db()
erpnext           |   File "/home/frappe/bench-repo/apps/frappe/frappe/model/meta.py", line 90, in load_from_db
erpnext           |     super(Meta, self).load_from_db()
erpnext           |   File "/home/frappe/bench-repo/apps/frappe/frappe/model/document.py", line 141, in load_from_db
erpnext           |     frappe.throw(_("{0} {1} not found").format(_(self.doctype), self.name), frappe.DoesNotExistError)
erpnext           |   File "/home/frappe/bench-repo/apps/frappe/frappe/__init__.py", line 353, in throw
erpnext           |     msgprint(msg, raise_exception=exc, title=title, indicator='red')
erpnext           |   File "/home/frappe/bench-repo/apps/frappe/frappe/__init__.py", line 339, in msgprint
erpnext           |     _raise_exception()
erpnext           |   File "/home/frappe/bench-repo/apps/frappe/frappe/__init__.py", line 312, in _raise_exception
erpnext           |     raise raise_exception(msg)
erpnext           | frappe.exceptions.DoesNotExistError: DocType Company not found
mariadb           | 2019-04-02 21:35:44 11 [Warning] Aborted connection 11 to db: '1bd3e0294da19198' user: '1bd3e0294da19198' host: 'erpnext.erpnext-docker_default' (Got an error reading communication packets)

After the above, http://localhost:8080/ responds with HTTP 503 / "Aktualisierung läuft"

is this still pointing at the 'master' branch?

from the Dockerfile it looks as if all this is pointing to the master branch of frappe/ERPNext.

Are there any plans to transform this to be sustainable for the new version-11 version-12 branch architecture some time?

unknown: Tag latest was deleted or has expired

docker-compose pull
Pulling mariadb ... done
Pulling redis-cache ... done
Pulling redis-queue ... done
Pulling redis-socketio ... done
Pulling erpnext ... error

ERROR: for erpnext unknown: Tag latest was deleted or has expired. To pull, revive via time machine
ERROR: unknown: Tag latest was deleted or has expired. To pull, revive via time machine

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.