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

Reply via email to