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:
-- HiOn 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
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