[Dachs-support] error in GAVO repository?
Markus Demleitner
msdemlei at ari.uni-heidelberg.de
Wed Apr 7 15:04:27 CEST 2021
Hi Maria,
On Wed, Apr 07, 2021 at 01:08:27PM +0200, Mariangeles Mendoza wrote:
> Following Markus' guidelines, I changed the Dockerfile for the one copied
> below.
> When I lift the dachs services, I get the following messages in console:
>
> -----------------------------------------------------------------
> services_vo | *** Error: Oops. Unhandled exception
> OperationalError.
> services_vo |
> services_vo | Exception payload: FATAL: role "root" does not exist
> services_vo |
> services_vo | Updating meta for import
> --------------------------------------------------------
The "role 'root' does not exist" presumably is the result of
gavo init -d 'host=services_db dbname=db'
in your startup.sh -- it simply means that DaCHS cannot create its
environment on services_db based on the DSN you're giving it. It
doesn't need to do that in your special setup, though, because it
seems you're using a "pre-owned" DB container with all that DaCHS
needs. And you're giving DaCHS the for that credentials in your COPY
commands.
This is... daring for many reasons; in particular re-building the DB
container will be tricky. If you're hell-bent on using Docker
(rather than using a proper VM, which I strongly recommend for
longer-running services), I'd again recommend looking at Carlos'
two-container docker setup (see below). Perhaps, Carlos, would you
like to comment here?
> But when I look in the browser: http://localhost:8080.
> There is no reference to my tables or services.
> Only it appears:
>
> '''
> myDATA
>
> Please check out our site help.
> ''''
>
> and not like before (with beta version):
> '''
> myDATA
>
> "In addition to the services listed below, we offer access to numerous
> tables using TAP or
> form-based ADQL".
>
> Please check out our site help.
> ''''
The reference to TAP and ADQL is indeed no longer in the default root
template, because it was inappropriate for many sites. If you want
it (or something in that vein) back, check out the templating guide
and in particular its chapter on overriding the root template
(http://docs.g-vo.org/DaCHS/templating.html#the-root-template).
But that your published services are missing is a clear indication of
an actual problem.
Here's my reconstruction of what actually happened:
> startup.sh
> -------------------------------------------------------
> gavo init -d 'host=services_db dbname=db'
This fails as above, as root can't access the DB on services_db; but
that doesn't hurt because *something* has already brought up DaCHS,
presumably the package itself, though I cannot see where you install
it in your dockerfile.
> gavo imp -m myDATA/vo.rd
Again, the output above above would indicate that that's run, too.
> gavo pub myDATA/vo.rd
This one probably runs, too, but the server that is already up has
already generated its front page without this.
dachs pub tries to tell a running server to discard cached front
pages, but it can only do that if theres a [web]adminpasswd set in
/etc/gavo.rc, which you probably don't have. Hence, you'd be seeing
the old front page without services.
> gavo serve start -f
That's the weak point of my theory: this would have to error out
("*** Error: Someone already listens on the configured port 8080.").
You're sure you're not seeing this?
> Is there something wrong?
Well... basic rule of thumb: If you find yourself using pip on proper
computers and outside of virtual environments, generally yes :-)
More seriously: As said above, copying around pieces of configuration
is at least a rather fragile thing, and since I can't see where you
get the actual DaCHS code, I can't point at a very specific point
where things go wrong.
What I've not worked out yet is why you're not simply installing the
package, preferably, as I said, into an actual VM, which simplifies
installation, maintenance, and debugging greatly.
But if that's *really* not an option for whatever reason, can you
have another look at Carlos' Dockerfiles from
https://github.com/gavodachs/docker-dachs?
I think it'll help everyone if we try to fix any wrinkles that are
still in those rather than roll-one's-own Docker thing -- in the end
glueing together database, file system, and VO server is a
non-trivial effort, and we should see we don't repeat it more often
than absolutely necessary.
Thanks,
Markus
More information about the Dachs-support
mailing list