Re: Proposal for changes in official Docker image

Поиск
Список
Период
Сортировка
От Dave Page
Тема Re: Proposal for changes in official Docker image
Дата
Msg-id CA+OCxoy0i2Q8V4ecSeis73Y_7_htfsEtMFxgtFNMnPcDEi=80w@mail.gmail.com
обсуждение исходный текст
Ответ на Re: Proposal for changes in official Docker image  (Dave Page <dpage@pgadmin.org>)
Ответы Re: Proposal for changes in official Docker image  (Максим Кольцов <kolmax94@gmail.com>)
Список pgadmin-hackers
Hi

On Mon, Mar 19, 2018 at 11:19 AM, Dave Page <dpage@pgadmin.org> wrote:
Hi

On Fri, Mar 16, 2018 at 8:52 PM, Максим Кольцов <kolmax94@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

В списке pgadmin-hackers по дате отправления:

Предыдущее
От: Dave Page
Дата:
Сообщение: pgAdmin 4 commit: Use a common function for sever setup in thetestsuit
Следующее
От: Joao De Almeida Pereira
Дата:
Сообщение: [pgadmin4][patch] Update karma to 2.0 #3222