Basex Docker Container: How to Control Options
Sunday, 26 March 2017 · 12 messages · last reply 5 Apr 2017
EK
Eliot Kimber26 Mar 2017 13:40 #
I’m trying to set up a Docker container with my own Web app using the latest official containers as a base and following the instructions in the latest BaseX docs.
As part of this setup I need to add several additional options.
I also want to include the dba app.
Following the instructions in the docs I’m putting my additional options in /srv/.basex and these take effect. However, if I use the basex/dba image as a base, the other options, such as the custom
REPOPATH and WEBPATH settings do not get used.
It’s not clear to me from looking at the various Dockerfiles how the dba container sets the options and how I can then add to them without overwriting them.
Of course I can duplicate the options in my Dockerfile but it seems like I should be able to add my options additively but I’m not seeing how to do it, so I feel I’m missing something.
In my Dockerfile I have:
COPY basex/dot_basex /srv/.basex
If I don’t include this line then the container otherwise works in that my Web app is there but it requires these additional options in order to function properly. If I include it then the effective options reflect only my changes and not those required for the custom Web apps to work.
Thanks,
Eliot--
Eliot Kimber
http://contrext.com
EK
Eliot Kimber26 Mar 2017 15:29 #
Discovered that if I use
USER root in the Dockerfile I have to then do USER basex before the end so that the container will be running as basex, otherwise it does not start up correctly. I also have to chown the /srv/.basex file to basex otherwise it can’t overwrite it on startup.
Made some progress but something is still not working.
I now have a Dockerfile based on basex/dba that results in a running system with the both the dba and my custom app runnable.
However, if I then add this:
COPY basex/dot_basex /srv/.basex
As before, on startup I get this:
docker run --name linkmgr-test -p 8984:8984 link-manager-test /srv/.basex: Unknown option 'CATFILE'.
/srv/.basex: Unknown option 'DTD'.
/srv/.basex: Unknown option 'SKIPCORRUPT'.
/srv/.basex: Unknown option 'CHOP'.
/srv/.basex: writing new configuration file.
Creating /srv/BaseXWeb/WEB-INF/web.xml
Creating /srv/BaseXWeb/WEB-INF/jetty.xml
I think this Unknown option this is actually an issue with the file itself but I don’t recall what the exact cause and/or solution was.
Cheers,
E.--
Eliot Kimber
http://contrext.com
Quoted text · Eliot Kimber · 1 line
On 3/26/17, 1:40 PM, "Eliot Kimber" <basex-talk-bounces at mailman.uni-konstanz.de on behalf of ekimber at contrext.com> wrote:
I’m trying to set up a Docker container with my own Web app using the latest official containers as a base and following the instructions in the latest BaseX docs.
As part of this setup I need to add several additional options.
I also want to include the dba app.
Following the instructions in the docs I’m putting my additional options in /srv/.basex and these take effect. However, if I use the basex/dba image as a base, the other options, such as the custom
REPOPATH and WEBPATH settings do not get used.
It’s not clear to me from looking at the various Dockerfiles how the dba container sets the options and how I can then add to them without overwriting them.
Of course I can duplicate the options in my Dockerfile but it seems like I should be able to add my options additively but I’m not seeing how to do it, so I feel I’m missing something.
In my Dockerfile I have:
COPY basex/dot_basex /srv/.basex
If I don’t include this line then the container otherwise works in that my Web app is there but it requires these additional options in order to function properly. If I include it then the effective options reflect only my changes and not those required for the custom Web apps to work.
Thanks,
Eliot
--
Eliot Kimber
http://contrext.comEK
Eliot Kimber26 Mar 2017 22:20 #
I found my original mail thread from January 2016:
https://mailman.uni-konstanz.de/pipermail/basex-talk/2016-January/010171.html
Basically I had to append my options to the existing .basex file rather than simply provide a file.
However, that isn’t an option here because there is no existing /srv/.basex file (the place where the file needs to be).
As an experiment I tried doing this:
RUN touch /srv/.basex && \
echo "DTD=true" >> .basex && \
echo "CATFILE=/opt/dita-ot/DITA-OT/catalog-dita.xml" >> .basex && \ echo "SKIPCORRUPT=true" >> .basex && \
echo "CHOP=false" >> .basex && \
echo "DBPATH=/srv/BaseXData" >> .basex && \
echo "REPOPATH=/srv/BaseXRepo" >> .basex && \
echo "WEBPATH=/srv/BaseXWeb" >> .basex && \
chown basex /srv/.basex
RUN echo "/srv/.basex:\n===========" && cat /srv/.basex && echo "======="
And I get this from the build command:
/srv/.basex:
===========
DTD=true
CATFILE=/opt/dita-ot/DITA-OT/catalog-dita.xml
SKIPCORRUPT=true
CHOP=false
DBPATH=/srv/BaseXData
REPOPATH=/srv/BaseXRepo
WEBPATH=/srv/BaseXWeb
=======
When I start up this container I get this:
/srv/.basex: Unknown option 'DTD'.
/srv/.basex: Unknown option 'CATFILE'.
/srv/.basex: Unknown option '
SKIPCORRUPT'.
/srv/.basex: Unknown option 'CHOP'.
/srv/.basex: writing new configuration file.
Note that it’s only complaining about DTD, CATFILE, SKIPCORRUPT, and CHOP, but not DBPATH, REPOPATH, and WEBPATH. I tried reordering things, no difference in result (but the messages reflect the order change).
So it must be something about how these particular options are processed rather than an issue with the .basex file, at least as far as I can see.
Cheers,
Eliot--
Eliot Kimber
http://contrext.com
Quoted text · Eliot Kimber · 1 line
On 3/26/17, 3:29 PM, "Eliot Kimber" <basex-talk-bounces at mailman.uni-konstanz.de on behalf of ekimber at contrext.com> wrote:
Discovered that if I use
USER root in the Dockerfile I have to then do USER basex before the end so that the container will be running as basex, otherwise it does not start up correctly. I also have to chown the /srv/.basex file to basex otherwise it can’t overwrite it on startup.
Made some progress but something is still not working.
I now have a Dockerfile based on basex/dba that results in a running system with the both the dba and my custom app runnable.
However, if I then add this:
COPY basex/dot_basex /srv/.basex
As before, on startup I get this:
docker run --name linkmgr-test -p 8984:8984 link-manager-test /srv/.basex: Unknown option 'CATFILE'.
/srv/.basex: Unknown option 'DTD'.
/srv/.basex: Unknown option 'SKIPCORRUPT'.
/srv/.basex: Unknown option 'CHOP'.
/srv/.basex: writing new configuration file.
Creating /srv/BaseXWeb/WEB-INF/web.xml
Creating /srv/BaseXWeb/WEB-INF/jetty.xml
I think this Unknown option this is actually an issue with the file itself but I don’t recall what the exact cause and/or solution was.
Cheers,
E.
--
Eliot Kimber
http://contrext.comQuoted text · Eliot Kimber · 1 line
On 3/26/17, 1:40 PM, "Eliot Kimber" <basex-talk-bounces at mailman.uni-konstanz.de on behalf of ekimber at contrext.com> wrote:
I’m trying to set up a Docker container with my own Web app using the latest official containers as a base and following the instructions in the latest BaseX docs.
As part of this setup I need to add several additional options.
I also want to include the dba app.
Following the instructions in the docs I’m putting my additional options in /srv/.basex and these take effect. However, if I use the basex/dba image as a base, the other options, such as the custom
REPOPATH and WEBPATH settings do not get used.
It’s not clear to me from looking at the various Dockerfiles how the dba container sets the options and how I can then add to them without overwriting them.
Of course I can duplicate the options in my Dockerfile but it seems like I should be able to add my options additively but I’m not seeing how to do it, so I feel I’m missing something.
In my Dockerfile I have:
COPY basex/dot_basex /srv/.basex
If I don’t include this line then the container otherwise works in that my Web app is there but it requires these additional options in order to function properly. If I include it then the effective options reflect only my changes and not those required for the custom Web apps to work.
Thanks,
Eliot
--
Eliot Kimber
http://contrext.comEK
Eliot Kimber1 Apr 2017 22:23 #
I dug into the code and I think this is a code bug but I don’t understand the overall flow well enough to know where the bug is, but I suspect it’s a simple change.
If I debug the BasexGUI class and have a ~/.basex file that includes CATFILE=foo it will fail with an unknown option error because the option class being used is StaticOptions and StaticOptions does not define CATFILE as an option.
The CATFILE option, along with a few others, is defined on MainOptions:
private static final Option<?>[] INHERIT = { CHOP, INTPARSE, STRIPNS, DTD, XINCLUDE, CATFILE };Looking at BaseXHTTP it uses HTTPContext which only uses StaticOptions, not MainOptions, which means it can never allow the INHERIT options.
So something must have changed from 8.1 ish to now to change how options are handled since these options worked before I moved to the latest BaseX container and versions.
But there definitely seems to be an oversight in the initial handling of the options file in the BaseXHTTP server (and in the BaseXGUI as well since I get the same behavior there as well).
I would make a pull request but I don’t presume to know what policies or general practices underlie the current options mechanism deisgn.
Cheers,
Eliot
--
Eliot Kimber
http://contrext.com
Quoted text · Eliot Kimber · 1 line
On 3/26/17, 10:20 PM, "Eliot Kimber" <basex-talk-bounces at mailman.uni-konstanz.de on behalf of ekimber at contrext.com> wrote:
I found my original mail thread from January 2016:
https://mailman.uni-konstanz.de/pipermail/basex-talk/2016-January/010171.html
Basically I had to append my options to the existing .basex file rather than simply provide a file.
However, that isn’t an option here because there is no existing /srv/.basex file (the place where the file needs to be).
As an experiment I tried doing this:
RUN touch /srv/.basex && \
echo "DTD=true" >> .basex && \
echo "CATFILE=/opt/dita-ot/DITA-OT/catalog-dita.xml" >> .basex && \ echo "SKIPCORRUPT=true" >> .basex && \
echo "CHOP=false" >> .basex && \
echo "DBPATH=/srv/BaseXData" >> .basex && \
echo "REPOPATH=/srv/BaseXRepo" >> .basex && \
echo "WEBPATH=/srv/BaseXWeb" >> .basex && \
chown basex /srv/.basex
RUN echo "/srv/.basex:\n===========" && cat /srv/.basex && echo "======="
And I get this from the build command:
/srv/.basex:
===========
DTD=true
CATFILE=/opt/dita-ot/DITA-OT/catalog-dita.xml
SKIPCORRUPT=true
CHOP=false
DBPATH=/srv/BaseXData
REPOPATH=/srv/BaseXRepo
WEBPATH=/srv/BaseXWeb
=======
When I start up this container I get this:
/srv/.basex: Unknown option 'DTD'.
/srv/.basex: Unknown option 'CATFILE'.
/srv/.basex: Unknown option '
SKIPCORRUPT'.
/srv/.basex: Unknown option 'CHOP'.
/srv/.basex: writing new configuration file.
Note that it’s only complaining about DTD, CATFILE, SKIPCORRUPT, and CHOP, but not DBPATH, REPOPATH, and WEBPATH. I tried reordering things, no difference in result (but the messages reflect the order change).
So it must be something about how these particular options are processed rather than an issue with the .basex file, at least as far as I can see.
Cheers,
Eliot
--
Eliot Kimber
http://contrext.comQuoted text · Eliot Kimber · 1 line
On 3/26/17, 3:29 PM, "Eliot Kimber" <basex-talk-bounces at mailman.uni-konstanz.de on behalf of ekimber at contrext.com> wrote:
Discovered that if I use
USER root in the Dockerfile I have to then do USER basex before the end so that the container will be running as basex, otherwise it does not start up correctly. I also have to chown the /srv/.basex file to basex otherwise it can’t overwrite it on startup.
Made some progress but something is still not working.
I now have a Dockerfile based on basex/dba that results in a running system with the both the dba and my custom app runnable.
However, if I then add this:
COPY basex/dot_basex /srv/.basex
As before, on startup I get this:
docker run --name linkmgr-test -p 8984:8984 link-manager-test /srv/.basex: Unknown option 'CATFILE'.
/srv/.basex: Unknown option 'DTD'.
/srv/.basex: Unknown option 'SKIPCORRUPT'.
/srv/.basex: Unknown option 'CHOP'.
/srv/.basex: writing new configuration file.
Creating /srv/BaseXWeb/WEB-INF/web.xml
Creating /srv/BaseXWeb/WEB-INF/jetty.xml
I think this Unknown option this is actually an issue with the file itself but I don’t recall what the exact cause and/or solution was.
Cheers,
E.
--
Eliot Kimber
http://contrext.comQuoted text · Eliot Kimber · 1 line
On 3/26/17, 1:40 PM, "Eliot Kimber" <basex-talk-bounces at mailman.uni-konstanz.de on behalf of ekimber at contrext.com> wrote:
I’m trying to set up a Docker container with my own Web app using the latest official containers as a base and following the instructions in the latest BaseX docs.
As part of this setup I need to add several additional options.
I also want to include the dba app.
Following the instructions in the docs I’m putting my additional options in /srv/.basex and these take effect. However, if I use the basex/dba image as a base, the other options, such as the custom
REPOPATH and WEBPATH settings do not get used.
It’s not clear to me from looking at the various Dockerfiles how the dba container sets the options and how I can then add to them without overwriting them.
Of course I can duplicate the options in my Dockerfile but it seems like I should be able to add my options additively but I’m not seeing how to do it, so I feel I’m missing something.
In my Dockerfile I have:
COPY basex/dot_basex /srv/.basex
If I don’t include this line then the container otherwise works in that my Web app is there but it requires these additional options in order to function properly. If I include it then the effective options reflect only my changes and not those required for the custom Web apps to work.
Thanks,
Eliot
--
Eliot Kimber
http://contrext.comEK
Eliot Kimber1 Apr 2017 22:44 #
Perhaps a more useful question is: is there a workaround for this?
That is, I need to have the DTD, CATFILE, CHOP, and
SKIPCORRUPT options set when I load files into a database, which I’m doing through the remote API. Is there either a separate options file that I should be using or a way to specify these options at document load time?
Cheers,
E.--
Eliot Kimber
http://contrext.com
Quoted text · Eliot Kimber · 1 line
On 4/1/17, 10:23 PM, "Eliot Kimber" <basex-talk-bounces at mailman.uni-konstanz.de on behalf of ekimber at contrext.com> wrote:
I dug into the code and I think this is a code bug but I don’t understand the overall flow well enough to know where the bug is, but I suspect it’s a simple change.
If I debug the BasexGUI class and have a ~/.basex file that includes CATFILE=foo it will fail with an unknown option error because the option class being used is StaticOptions and StaticOptions does not define CATFILE as an option.
The CATFILE option, along with a few others, is defined on MainOptions:
private static final Option<?>[] INHERIT = { CHOP,
INTPARSE, STRIPNS, DTD, XINCLUDE, CATFILE };
Looking at BaseXHTTP it uses HTTPContext which only uses StaticOptions, not MainOptions, which means it can never allow the INHERIT options.
So something must have changed from 8.1 ish to now to change how options are handled since these options worked before I moved to the latest BaseX container and versions.
But there definitely seems to be an oversight in the initial handling of the options file in the BaseXHTTP server (and in the BaseXGUI as well since I get the same behavior there as well).
I would make a pull request but I don’t presume to know what policies or general practices underlie the current options mechanism deisgn.
Cheers,
Eliot
--
Eliot Kimber
http://contrext.comQuoted text · Eliot Kimber · 1 line
On 3/26/17, 10:20 PM, "Eliot Kimber" <basex-talk-bounces at mailman.uni-konstanz.de on behalf of ekimber at contrext.com> wrote:
I found my original mail thread from January 2016:
https://mailman.uni-konstanz.de/pipermail/basex-talk/2016-January/010171.html
Basically I had to append my options to the existing .basex file rather than simply provide a file.
However, that isn’t an option here because there is no existing /srv/.basex file (the place where the file needs to be).
As an experiment I tried doing this:
RUN touch /srv/.basex && \
echo "DTD=true" >> .basex && \
echo "CATFILE=/opt/dita-ot/DITA-OT/catalog-dita.xml" >> .basex && \ echo "SKIPCORRUPT=true" >> .basex && \
echo "CHOP=false" >> .basex && \
echo "DBPATH=/srv/BaseXData" >> .basex && \
echo "REPOPATH=/srv/BaseXRepo" >> .basex && \
echo "WEBPATH=/srv/BaseXWeb" >> .basex && \
chown basex /srv/.basex
RUN echo "/srv/.basex:\n===========" && cat /srv/.basex && echo "======="
And I get this from the build command:
/srv/.basex:
===========
DTD=true
CATFILE=/opt/dita-ot/DITA-OT/catalog-dita.xml
SKIPCORRUPT=true
CHOP=false
DBPATH=/srv/BaseXData
REPOPATH=/srv/BaseXRepo
WEBPATH=/srv/BaseXWeb
=======
When I start up this container I get this:
/srv/.basex: Unknown option 'DTD'.
/srv/.basex: Unknown option 'CATFILE'.
/srv/.basex: Unknown option '
SKIPCORRUPT'.
/srv/.basex: Unknown option 'CHOP'.
/srv/.basex: writing new configuration file.
Note that it’s only complaining about DTD, CATFILE, SKIPCORRUPT, and CHOP, but not DBPATH, REPOPATH, and WEBPATH. I tried reordering things, no difference in result (but the messages reflect the order change).
So it must be something about how these particular options are processed rather than an issue with the .basex file, at least as far as I can see.
Cheers,
Eliot
--
Eliot Kimber
http://contrext.comQuoted text · Eliot Kimber · 1 line
On 3/26/17, 3:29 PM, "Eliot Kimber" <basex-talk-bounces at mailman.uni-konstanz.de on behalf of ekimber at contrext.com> wrote:
Discovered that if I use
USER root in the Dockerfile I have to then do USER basex before the end so that the container will be running as basex, otherwise it does not start up correctly. I also have to chown the /srv/.basex file to basex otherwise it can’t overwrite it on startup.
Made some progress but something is still not working.
I now have a Dockerfile based on basex/dba that results in a running system with the both the dba and my custom app runnable.
However, if I then add this:
COPY basex/dot_basex /srv/.basex
As before, on startup I get this:
docker run --name linkmgr-test -p 8984:8984 link-manager-test /srv/.basex: Unknown option 'CATFILE'.
/srv/.basex: Unknown option 'DTD'.
/srv/.basex: Unknown option 'SKIPCORRUPT'.
/srv/.basex: Unknown option 'CHOP'.
/srv/.basex: writing new configuration file.
Creating /srv/BaseXWeb/WEB-INF/web.xml
Creating /srv/BaseXWeb/WEB-INF/jetty.xml
I think this Unknown option this is actually an issue with the file itself but I don’t recall what the exact cause and/or solution was.
Cheers,
E.
--
Eliot Kimber
http://contrext.comQuoted text · Eliot Kimber · 1 line
On 3/26/17, 1:40 PM, "Eliot Kimber" <basex-talk-bounces at mailman.uni-konstanz.de on behalf of ekimber at contrext.com> wrote:
I’m trying to set up a Docker container with my own Web app using the latest official containers as a base and following the instructions in the latest BaseX docs.
As part of this setup I need to add several additional options.
I also want to include the dba app.
Following the instructions in the docs I’m putting my additional options in /srv/.basex and these take effect. However, if I use the basex/dba image as a base, the other options, such as the custom
REPOPATH and WEBPATH settings do not get used.
It’s not clear to me from looking at the various Dockerfiles how the dba container sets the options and how I can then add to them without overwriting them.
Of course I can duplicate the options in my Dockerfile but it seems like I should be able to add my options additively but I’m not seeing how to do it, so I feel I’m missing something.
In my Dockerfile I have:
COPY basex/dot_basex /srv/.basex
If I don’t include this line then the container otherwise works in that my Web app is there but it requires these additional options in order to function properly. If I include it then the effective options reflect only my changes and not those required for the custom Web apps to work.
Thanks,
Eliot
--
Eliot Kimber
http://contrext.comEK
Eliot Kimber2 Apr 2017 10:52 #
I’ve worked around the configuration file problem by setting the options on the Java command line by setting BASEX_JVM in my Dockerfile:
ENV BASEX_JVM="-Dorg.basex.CHOP=false -Dorg.basex.CATFILE=/opt/dita-ot/DITA-OT/catalog-dita.xml -Dorg.basex.DTD=true -Dorg.basex.SKIPCORRUPT=true"
That seems to work. I guess I could also set this environment variable in my docker-compose.yml file, although except for CATFILE, these are invariant for this application.
Cheers,
E.
--
Eliot Kimber
http://contrext.com
Quoted text · Eliot Kimber · 1 line
On 4/1/17, 10:44 PM, "Eliot Kimber" <basex-talk-bounces at mailman.uni-konstanz.de on behalf of ekimber at contrext.com> wrote:
Perhaps a more useful question is: is there a workaround for this?
That is, I need to have the DTD, CATFILE, CHOP, and
SKIPCORRUPT options set when I load files into a database, which I’m doing through the remote API. Is there either a separate options file that I should be using or a way to specify these options at document load time?
Cheers,
E.
--
Eliot Kimber
http://contrext.comQuoted text · Eliot Kimber · 1 line
On 4/1/17, 10:23 PM, "Eliot Kimber" <basex-talk-bounces at mailman.uni-konstanz.de on behalf of ekimber at contrext.com> wrote:
I dug into the code and I think this is a code bug but I don’t understand the overall flow well enough to know where the bug is, but I suspect it’s a simple change.
If I debug the BasexGUI class and have a ~/.basex file that includes CATFILE=foo it will fail with an unknown option error because the option class being used is StaticOptions and StaticOptions does not define CATFILE as an option.
The CATFILE option, along with a few others, is defined on MainOptions:
private static final Option<?>[] INHERIT = { CHOP,
INTPARSE, STRIPNS, DTD, XINCLUDE, CATFILE };
Looking at BaseXHTTP it uses HTTPContext which only uses StaticOptions, not MainOptions, which means it can never allow the INHERIT options.
So something must have changed from 8.1 ish to now to change how options are handled since these options worked before I moved to the latest BaseX container and versions.
But there definitely seems to be an oversight in the initial handling of the options file in the BaseXHTTP server (and in the BaseXGUI as well since I get the same behavior there as well).
I would make a pull request but I don’t presume to know what policies or general practices underlie the current options mechanism deisgn.
Cheers,
Eliot
--
Eliot Kimber
http://contrext.comQuoted text · Eliot Kimber · 1 line
On 3/26/17, 10:20 PM, "Eliot Kimber" <basex-talk-bounces at mailman.uni-konstanz.de on behalf of ekimber at contrext.com> wrote:
I found my original mail thread from January 2016:
https://mailman.uni-konstanz.de/pipermail/basex-talk/2016-January/010171.html
Basically I had to append my options to the existing .basex file rather than simply provide a file.
However, that isn’t an option here because there is no existing /srv/.basex file (the place where the file needs to be).
As an experiment I tried doing this:
RUN touch /srv/.basex && \
echo "DTD=true" >> .basex && \
echo "CATFILE=/opt/dita-ot/DITA-OT/catalog-dita.xml" >> .basex && \ echo "SKIPCORRUPT=true" >> .basex && \
echo "CHOP=false" >> .basex && \
echo "DBPATH=/srv/BaseXData" >> .basex && \
echo "REPOPATH=/srv/BaseXRepo" >> .basex && \ echo "WEBPATH=/srv/BaseXWeb" >> .basex && \
chown basex /srv/.basex
RUN echo "/srv/.basex:\n===========" && cat /srv/.basex && echo "======="
And I get this from the build command:
/srv/.basex:
===========
DTD=true
CATFILE=/opt/dita-ot/DITA-OT/catalog-dita.xml
SKIPCORRUPT=true
CHOP=false
DBPATH=/srv/BaseXData
REPOPATH=/srv/BaseXRepo
WEBPATH=/srv/BaseXWeb
=======
When I start up this container I get this:
/srv/.basex: Unknown option 'DTD'.
/srv/.basex: Unknown option 'CATFILE'.
/srv/.basex: Unknown option '
SKIPCORRUPT'.
/srv/.basex: Unknown option 'CHOP'.
/srv/.basex: writing new configuration file.
Note that it’s only complaining about DTD, CATFILE, SKIPCORRUPT, and CHOP, but not DBPATH, REPOPATH, and WEBPATH. I tried reordering things, no difference in result (but the messages reflect the order change).
So it must be something about how these particular options are processed rather than an issue with the .basex file, at least as far as I can see.
Cheers,
Eliot
--
Eliot Kimber
http://contrext.comQuoted text · Eliot Kimber · 1 line
On 3/26/17, 3:29 PM, "Eliot Kimber" <basex-talk-bounces at mailman.uni-konstanz.de on behalf of ekimber at contrext.com> wrote:
Discovered that if I use
USER root in the Dockerfile I have to then do USER basex before the end so that the container will be running as basex, otherwise it does not start up correctly. I also have to chown the /srv/.basex file to basex otherwise it can’t overwrite it on startup.
Made some progress but something is still not working.
I now have a Dockerfile based on basex/dba that results in a running system with the both the dba and my custom app runnable.
However, if I then add this:
COPY basex/dot_basex /srv/.basex
As before, on startup I get this:
docker run --name linkmgr-test -p 8984:8984 link-manager-test /srv/.basex: Unknown option 'CATFILE'.
/srv/.basex: Unknown option 'DTD'.
/srv/.basex: Unknown option 'SKIPCORRUPT'.
/srv/.basex: Unknown option 'CHOP'.
/srv/.basex: writing new configuration file. Creating /srv/BaseXWeb/WEB-INF/web.xml
Creating /srv/BaseXWeb/WEB-INF/jetty.xml
I think this Unknown option this is actually an issue with the file itself but I don’t recall what the exact cause and/or solution was.
Cheers,
E.
--
Eliot Kimber
http://contrext.comQuoted text · Eliot Kimber · 1 line
On 3/26/17, 1:40 PM, "Eliot Kimber" <basex-talk-bounces at mailman.uni-konstanz.de on behalf of ekimber at contrext.com> wrote:
I’m trying to set up a Docker container with my own Web app using the latest official containers as a base and following the instructions in the latest BaseX docs.
As part of this setup I need to add several additional options.
I also want to include the dba app.
Following the instructions in the docs I’m putting my additional options in /srv/.basex and these take effect. However, if I use the basex/dba image as a base, the other options, such as the custom
REPOPATH and WEBPATH settings do not get used.
It’s not clear to me from looking at the various Dockerfiles how the dba container sets the options and how I can then add to them without overwriting them.
Of course I can duplicate the options in my Dockerfile but it seems like I should be able to add my options additively but I’m not seeing how to do it, so I feel I’m missing something.
In my Dockerfile I have:
COPY basex/dot_basex /srv/.basex
If I don’t include this line then the container otherwise works in that my Web app is there but it requires these additional options in order to function properly. If I include it then the effective options reflect only my changes and not those required for the custom Web apps to work.
Thanks,
Eliot
--
Eliot Kimber
http://contrext.comCG
Christian Grün2 Apr 2017 11:38 #
Hi Eliot,
Did you try to specify the option in the local section of the .basex file (at the bottom, after all other options)?
Best,
Christian
Quoted text · Eliot Kimber · 1 line
Am 02.04.2017 10:52 schrieb "Eliot Kimber" <ekimber at contrext.com>:
I’ve worked around the configuration file problem by setting the options on the Java command line by setting BASEX_JVM in my Dockerfile:
ENV BASEX_JVM="-Dorg.basex.CHOP=false
-Dorg.basex.CATFILE=/opt/dita-ot/DITA-OT/catalog-dita.xml
-Dorg.basex.DTD=true -Dorg.basex.SKIPCORRUPT=true"
That seems to work. I guess I could also set this environment variable in my docker-compose.yml file, although except for CATFILE, these are invariant for this application.
Cheers,
E.
--
Eliot Kimber
http://contrext.com
Quoted text · Eliot Kimber · 2 lines
On 4/1/17, 10:44 PM, "Eliot Kimber" <basex-talk-bounces@mailman. uni-konstanz.de on behalf of ekimber at contrext.com> wrote:
Perhaps a more useful question is: is there a workaround for this?
That is, I need to have the DTD, CATFILE, CHOP, and
SKIPCORRUPT options set when I load files into a database, which I’m doing through the remote API. Is there either a separate options file that I should be using or a way to specify these options at document load time?
Cheers,
E.
--
Eliot Kimber
http://contrext.com
On 4/1/17, 10:23 PM, "Eliot Kimber" <basex-talk-bounces@mailman.Quoted text · Eliot Kimber · 1 line
uni-konstanz.de on behalf of ekimber at contrext.com> wrote:
I dug into the code and I think this is a code bug but I don’t understand the overall flow well enough to know where the bug is, but I suspect it’s a simple change.
If I debug the BasexGUI class and have a ~/.basex file that includes CATFILE=foo it will fail with an unknown option error because the option class being used is StaticOptions and StaticOptions does not define CATFILE as an option.
The CATFILE option, along with a few others, is defined on MainOptions:
private static final Option<?>[] INHERIT = { CHOP,
INTPARSE, STRIPNS, DTD, XINCLUDE, CATFILE };
Looking at BaseXHTTP it uses HTTPContext which only uses StaticOptions, not MainOptions, which means it can never allow the INHERIT options.
So something must have changed from 8.1 ish to now to change how options are handled since these options worked before I moved to the latest BaseX container and versions.
But there definitely seems to be an oversight in the initial handling of the options file in the BaseXHTTP server (and in the BaseXGUI as well since I get the same behavior there as well).
I would make a pull request but I don’t presume to know what policies or general practices underlie the current options mechanism deisgn.
Cheers,
Eliot
--
Eliot Kimber
http://contrext.com
On 3/26/17, 10:20 PM, "Eliot Kimber" <basex-talk-bounces@mailman.Quoted text · Eliot Kimber · 1 line
uni-konstanz.de on behalf of ekimber at contrext.com> wrote:
I found my original mail thread from January 2016:
https://mailman.uni-konstanz.de/pipermail/basex-talk/2016- January/010171.html
Basically I had to append my options to the existing .basex file rather than simply provide a file.
However, that isn’t an option here because there is no existing /srv/.basex file (the place where the file needs to be).
As an experiment I tried doing this:
RUN touch /srv/.basex && \
echo "DTD=true" >> .basex && \
echo "CATFILE=/opt/dita-ot/DITA-OT/catalog-dita.xml" >> .basex && \
echo "SKIPCORRUPT=true" >> .basex && \
echo "CHOP=false" >> .basex && \
echo "DBPATH=/srv/BaseXData" >> .basex && \
echo "REPOPATH=/srv/BaseXRepo" >> .basex && \ echo "WEBPATH=/srv/BaseXWeb" >> .basex && \
chown basex /srv/.basex
RUN echo "/srv/.basex:\n===========" && cat /srv/.basex && echo "======="
And I get this from the build command:
/srv/.basex:
===========
DTD=true
CATFILE=/opt/dita-ot/DITA-OT/catalog-dita.xml
SKIPCORRUPT=true
CHOP=false
DBPATH=/srv/BaseXData
REPOPATH=/srv/BaseXRepo
WEBPATH=/srv/BaseXWeb
=======
When I start up this container I get this:
/srv/.basex: Unknown option 'DTD'.
/srv/.basex: Unknown option 'CATFILE'.
/srv/.basex: Unknown option '
SKIPCORRUPT'.
/srv/.basex: Unknown option 'CHOP'.
/srv/.basex: writing new configuration file.
Note that it’s only complaining about DTD, CATFILE, SKIPCORRUPT, and CHOP, but not DBPATH, REPOPATH, and WEBPATH. I tried reordering things, no difference in result (but the messages reflect the order change).
So it must be something about how these particular options are processed rather than an issue with the .basex file, at least as far as I can see.
Cheers,
Eliot
--
Eliot Kimber
http://contrext.com
On 3/26/17, 3:29 PM, "Eliot Kimber" <basex-talk-bounces@mailman.Quoted text · Eliot Kimber · 1 line
uni-konstanz.de on behalf of ekimber at contrext.com> wrote:
Discovered that if I use
USER root in the Dockerfile I have to then do USER basex before the end so that the container will be running as basex, otherwise it does not start up correctly. I also have to chown the /srv/.basex file to basex otherwise it can’t overwrite it on startup.
Made some progress but something is still not working.
I now have a Dockerfile based on basex/dba that results in a running system with the both the dba and my custom app runnable.
However, if I then add this:
COPY basex/dot_basex /srv/.basex
As before, on startup I get this:
docker run --name linkmgr-test -p 8984:8984
link-manager-test
/srv/.basex: Unknown option 'CATFILE'.
/srv/.basex: Unknown option 'DTD'.
/srv/.basex: Unknown option 'SKIPCORRUPT'.
/srv/.basex: Unknown option 'CHOP'.
/srv/.basex: writing new configuration file. Creating /srv/BaseXWeb/WEB-INF/web.xml
Creating /srv/BaseXWeb/WEB-INF/jetty.xml
I think this Unknown option this is actually an issue with the file itself but I don’t recall what the exact cause and/or solution was.
Cheers,
E.
--
Eliot Kimber
http://contrext.com
On 3/26/17, 1:40 PM, "Eliot Kimber" <
basex-talk-bounces at mailman.uni-konstanz.de on behalf of ekimber at contrext.com>Quoted text · Eliot Kimber · 1 line
wrote:
I’m trying to set up a Docker container with my own Web app using the latest official containers as a base and following the instructions in the latest BaseX docs.
As part of this setup I need to add several additional options.
I also want to include the dba app.
Following the instructions in the docs I’m putting my additional options in /srv/.basex and these take effect. However, if I use the basex/dba image as a base, the other options, such as the custom
REPOPATH and WEBPATH settings do not get used.
It’s not clear to me from looking at the various Dockerfiles how the dba container sets the options and how I can then add to them without overwriting them.
Of course I can duplicate the options in my Dockerfile but it seems like I should be able to add my options additively but I’m not seeing how to do it, so I feel I’m missing something.
In my Dockerfile I have:
COPY basex/dot_basex /srv/.basex
If I don’t include this line then the container otherwise works in that my Web app is there but it requires these additional options in order to function properly. If I include it then the effective options reflect only my changes and not those required for the custom Web apps to work.
Thanks,
Eliot
--
Eliot Kimber
http://contrext.comEK
Eliot Kimber2 Apr 2017 12:45 #
Yes, the options were at the end. But looking at the code I don’t see how that could have mattered. Perhaps I missed a detail?
Cheers,
E.
--
Eliot Kimber
http://contrext.com
Quoted text · Christian Grün · 116 lines
From: Christian Grün <christian.gruen at gmail.com> Date: Sunday, April 2, 2017 at 11:38 AM To: Eliot Kimber <ekimber at contrext.com> Cc: "basex-talk at mailman.uni-konstanz.de" <basex-talk at mailman.uni-konstanz.de> Subject: Re: [basex-talk] Basex Docker Container: How to Control Options Hi Eliot, Did you try to specify the option in the local section of the .basex file (at the bottom, after all other options)? Best, Christian Am 02.04.2017 10:52 schrieb "Eliot Kimber" <ekimber at contrext.com>: I’ve worked around the configuration file problem by setting the options on the Java command line by setting BASEX_JVM in my Dockerfile: ENV BASEX_JVM="-Dorg.basex.CHOP=false -Dorg.basex.CATFILE=/opt/dita-ot/DITA-OT/catalog-dita.xml -Dorg.basex.DTD=true -Dorg.basex.SKIPCORRUPT=true" That seems to work. I guess I could also set this environment variable in my docker-compose.yml file, although except for CATFILE, these are invariant for this application. Cheers, E. -- Eliot Kimber http://contrext.com On 4/1/17, 10:44 PM, "Eliot Kimber" <basex-talk-bounces at mailman.uni-konstanz.de on behalf of ekimber at contrext.com> wrote: Perhaps a more useful question is: is there a workaround for this? That is, I need to have the DTD, CATFILE, CHOP, and SKIPCORRUPT options set when I load files into a database, which I’m doing through the remote API. Is there either a separate options file that I should be using or a way to specify these options at document load time? Cheers, E. -- Eliot Kimber http://contrext.com On 4/1/17, 10:23 PM, "Eliot Kimber" <basex-talk-bounces at mailman.uni-konstanz.de on behalf of ekimber at contrext.com> wrote: I dug into the code and I think this is a code bug but I don’t understand the overall flow well enough to know where the bug is, but I suspect it’s a simple change. If I debug the BasexGUI class and have a ~/.basex file that includes CATFILE=foo it will fail with an unknown option error because the option class being used is StaticOptions and StaticOptions does not define CATFILE as an option. The CATFILE option, along with a few others, is defined on MainOptions: private static final Option<?>[] INHERIT = { CHOP, INTPARSE, STRIPNS, DTD, XINCLUDE, CATFILE }; Looking at BaseXHTTP it uses HTTPContext which only uses StaticOptions, not MainOptions, which means it can never allow the INHERIT options. So something must have changed from 8.1 ish to now to change how options are handled since these options worked before I moved to the latest BaseX container and versions. But there definitely seems to be an oversight in the initial handling of the options file in the BaseXHTTP server (and in the BaseXGUI as well since I get the same behavior there as well). I would make a pull request but I don’t presume to know what policies or general practices underlie the current options mechanism deisgn. Cheers, Eliot -- Eliot Kimber http://contrext.com On 3/26/17, 10:20 PM, "Eliot Kimber" <basex-talk-bounces at mailman.uni-konstanz.de on behalf of ekimber at contrext.com> wrote: I found my original mail thread from January 2016: https://mailman.uni-konstanz.de/pipermail/basex-talk/2016-January/010171.html Basically I had to append my options to the existing .basex file rather than simply provide a file. However, that isn’t an option here because there is no existing /srv/.basex file (the place where the file needs to be). As an experiment I tried doing this: RUN touch /srv/.basex && \ echo "DTD=true" >> .basex && \ echo "CATFILE=/opt/dita-ot/DITA-OT/catalog-dita.xml" >> .basex && \ echo "SKIPCORRUPT=true" >> .basex && \ echo "CHOP=false" >> .basex && \ echo "DBPATH=/srv/BaseXData" >> .basex && \ echo "REPOPATH=/srv/BaseXRepo" >> .basex && \ echo "WEBPATH=/srv/BaseXWeb" >> .basex && \ chown basex /srv/.basex RUN echo "/srv/.basex:\n===========" && cat /srv/.basex && echo "=======" And I get this from the build command: /srv/.basex: =========== DTD=true CATFILE=/opt/dita-ot/DITA-OT/catalog-dita.xml SKIPCORRUPT=true CHOP=false DBPATH=/srv/BaseXData REPOPATH=/srv/BaseXRepo WEBPATH=/srv/BaseXWeb ======= When I start up this container I get this: /srv/.basex: Unknown option 'DTD'. /srv/.basex: Unknown option 'CATFILE'. /srv/.basex: Unknown option 'SKIPCORRUPT'. /srv/.basex: Unknown option 'CHOP'. /srv/.basex: writing new configuration file. Note that it’s only complaining about DTD, CATFILE, SKIPCORRUPT, and CHOP, but not DBPATH, REPOPATH, and WEBPATH. I tried reordering things, no difference in result (but the messages reflect the order change). So it must be something about how these particular options are processed rather than an issue with the .basex file, at least as far as I can see. Cheers, Eliot -- Eliot Kimber http://contrext.com On 3/26/17, 3:29 PM, "Eliot Kimber" <basex-talk-bounces at mailman.uni-konstanz.de on behalf of ekimber at contrext.com> wrote: Discovered that if I use USER root in the Dockerfile I have to then do USER basex before the end so that the container will be running as basex, otherwise it does not start up correctly. I also have to chown the /srv/.basex file to basex otherwise it can’t overwrite it on startup. Made some progress but something is still not working. I now have a Dockerfile based on basex/dba that results in a running system with the both the dba and my custom app runnable. However, if I then add this: COPY basex/dot_basex /srv/.basex As before, on startup I get this: docker run --name linkmgr-test -p 8984:8984 link-manager-test /srv/.basex: Unknown option 'CATFILE'. /srv/.basex: Unknown option 'DTD'. /srv/.basex: Unknown option 'SKIPCORRUPT'. /srv/.basex: Unknown option 'CHOP'. /srv/.basex: writing new configuration file. Creating /srv/BaseXWeb/WEB-INF/web.xml Creating /srv/BaseXWeb/WEB-INF/jetty.xml I think this Unknown option this is actually an issue with the file itself but I don’t recall what the exact cause and/or solution was. Cheers, E. -- Eliot Kimber http://contrext.com On 3/26/17, 1:40 PM, "Eliot Kimber" <basex-talk-bounces at mailman.uni-konstanz.de on behalf of ekimber at contrext.com> wrote: I’m trying to set up a Docker container with my own Web app using the latest official containers as a base and following the instructions in the latest BaseX docs. As part of this setup I need to add several additional options. I also want to include the dba app. Following the instructions in the docs I’m putting my additional options in /srv/.basex and these take effect. However, if I use the basex/dba image as a base, the other options, such as the custom REPOPATH and WEBPATH settings do not get used. It’s not clear to me from looking at the various Dockerfiles how the dba container sets the options and how I can then add to them without overwriting them. Of course I can duplicate the options in my Dockerfile but it seems like I should be able to add my options additively but I’m not seeing how to do it, so I feel I’m missing something. In my Dockerfile I have: COPY basex/dot_basex /srv/.basex If I don’t include this line then the container otherwise works in that my Web app is there but it requires these additional options in order to function properly. If I include it then the effective options reflect only my changes and not those required for the custom Web apps to work. Thanks, Eliot -- Eliot Kimber http://contrext.com
CG
Christian Grün2 Apr 2017 14:25 #
Hi Eliot,
If you start with a new version of BaseX, in which the .basex configuration file is still empty or non-existent, there may be no "Local Options" comment. I hope the revised Wiki makes this more obvious [1].
Best,
Christian
[1] http://docs.basex.org/wiki/Options
Quoted text · Eliot Kimber · 325 lines
On Sun, Apr 2, 2017 at 12:45 PM, Eliot Kimber <ekimber at contrext.com> wrote: > Yes, the options were at the end. But looking at the code I don’t see how > that could have mattered. Perhaps I missed a detail? > > > > Cheers, > > > > E. > > > > -- > > Eliot Kimber > > http://contrext.com > > > > > > > > From: Christian Grün <christian.gruen at gmail.com> > Date: Sunday, April 2, 2017 at 11:38 AM > To: Eliot Kimber <ekimber at contrext.com> > Cc: "basex-talk at mailman.uni-konstanz.de" > <basex-talk at mailman.uni-konstanz.de> > Subject: Re: [basex-talk] Basex Docker Container: How to Control Options > > > > Hi Eliot, > > > > Did you try to specify the option in the local section of the .basex file > (at the bottom, after all other options)? > > > > Best, > > Christian > > > > > > > > > > > > Am 02.04.2017 10:52 schrieb "Eliot Kimber" <ekimber at contrext.com>: > > I’ve worked around the configuration file problem by setting the options on > the Java command line by setting BASEX_JVM in my Dockerfile: > > ENV BASEX_JVM="-Dorg.basex.CHOP=false > -Dorg.basex.CATFILE=/opt/dita-ot/DITA-OT/catalog-dita.xml > -Dorg.basex.DTD=true -Dorg.basex.SKIPCORRUPT=true" > > That seems to work. I guess I could also set this environment variable in my > docker-compose.yml file, although except for CATFILE, these are invariant > for this application. > > > Cheers, > > E. > > -- > Eliot Kimber > http://contrext.com > > > On 4/1/17, 10:44 PM, "Eliot Kimber" > <basex-talk-bounces at mailman.uni-konstanz.de on behalf of > ekimber at contrext.com> wrote: > > Perhaps a more useful question is: is there a workaround for this? > > That is, I need to have the DTD, CATFILE, CHOP, and SKIPCORRUPT options > set when I load files into a database, which I’m doing through the remote > API. Is there either a separate options file that I should be using or a way > to specify these options at document load time? > > Cheers, > > E. > > -- > Eliot Kimber > http://contrext.com > > > > On 4/1/17, 10:23 PM, "Eliot Kimber" > <basex-talk-bounces at mailman.uni-konstanz.de on behalf of > ekimber at contrext.com> wrote: > > I dug into the code and I think this is a code bug but I don’t > understand the overall flow well enough to know where the bug is, but I > suspect it’s a simple change. > > If I debug the BasexGUI class and have a ~/.basex file that includes > CATFILE=foo it will fail with an unknown option error because the option > class being used is StaticOptions and StaticOptions does not define CATFILE > as an option. > > The CATFILE option, along with a few others, is defined on > MainOptions: > > private static final Option<?>[] INHERIT = { CHOP, INTPARSE, > STRIPNS, DTD, XINCLUDE, CATFILE }; > > Looking at BaseXHTTP it uses HTTPContext which only uses > StaticOptions, not MainOptions, which means it can never allow the INHERIT > options. > > So something must have changed from 8.1 ish to now to change how > options are handled since these options worked before I moved to the latest > BaseX container and versions. > > But there definitely seems to be an oversight in the initial > handling of the options file in the BaseXHTTP server (and in the BaseXGUI as > well since I get the same behavior there as well). > > I would make a pull request but I don’t presume to know what > policies or general practices underlie the current options mechanism deisgn. > > Cheers, > > Eliot > -- > Eliot Kimber > http://contrext.com > > > > On 3/26/17, 10:20 PM, "Eliot Kimber" > <basex-talk-bounces at mailman.uni-konstanz.de on behalf of > ekimber at contrext.com> wrote: > > I found my original mail thread from January 2016: > > > https://mailman.uni-konstanz.de/pipermail/basex-talk/2016-January/010171.html > > Basically I had to append my options to the existing .basex file > rather than simply provide a file. > > However, that isn’t an option here because there is no existing > /srv/.basex file (the place where the file needs to be). > > As an experiment I tried doing this: > > RUN touch /srv/.basex && \ > echo "DTD=true" >> .basex && \ > echo "CATFILE=/opt/dita-ot/DITA-OT/catalog-dita.xml" >> > .basex && \ > echo "SKIPCORRUPT=true" >> .basex && \ > echo "CHOP=false" >> .basex && \ > echo "DBPATH=/srv/BaseXData" >> .basex && \ > echo "REPOPATH=/srv/BaseXRepo" >> .basex && \ > echo "WEBPATH=/srv/BaseXWeb" >> .basex && \ > chown basex /srv/.basex > RUN echo "/srv/.basex:\n===========" && cat /srv/.basex && echo > "=======" > > And I get this from the build command: > > /srv/.basex: > =========== > DTD=true > CATFILE=/opt/dita-ot/DITA-OT/catalog-dita.xml > SKIPCORRUPT=true > CHOP=false > DBPATH=/srv/BaseXData > REPOPATH=/srv/BaseXRepo > WEBPATH=/srv/BaseXWeb > ======= > > When I start up this container I get this: > > /srv/.basex: Unknown option 'DTD'. > /srv/.basex: Unknown option 'CATFILE'. > /srv/.basex: Unknown option 'SKIPCORRUPT'. > /srv/.basex: Unknown option 'CHOP'. > /srv/.basex: writing new configuration file. > > Note that it’s only complaining about DTD, CATFILE, SKIPCORRUPT, > and CHOP, but not DBPATH, REPOPATH, and WEBPATH. I tried reordering things, > no difference in result (but the messages reflect the order change). > > So it must be something about how these particular options are > processed rather than an issue with the .basex file, at least as far as I > can see. > > Cheers, > > Eliot > > -- > Eliot Kimber > http://contrext.com > > > > On 3/26/17, 3:29 PM, "Eliot Kimber" > <basex-talk-bounces at mailman.uni-konstanz.de on behalf of > ekimber at contrext.com> wrote: > > Discovered that if I use USER root in the Dockerfile I have > to then do USER basex before the end so that the container will be running > as basex, otherwise it does not start up correctly. I also have to chown the > /srv/.basex file to basex otherwise it can’t overwrite it on startup. > > Made some progress but something is still not working. > > I now have a Dockerfile based on basex/dba that results in a > running system with the both the dba and my custom app runnable. > > However, if I then add this: > > COPY basex/dot_basex /srv/.basex > > As before, on startup I get this: > > docker run --name linkmgr-test -p 8984:8984 > link-manager-test > /srv/.basex: Unknown option 'CATFILE'. > /srv/.basex: Unknown option 'DTD'. > /srv/.basex: Unknown option 'SKIPCORRUPT'. > /srv/.basex: Unknown option 'CHOP'. > /srv/.basex: writing new configuration file. > Creating /srv/BaseXWeb/WEB-INF/web.xml > Creating /srv/BaseXWeb/WEB-INF/jetty.xml > > > I think this Unknown option this is actually an issue with > the file itself but I don’t recall what the exact cause and/or solution was. > > Cheers, > > E. > > -- > Eliot Kimber > http://contrext.com > > > > On 3/26/17, 1:40 PM, "Eliot Kimber" > <basex-talk-bounces at mailman.uni-konstanz.de on behalf of > ekimber at contrext.com> wrote: > > I’m trying to set up a Docker container with my own Web > app using the latest official containers as a base and following the > instructions in the latest BaseX docs. > > As part of this setup I need to add several additional > options. > > I also want to include the dba app. > > Following the instructions in the docs I’m putting my > additional options in /srv/.basex and these take effect. However, if I use > the basex/dba image as a base, the other options, such as the custom > REPOPATH and WEBPATH settings do not get used. > > It’s not clear to me from looking at the various > Dockerfiles how the dba container sets the options and how I can then add to > them without overwriting them. > > Of course I can duplicate the options in my Dockerfile > but it seems like I should be able to add my options additively but I’m not > seeing how to do it, so I feel I’m missing something. > > In my Dockerfile I have: > > COPY basex/dot_basex /srv/.basex > > If I don’t include this line then the container > otherwise works in that my Web app is there but it requires these additional > options in order to function properly. If I include it then the effective > options reflect only my changes and not those required for the custom Web > apps to work. > > Thanks, > > Eliot > > -- > Eliot Kimber > http://contrext.com > > > > > > > > > > > > > > > > > > > > > > > >
EK
Eliot Kimber2 Apr 2017 20:36 #
Are you really saying that the “# Local options” comment is a necessary part of the configuration file? Really? Because I don’t think a comment should ever a required part of any syntax…
If the configuration file needs have labeled components use YAML or XML or something.
Cheers,
e.
--
Eliot Kimber
http://contrext.com
Quoted text · Christian Grün · 1 line
On 4/2/17, 2:25 PM, "Christian Grün" <christian.gruen at gmail.com> wrote:
Hi Eliot,
If you start with a new version of BaseX, in which the .basex configuration file is still empty or non-existent, there may be no "Local Options" comment. I hope the revised Wiki makes this more obvious [1].
Best,
Christian
[1] http://docs.basex.org/wiki/Options
Quoted text · Eliot Kimber · 325 lines
On Sun, Apr 2, 2017 at 12:45 PM, Eliot Kimber <ekimber at contrext.com> wrote: > Yes, the options were at the end. But looking at the code I don’t see how > that could have mattered. Perhaps I missed a detail? > > > > Cheers, > > > > E. > > > > -- > > Eliot Kimber > > http://contrext.com > > > > > > > > From: Christian Grün <christian.gruen at gmail.com> > Date: Sunday, April 2, 2017 at 11:38 AM > To: Eliot Kimber <ekimber at contrext.com> > Cc: "basex-talk at mailman.uni-konstanz.de" > <basex-talk at mailman.uni-konstanz.de> > Subject: Re: [basex-talk] Basex Docker Container: How to Control Options > > > > Hi Eliot, > > > > Did you try to specify the option in the local section of the .basex file > (at the bottom, after all other options)? > > > > Best, > > Christian > > > > > > > > > > > > Am 02.04.2017 10:52 schrieb "Eliot Kimber" <ekimber at contrext.com>: > > I’ve worked around the configuration file problem by setting the options on > the Java command line by setting BASEX_JVM in my Dockerfile: > > ENV BASEX_JVM="-Dorg.basex.CHOP=false > -Dorg.basex.CATFILE=/opt/dita-ot/DITA-OT/catalog-dita.xml > -Dorg.basex.DTD=true -Dorg.basex.SKIPCORRUPT=true" > > That seems to work. I guess I could also set this environment variable in my > docker-compose.yml file, although except for CATFILE, these are invariant > for this application. > > > Cheers, > > E. > > -- > Eliot Kimber > http://contrext.com > > > On 4/1/17, 10:44 PM, "Eliot Kimber" > <basex-talk-bounces at mailman.uni-konstanz.de on behalf of > ekimber at contrext.com> wrote: > > Perhaps a more useful question is: is there a workaround for this? > > That is, I need to have the DTD, CATFILE, CHOP, and SKIPCORRUPT options > set when I load files into a database, which I’m doing through the remote > API. Is there either a separate options file that I should be using or a way > to specify these options at document load time? > > Cheers, > > E. > > -- > Eliot Kimber > http://contrext.com > > > > On 4/1/17, 10:23 PM, "Eliot Kimber" > <basex-talk-bounces at mailman.uni-konstanz.de on behalf of > ekimber at contrext.com> wrote: > > I dug into the code and I think this is a code bug but I don’t > understand the overall flow well enough to know where the bug is, but I > suspect it’s a simple change. > > If I debug the BasexGUI class and have a ~/.basex file that includes > CATFILE=foo it will fail with an unknown option error because the option > class being used is StaticOptions and StaticOptions does not define CATFILE > as an option. > > The CATFILE option, along with a few others, is defined on > MainOptions: > > private static final Option<?>[] INHERIT = { CHOP, INTPARSE, > STRIPNS, DTD, XINCLUDE, CATFILE }; > > Looking at BaseXHTTP it uses HTTPContext which only uses > StaticOptions, not MainOptions, which means it can never allow the INHERIT > options. > > So something must have changed from 8.1 ish to now to change how > options are handled since these options worked before I moved to the latest > BaseX container and versions. > > But there definitely seems to be an oversight in the initial > handling of the options file in the BaseXHTTP server (and in the BaseXGUI as > well since I get the same behavior there as well). > > I would make a pull request but I don’t presume to know what > policies or general practices underlie the current options mechanism deisgn. > > Cheers, > > Eliot > -- > Eliot Kimber > http://contrext.com > > > > On 3/26/17, 10:20 PM, "Eliot Kimber" > <basex-talk-bounces at mailman.uni-konstanz.de on behalf of > ekimber at contrext.com> wrote: > > I found my original mail thread from January 2016: > > > https://mailman.uni-konstanz.de/pipermail/basex-talk/2016-January/010171.html > > Basically I had to append my options to the existing .basex file > rather than simply provide a file. > > However, that isn’t an option here because there is no existing > /srv/.basex file (the place where the file needs to be). > > As an experiment I tried doing this: > > RUN touch /srv/.basex && \ > echo "DTD=true" >> .basex && \ > echo "CATFILE=/opt/dita-ot/DITA-OT/catalog-dita.xml" >> > .basex && \ > echo "SKIPCORRUPT=true" >> .basex && \ > echo "CHOP=false" >> .basex && \ > echo "DBPATH=/srv/BaseXData" >> .basex && \ > echo "REPOPATH=/srv/BaseXRepo" >> .basex && \ > echo "WEBPATH=/srv/BaseXWeb" >> .basex && \ > chown basex /srv/.basex > RUN echo "/srv/.basex:\n===========" && cat /srv/.basex && echo > "=======" > > And I get this from the build command: > > /srv/.basex: > =========== > DTD=true > CATFILE=/opt/dita-ot/DITA-OT/catalog-dita.xml > SKIPCORRUPT=true > CHOP=false > DBPATH=/srv/BaseXData > REPOPATH=/srv/BaseXRepo > WEBPATH=/srv/BaseXWeb > ======= > > When I start up this container I get this: > > /srv/.basex: Unknown option 'DTD'. > /srv/.basex: Unknown option 'CATFILE'. > /srv/.basex: Unknown option 'SKIPCORRUPT'. > /srv/.basex: Unknown option 'CHOP'. > /srv/.basex: writing new configuration file. > > Note that it’s only complaining about DTD, CATFILE, SKIPCORRUPT, > and CHOP, but not DBPATH, REPOPATH, and WEBPATH. I tried reordering things, > no difference in result (but the messages reflect the order change). > > So it must be something about how these particular options are > processed rather than an issue with the .basex file, at least as far as I > can see. > > Cheers, > > Eliot > > -- > Eliot Kimber > http://contrext.com > > > > On 3/26/17, 3:29 PM, "Eliot Kimber" > <basex-talk-bounces at mailman.uni-konstanz.de on behalf of > ekimber at contrext.com> wrote: > > Discovered that if I use USER root in the Dockerfile I have > to then do USER basex before the end so that the container will be running > as basex, otherwise it does not start up correctly. I also have to chown the > /srv/.basex file to basex otherwise it can’t overwrite it on startup. > > Made some progress but something is still not working. > > I now have a Dockerfile based on basex/dba that results in a > running system with the both the dba and my custom app runnable. > > However, if I then add this: > > COPY basex/dot_basex /srv/.basex > > As before, on startup I get this: > > docker run --name linkmgr-test -p 8984:8984 > link-manager-test > /srv/.basex: Unknown option 'CATFILE'. > /srv/.basex: Unknown option 'DTD'. > /srv/.basex: Unknown option 'SKIPCORRUPT'. > /srv/.basex: Unknown option 'CHOP'. > /srv/.basex: writing new configuration file. > Creating /srv/BaseXWeb/WEB-INF/web.xml > Creating /srv/BaseXWeb/WEB-INF/jetty.xml > > > I think this Unknown option this is actually an issue with > the file itself but I don’t recall what the exact cause and/or solution was. > > Cheers, > > E. > > -- > Eliot Kimber > http://contrext.com > > > > On 3/26/17, 1:40 PM, "Eliot Kimber" > <basex-talk-bounces at mailman.uni-konstanz.de on behalf of > ekimber at contrext.com> wrote: > > I’m trying to set up a Docker container with my own Web > app using the latest official containers as a base and following the > instructions in the latest BaseX docs. > > As part of this setup I need to add several additional > options. > > I also want to include the dba app. > > Following the instructions in the docs I’m putting my > additional options in /srv/.basex and these take effect. However, if I use > the basex/dba image as a base, the other options, such as the custom > REPOPATH and WEBPATH settings do not get used. > > It’s not clear to me from looking at the various > Dockerfiles how the dba container sets the options and how I can then add to > them without overwriting them. > > Of course I can duplicate the options in my Dockerfile > but it seems like I should be able to add my options additively but I’m not > seeing how to do it, so I feel I’m missing something. > > In my Dockerfile I have: > > COPY basex/dot_basex /srv/.basex > > If I don’t include this line then the container > otherwise works in that my Web app is there but it requires these additional > options in order to function properly. If I include it then the effective > options reflect only my changes and not those required for the custom Web > apps to work. > > Thanks, > > Eliot > > -- > Eliot Kimber > http://contrext.com > > > > > > > > > > > > > > > > > > > > > > > >
CG
Christian Grün2 Apr 2017 21:35 #
Quoted text · Eliot Kimber · 1 line
> Really?
Really. We may switch to a different format in future (it hasn't been important enough so far).
MG
Hi,
side note: I see a level one heading there (markdown interpretes # as <h1> ), not a comment.
Anyways, thanks for this conversation - this sheds some light on similar issues I had.
Br,
Max
2017-04-02 20:36 GMT+02:00 Eliot Kimber <ekimber at contrext.com>:
Quoted text · Eliot Kimber · 358 lines
> Are you really saying that the “# Local options” comment is a necessary part of the configuration file? Really? Because I don’t think a comment should ever a required part of any syntax… > > If the configuration file needs have labeled components use YAML or XML or something. > > Cheers, > > e. > -- > Eliot Kimber > http://contrext.com > > > > On 4/2/17, 2:25 PM, "Christian Grün" <christian.gruen at gmail.com> wrote: > > Hi Eliot, > > If you start with a new version of BaseX, in which the .basex > configuration file is still empty or non-existent, there may be no > "Local Options" comment. I hope the revised Wiki makes this more > obvious [1]. > > Best, > Christian > > [1] http://docs.basex.org/wiki/Options > > > > On Sun, Apr 2, 2017 at 12:45 PM, Eliot Kimber <ekimber at contrext.com> wrote: > > Yes, the options were at the end. But looking at the code I don’t see how > > that could have mattered. Perhaps I missed a detail? > > > > > > > > Cheers, > > > > > > > > E. > > > > > > > > -- > > > > Eliot Kimber > > > > http://contrext.com > > > > > > > > > > > > > > > > From: Christian Grün <christian.gruen at gmail.com> > > Date: Sunday, April 2, 2017 at 11:38 AM > > To: Eliot Kimber <ekimber at contrext.com> > > Cc: "basex-talk at mailman.uni-konstanz.de" > > <basex-talk at mailman.uni-konstanz.de> > > Subject: Re: [basex-talk] Basex Docker Container: How to Control Options > > > > > > > > Hi Eliot, > > > > > > > > Did you try to specify the option in the local section of the .basex file > > (at the bottom, after all other options)? > > > > > > > > Best, > > > > Christian > > > > > > > > > > > > > > > > > > > > > > > > Am 02.04.2017 10:52 schrieb "Eliot Kimber" <ekimber at contrext.com>: > > > > I’ve worked around the configuration file problem by setting the options on > > the Java command line by setting BASEX_JVM in my Dockerfile: > > > > ENV BASEX_JVM="-Dorg.basex.CHOP=false > > -Dorg.basex.CATFILE=/opt/dita-ot/DITA-OT/catalog-dita.xml > > -Dorg.basex.DTD=true -Dorg.basex.SKIPCORRUPT=true" > > > > That seems to work. I guess I could also set this environment variable in my > > docker-compose.yml file, although except for CATFILE, these are invariant > > for this application. > > > > > > Cheers, > > > > E. > > > > -- > > Eliot Kimber > > http://contrext.com > > > > > > On 4/1/17, 10:44 PM, "Eliot Kimber" > > <basex-talk-bounces at mailman.uni-konstanz.de on behalf of > > ekimber at contrext.com> wrote: > > > > Perhaps a more useful question is: is there a workaround for this? > > > > That is, I need to have the DTD, CATFILE, CHOP, and SKIPCORRUPT options > > set when I load files into a database, which I’m doing through the remote > > API. Is there either a separate options file that I should be using or a way > > to specify these options at document load time? > > > > Cheers, > > > > E. > > > > -- > > Eliot Kimber > > http://contrext.com > > > > > > > > On 4/1/17, 10:23 PM, "Eliot Kimber" > > <basex-talk-bounces at mailman.uni-konstanz.de on behalf of > > ekimber at contrext.com> wrote: > > > > I dug into the code and I think this is a code bug but I don’t > > understand the overall flow well enough to know where the bug is, but I > > suspect it’s a simple change. > > > > If I debug the BasexGUI class and have a ~/.basex file that includes > > CATFILE=foo it will fail with an unknown option error because the option > > class being used is StaticOptions and StaticOptions does not define CATFILE > > as an option. > > > > The CATFILE option, along with a few others, is defined on > > MainOptions: > > > > private static final Option<?>[] INHERIT = { CHOP, INTPARSE, > > STRIPNS, DTD, XINCLUDE, CATFILE }; > > > > Looking at BaseXHTTP it uses HTTPContext which only uses > > StaticOptions, not MainOptions, which means it can never allow the INHERIT > > options. > > > > So something must have changed from 8.1 ish to now to change how > > options are handled since these options worked before I moved to the latest > > BaseX container and versions. > > > > But there definitely seems to be an oversight in the initial > > handling of the options file in the BaseXHTTP server (and in the BaseXGUI as > > well since I get the same behavior there as well). > > > > I would make a pull request but I don’t presume to know what > > policies or general practices underlie the current options mechanism deisgn. > > > > Cheers, > > > > Eliot > > -- > > Eliot Kimber > > http://contrext.com > > > > > > > > On 3/26/17, 10:20 PM, "Eliot Kimber" > > <basex-talk-bounces at mailman.uni-konstanz.de on behalf of > > ekimber at contrext.com> wrote: > > > > I found my original mail thread from January 2016: > > > > > > https://mailman.uni-konstanz.de/pipermail/basex-talk/2016-January/010171.html > > > > Basically I had to append my options to the existing .basex file > > rather than simply provide a file. > > > > However, that isn’t an option here because there is no existing > > /srv/.basex file (the place where the file needs to be). > > > > As an experiment I tried doing this: > > > > RUN touch /srv/.basex && \ > > echo "DTD=true" >> .basex && \ > > echo "CATFILE=/opt/dita-ot/DITA-OT/catalog-dita.xml" >> > > .basex && \ > > echo "SKIPCORRUPT=true" >> .basex && \ > > echo "CHOP=false" >> .basex && \ > > echo "DBPATH=/srv/BaseXData" >> .basex && \ > > echo "REPOPATH=/srv/BaseXRepo" >> .basex && \ > > echo "WEBPATH=/srv/BaseXWeb" >> .basex && \ > > chown basex /srv/.basex > > RUN echo "/srv/.basex:\n===========" && cat /srv/.basex && echo > > "=======" > > > > And I get this from the build command: > > > > /srv/.basex: > > =========== > > DTD=true > > CATFILE=/opt/dita-ot/DITA-OT/catalog-dita.xml > > SKIPCORRUPT=true > > CHOP=false > > DBPATH=/srv/BaseXData > > REPOPATH=/srv/BaseXRepo > > WEBPATH=/srv/BaseXWeb > > ======= > > > > When I start up this container I get this: > > > > /srv/.basex: Unknown option 'DTD'. > > /srv/.basex: Unknown option 'CATFILE'. > > /srv/.basex: Unknown option 'SKIPCORRUPT'. > > /srv/.basex: Unknown option 'CHOP'. > > /srv/.basex: writing new configuration file. > > > > Note that it’s only complaining about DTD, CATFILE, SKIPCORRUPT, > > and CHOP, but not DBPATH, REPOPATH, and WEBPATH. I tried reordering things, > > no difference in result (but the messages reflect the order change). > > > > So it must be something about how these particular options are > > processed rather than an issue with the .basex file, at least as far as I > > can see. > > > > Cheers, > > > > Eliot > > > > -- > > Eliot Kimber > > http://contrext.com > > > > > > > > On 3/26/17, 3:29 PM, "Eliot Kimber" > > <basex-talk-bounces at mailman.uni-konstanz.de on behalf of > > ekimber at contrext.com> wrote: > > > > Discovered that if I use USER root in the Dockerfile I have > > to then do USER basex before the end so that the container will be running > > as basex, otherwise it does not start up correctly. I also have to chown the > > /srv/.basex file to basex otherwise it can’t overwrite it on startup. > > > > Made some progress but something is still not working. > > > > I now have a Dockerfile based on basex/dba that results in a > > running system with the both the dba and my custom app runnable. > > > > However, if I then add this: > > > > COPY basex/dot_basex /srv/.basex > > > > As before, on startup I get this: > > > > docker run --name linkmgr-test -p 8984:8984 > > link-manager-test > > /srv/.basex: Unknown option 'CATFILE'. > > /srv/.basex: Unknown option 'DTD'. > > /srv/.basex: Unknown option 'SKIPCORRUPT'. > > /srv/.basex: Unknown option 'CHOP'. > > /srv/.basex: writing new configuration file. > > Creating /srv/BaseXWeb/WEB-INF/web.xml > > Creating /srv/BaseXWeb/WEB-INF/jetty.xml > > > > > > I think this Unknown option this is actually an issue with > > the file itself but I don’t recall what the exact cause and/or solution was. > > > > Cheers, > > > > E. > > > > -- > > Eliot Kimber > > http://contrext.com > > > > > > > > On 3/26/17, 1:40 PM, "Eliot Kimber" > > <basex-talk-bounces at mailman.uni-konstanz.de on behalf of > > ekimber at contrext.com> wrote: > > > > I’m trying to set up a Docker container with my own Web > > app using the latest official containers as a base and following the > > instructions in the latest BaseX docs. > > > > As part of this setup I need to add several additional > > options. > > > > I also want to include the dba app. > > > > Following the instructions in the docs I’m putting my > > additional options in /srv/.basex and these take effect. However, if I use > > the basex/dba image as a base, the other options, such as the custom > > REPOPATH and WEBPATH settings do not get used. > > > > It’s not clear to me from looking at the various > > Dockerfiles how the dba container sets the options and how I can then add to > > them without overwriting them. > > > > Of course I can duplicate the options in my Dockerfile > > but it seems like I should be able to add my options additively but I’m not > > seeing how to do it, so I feel I’m missing something. > > > > In my Dockerfile I have: > > > > COPY basex/dot_basex /srv/.basex > > > > If I don’t include this line then the container > > otherwise works in that my Web app is there but it requires these additional > > options in order to function properly. If I include it then the effective > > options reflect only my changes and not those required for the custom Web > > apps to work. > > > > Thanks, > > > > Eliot > > > > -- > > Eliot Kimber > > http://contrext.com > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
Written for BaseX 8.6. BaseX may have changed since: please check the current documentation.
⚡Generated with XQuery