joshuabach/gnucash-web

Can't running in docker

Opened this issue · 0 comments

I try to use postgres and mariadb in compose.yaml, but none of them can work.
This is my compose.yaml with mariadb:
mysql
and when I'm login with username and password of database, I got 500 Internal error. the log of container:

gnucash  | [2024-11-12 05:19:55 +0000] [1] [INFO] Starting gunicorn 23.0.0
gnucash  | [2024-11-12 05:19:55 +0000] [1] [INFO] Listening at: http://0.0.0.0:8000 (1)
gnucash  | [2024-11-12 05:19:55 +0000] [1] [INFO] Using worker: sync
gnucash  | [2024-11-12 05:19:55 +0000] [7] [INFO] Booting worker with pid: 7
gnucash  | /usr/local/lib/python3.11/site-packages/tzlocal/unix.py:193: UserWarning: Can not find any timezone configuration, defaulting to UTC.
gnucash  |   warnings.warn("Can not find any timezone configuration, defaulting to UTC.")
gnucash  | /srv/encrypted_session/__init__.py:42: SyntaxWarning: "is not" with a literal. Did you mean "!="?
gnucash  |   if (len (itup) is not 4):
gnucash  | [2024-11-12 05:20:20,671] ERROR in app: Exception on /auth/login [POST]
gnucash  | Traceback (most recent call last):
gnucash  |   File "/usr/local/lib/python3.11/site-packages/flask/app.py", line 2529, in wsgi_app
gnucash  |     response = self.full_dispatch_request()
gnucash  |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
gnucash  |   File "/usr/local/lib/python3.11/site-packages/flask/app.py", line 1825, in full_dispatch_request
gnucash  |     rv = self.handle_user_exception(e)
gnucash  |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
gnucash  |   File "/usr/local/lib/python3.11/site-packages/flask/app.py", line 1823, in full_dispatch_request
gnucash  |     rv = self.dispatch_request()
gnucash  |          ^^^^^^^^^^^^^^^^^^^^^^^
gnucash  |   File "/usr/local/lib/python3.11/site-packages/flask/app.py", line 1799, in dispatch_request
gnucash  |     return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)
gnucash  |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
gnucash  |   File "/srv/gnucash_web/auth.py", line 72, in login
gnucash  |     authenticate(request.form['username'], request.form['password'])
gnucash  |   File "/srv/gnucash_web/auth.py", line 31, in authenticate
gnucash  |     with open_book(uri_conn=app.config.DB_URI(username, password),
gnucash  |   File "/usr/local/lib/python3.11/contextlib.py", line 137, in __enter__
gnucash  |     return next(self.gen)
gnucash  |            ^^^^^^^^^^^^^^
gnucash  |   File "/srv/gnucash_web/utils/gnucash.py", line 66, in open_book
gnucash  |     with piecash.open_book(*args, **kwargs) as book:
gnucash  |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
gnucash  |   File "/usr/local/lib/python3.11/site-packages/piecash/core/session.py", line 408, in open_book
gnucash  |     if check_exists and not database_exists(uri_conn):
gnucash  |                             ^^^^^^^^^^^^^^^^^^^^^^^^^
gnucash  |   File "/usr/local/lib/python3.11/site-packages/sqlalchemy_utils/functions/database.py", line 495, in database_exists
gnucash  |     engine = sa.create_engine(url)
gnucash  |              ^^^^^^^^^^^^^^^^^^^^^
gnucash  |   File "<string>", line 2, in create_engine
gnucash  |   File "/usr/local/lib/python3.11/site-packages/sqlalchemy/util/deprecations.py", line 375, in warned
gnucash  |     return fn(*args, **kwargs)
gnucash  |            ^^^^^^^^^^^^^^^^^^^
gnucash  |   File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/create.py", line 544, in create_engine
gnucash  |     dbapi = dialect_cls.dbapi(**dbapi_args)
gnucash  |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
gnucash  |   File "/usr/local/lib/python3.11/site-packages/sqlalchemy/dialects/mysql/mysqldb.py", line 150, in dbapi
gnucash  |     return __import__("MySQLdb")
gnucash  |            ^^^^^^^^^^^^^^^^^^^^^
gnucash  |   File "/usr/local/lib/python3.11/site-packages/MySQLdb/__init__.py", line 17, in <module>
gnucash  |     from . import _mysql
gnucash  | ImportError: Error loading shared library libmariadb.so.3: No such file or directory (needed by /usr/local/lib/python3.11/site-packages/MySQLdb/_mysql.cpython-311-x86_64-linux-musl.so)

END OF LINE

When I use postgres, the compose.yaml:
postgres
When I'm login, I got same 500 Internal error , and the log of container :

gnucash  | [2024-11-12 05:33:28 +0000] [1] [INFO] Starting gunicorn 23.0.0
gnucash  | [2024-11-12 05:33:28 +0000] [1] [INFO] Listening at: http://0.0.0.0:8000 (1)
gnucash  | [2024-11-12 05:33:28 +0000] [1] [INFO] Using worker: sync
gnucash  | [2024-11-12 05:33:28 +0000] [7] [INFO] Booting worker with pid: 7
gnucash  | /usr/local/lib/python3.11/site-packages/tzlocal/unix.py:193: UserWarning: Can not find any timezone configuration, defaulting to UTC.
gnucash  |   warnings.warn("Can not find any timezone configuration, defaulting to UTC.")
gnucash  | /srv/encrypted_session/__init__.py:42: SyntaxWarning: "is not" with a literal. Did you mean "!="?
gnucash  |   if (len (itup) is not 4):
gnucash  | [2024-11-12 05:33:51,230] ERROR in app: Exception on /auth/login [POST]
gnucash  | Traceback (most recent call last):
gnucash  |   File "/usr/local/lib/python3.11/site-packages/flask/app.py", line 2529, in wsgi_app
gnucash  |     response = self.full_dispatch_request()
gnucash  |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
gnucash  |   File "/usr/local/lib/python3.11/site-packages/flask/app.py", line 1825, in full_dispatch_request
gnucash  |     rv = self.handle_user_exception(e)
gnucash  |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
gnucash  |   File "/usr/local/lib/python3.11/site-packages/flask/app.py", line 1823, in full_dispatch_request
gnucash  |     rv = self.dispatch_request()
gnucash  |          ^^^^^^^^^^^^^^^^^^^^^^^
gnucash  |   File "/usr/local/lib/python3.11/site-packages/flask/app.py", line 1799, in dispatch_request
gnucash  |     return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)
gnucash  |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
gnucash  |   File "/srv/gnucash_web/auth.py", line 72, in login
gnucash  |     authenticate(request.form['username'], request.form['password'])
gnucash  |   File "/srv/gnucash_web/auth.py", line 31, in authenticate
gnucash  |     with open_book(uri_conn=app.config.DB_URI(username, password),
gnucash  |   File "/usr/local/lib/python3.11/contextlib.py", line 137, in __enter__
gnucash  |     return next(self.gen)
gnucash  |            ^^^^^^^^^^^^^^
gnucash  |   File "/srv/gnucash_web/utils/gnucash.py", line 66, in open_book
gnucash  |     with piecash.open_book(*args, **kwargs) as book:
gnucash  |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
gnucash  |   File "/usr/local/lib/python3.11/site-packages/piecash/core/session.py", line 408, in open_book
gnucash  |     if check_exists and not database_exists(uri_conn):
gnucash  |                             ^^^^^^^^^^^^^^^^^^^^^^^^^
gnucash  |   File "/usr/local/lib/python3.11/site-packages/sqlalchemy_utils/functions/database.py", line 479, in database_exists
gnucash  |     dialect_name = url.get_dialect().name
gnucash  |                    ^^^^^^^^^^^^^^^^^
gnucash  |   File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/url.py", line 680, in get_dialect
gnucash  |     entrypoint = self._get_entrypoint()
gnucash  |                  ^^^^^^^^^^^^^^^^^^^^^^
gnucash  |   File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/url.py", line 662, in _get_entrypoint
gnucash  |     cls = registry.load(name)
gnucash  |           ^^^^^^^^^^^^^^^^^^^
gnucash  |   File "/usr/local/lib/python3.11/site-packages/sqlalchemy/util/langhelpers.py", line 343, in load
gnucash  |     raise exc.NoSuchModuleError(
gnucash  | sqlalchemy.exc.NoSuchModuleError: Can't load plugin: sqlalchemy.dialects:postgres

END OF LINE

I don't know where is wrong, could anyone tell me? Thanks!