2018-03-19 17:55 GMT+03:00 Dave Page <dp...@pgadmin.org>: > 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.
Can you explain the meaning of this option, or maybe give me a link to original feature request? As far as I understand, Apache uses this to identify virtual hosts based on HTTP Host header, but there are no virtual hosts in Gunicorn, so no need for this. > - 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. Yeah, that was shell quoting issue, should be fixed. I will send a patch for review later this evening. > > Thanks! > > -- > Dave Page > Blog: http://pgsnake.blogspot.com > Twitter: @pgsnake > > EnterpriseDB UK: http://www.enterprisedb.com > The Enterprise PostgreSQL Company