Hi On Mon, Mar 19, 2018 at 11:19 AM, Dave Page <dp...@pgadmin.org> wrote:
> Hi > > On Fri, Mar 16, 2018 at 8:52 PM, Максим Кольцов <kolma...@gmail.com> > wrote: >> >> >> I've switched to Gunicorn, adding SSL support. It has the same >> interface as the original container: PGADMIN_ENABLE_TLS, >> /certs/server.key and /certs/server.cert. >> I also incorporated building of sphinx manual in Dockerfile, so now >> the image should be complete. >> > > Nice! > > >> >> I noticed that I can't use gunicorn forking worker with pgadmin4, this >> is probably caused by session implementation, but I'm not sure. You >> can investigate this by using e.g. `-w 4` in entrypoint.sh, otherwise >> it's working fine with single-process threaded worker. >> > > This is expected, and the reason why is explained here: > https://www.pgadmin.org/docs/pgadmin4/2.x/server_ > deployment.html#requirements > > >> >> I will make my work into a patch and send it to the mail list soon. >> Meanwhile, it'd be great if you tested the updated image at >> https://hub.docker.com/r/maksbotan/pgadmin4/ > > > I'll try to take a look later in the week (busy prepping for a release at > the moment). > I actually found some time for this today. It's looking pretty good - TLS vs. non-TLS seems to work well. The couple of things I did notice were: - PGADMIN_SERVER_NAME doesn't appear to be supported. This was added at user request, for security reasons (to help ensure the connection is going where expected). I'm not entirely convinced of the value of that, but if it's fairly painless to add, it may well be worth it. - If you don't map /var/lib/pgadmin (in my case, to a directory already containing a config), then I was seeing the following error. I would expect it to init within the container if the config directory isn't mapped: piranha:web dpage$ docker logs affectionate_spence sh: -z: unknown operand NOTE: Configuring authentication for SERVER mode. Enter the email address and password to use for the initial pgAdmin user account: Traceback (most recent call last): File "run_pgadmin.py", line 4, in <module> from pgAdmin4 import app File "/pgadmin4/pgAdmin4.py", line 67, in <module> app = create_app() File "/pgadmin4/pgadmin/__init__.py", line 306, in create_app db_upgrade(app) File "/pgadmin4/pgadmin/setup/db_upgrade.py", line 25, in db_upgrade flask_migrate.upgrade(migration_folder) File "/usr/local/lib/python3.6/site-packages/flask_migrate/__init__.py", line 244, in upgrade command.upgrade(config, revision, sql=sql, tag=tag) File "/usr/local/lib/python3.6/site-packages/alembic/command.py", line 254, in upgrade script.run_env() File "/usr/local/lib/python3.6/site-packages/alembic/script/base.py", line 427, in run_env util.load_python_file(self.dir, 'env.py') File "/usr/local/lib/python3.6/site-packages/alembic/util/pyfiles.py", line 81, in load_python_file module = load_module_py(module_id, path) File "/usr/local/lib/python3.6/site-packages/alembic/util/compat.py", line 83, in load_module_py spec.loader.exec_module(module) File "/pgadmin4/pgadmin/setup/../../migrations/env.py", line 94, in <module> run_migrations_online() File "/pgadmin4/pgadmin/setup/../../migrations/env.py", line 87, in run_migrations_online context.run_migrations() File "<string>", line 8, in run_migrations File "/usr/local/lib/python3.6/site-packages/alembic/runtime/environment.py", line 836, in run_migrations self.get_context().run_migrations(**kw) File "/usr/local/lib/python3.6/site-packages/alembic/runtime/migration.py", line 330, in run_migrations step.migration_fn(**kw) File "/pgadmin4/migrations/versions/fdc58d9bd449_.py", line 112, in upgrade email, password = user_info() File "/pgadmin4/pgadmin/setup/user_info.py", line 55, in user_info email = input("Email address: ") EOFError: EOF when reading a line [2018-03-19 14:50:59 +0000] [1] [INFO] Starting gunicorn 19.7.1 [2018-03-19 14:50:59 +0000] [1] [INFO] Listening at: http://0.0.0.0:8080 (1) [2018-03-19 14:50:59 +0000] [1] [INFO] Using worker: threads [2018-03-19 14:50:59 +0000] [14] [INFO] Booting worker with pid: 14 [2018-03-19 14:50:59 +0000] [14] [ERROR] Exception in worker process Traceback (most recent call last): File "/usr/local/lib/python3.6/site-packages/gunicorn/arbiter.py", line 578, in spawn_worker worker.init_process() File "/usr/local/lib/python3.6/site-packages/gunicorn/workers/gthread.py", line 109, in init_process super(ThreadWorker, self).init_process() File "/usr/local/lib/python3.6/site-packages/gunicorn/workers/base.py", line 126, in init_process self.load_wsgi() File "/usr/local/lib/python3.6/site-packages/gunicorn/workers/base.py", line 135, in load_wsgi self.wsgi = self.app.wsgi() File "/usr/local/lib/python3.6/site-packages/gunicorn/app/base.py", line 67, in wsgi self.callable = self.load() File "/usr/local/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 65, in load return self.load_wsgiapp() File "/usr/local/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 52, in load_wsgiapp return util.import_app(self.app_uri) File "/usr/local/lib/python3.6/site-packages/gunicorn/util.py", line 352, in import_app __import__(module) File "/pgadmin4/run_pgadmin.py", line 4, in <module> from pgAdmin4 import app File "/pgadmin4/pgAdmin4.py", line 67, in <module> app = create_app() File "/pgadmin4/pgadmin/__init__.py", line 309, in create_app schema_version = version.value AttributeError: 'NoneType' object has no attribute 'value' [2018-03-19 14:50:59 +0000] [14] [INFO] Worker exiting (pid: 14) [2018-03-19 14:50:59 +0000] [1] [INFO] Shutting down: Master [2018-03-19 14:50:59 +0000] [1] [INFO] Reason: Worker failed to boot. Thanks! -- Dave Page Blog: http://pgsnake.blogspot.com Twitter: @pgsnake EnterpriseDB UK: http://www.enterprisedb.com The Enterprise PostgreSQL Company