Hi Rob, 

Glad you got it up and running :)

> Am 27.11.2021 um 16:39 schrieb Rob Stapper <[email protected]>:
> 
> Hi Michael,
>  
> Thanx for the extended answer. Eventually I got it working with my web 
> application and xquey-modules as part of the image. I had a little trouble 
> with the ownerships of the mounted datafiles but ‘chown’ under the ‘root’ 
> solved that one.
Yeah, I think the obvious solution to this would be running the entire image as 
root — which may or may not impose a security issue in your architecture.

> I find the image size a pretty big: 400Mb against the 227 Mb of the regular 
> ‘basex/basexhttp’-image.
Yeah I think you could boil this down to a few megabytes (using the alpine 
variant) — but I moved to arm (thanks Apple M1) recently there is no OpenJDK / 
Alpine Image yet, hence the size.

> On the other hand the performance is much better then a basexhttp-container 
> with my code mounted on container-creation. I’m content for now, I’ll grab a 
> beer.
Just a guess, but maybe that performance plus stems from the use of different 
JDKs? 
My example contains JDK 11 — the official BaseX Docker is running  JDK 8. I 
think we might consider updating our official image. 



Best
Michael 
>  
> Cheers,
> Rob
>  
> Sent from Mail <https://go.microsoft.com/fwlink/?LinkId=550986> for Windows
>  
> From: Michael Seiferle <mailto:[email protected]>
> Sent: Friday, November 26, 2021 6:04 PM
> To: Rob Stapper <mailto:[email protected]>
> Cc: [email protected] 
> <mailto:[email protected]>
> Subject: Re: [basex-talk] docker, creating and deploying the dba docker-image
>  
> Hi Rob, 
>  
> this answer contains two parts, but tldr: if you mount nothing to 
> /srv/basex/webapp the DBA should already be present.
>  
> Now the slightly longer part:
>  
> But I’m confused what directories to mount on: ‘/srv/basex/repo’ and 
> ‘/srv/basex/webapp’? 
> I can’t find the docker-run example for this.
>  
> Can you shine some more light on the issue.
>  
>  
> Inside the docker image, the home-folder is /srv/basex, hence:
>  
> The /srv/basex/repo Folder contains all XQuery modules that can be imported 
> from your query files, using the BaseX module resolution.
>  
> From the documentation: 
>             Points to the Repository, in which all XQuery modules are located.
> https://docs.basex.org/wiki/Repository 
> <https://docs.basex.org/wiki/Repository>
>  
> The webapp folder on the other hand contains your RestXQ-annotated-XQuery  
> files, and is configured via the WEBPATH property:
>  
> WEBPATH
> Signature         WEBPATH [path]
> Default             {home}/webapp
> Summary         Points to the directory in which all the Web Application 
> contents are stored, including XQuery, Script, RESTXQ and configuration files
>  
>  
> As the docker container is (more or less) the ZIP-File extracted to a 
> specific location, it behaves very much like starting basexhttp from the 
> commandline.
>  
> When you download the BaseX Zipfile, you run:
>  bin/basexhttp 
> Which in turn runs: java -cp ${all-basex-libraries-and-jarfiles}  
> org.basex.BaseXHTTP
>  
> The BaseXHTTP-process now looks for the given folders in the current home 
> directory: 
>  
> - `data` => for databases
> - `repo` => for XQuery modules
> - `webapp` => for web applications
>  
> 
> When it comes to docker, the home directory is /srv/basex, with the following 
> layout:
>  
> /srv/basex/data => for databases
> /srv/basex/repo => for XQuery modules
> /srv/basex/webapp => for RestXQ-annotated stuff such as the dba
>  
>  
> As the ZIP-File contains the DBA, all needed files should be already present, 
> if you did not mount something else into /srv/basex/webapp.
>  
> If you want to add your own RestXQ endpoints for example, the safe way is to 
> mount them into a subfolder of /srv/basex/webapp, for example: 
>  
> docker run -d \
>     --name basexhttp \
>     --publish 1984:1984 \
>     --publish 8984:8984 \
>     --volume "$HOME/basex/data":/srv/basex/data \
>     --volume "$(pwd)/webapp/myapp":/srv/basex/webapp/myapp \
>   basex/basexhttp:latest
>  
> That way the webapp folder in the docker container keeps the DBA and also has 
> your files present.
>  
>  
> If you plan to distribute your image I’d suggest building your own image with 
> a Dockerfile. 
> I created a minimal example here: 
> https://git.basex.io/basex-org/basex-app-with-docker 
> <https://git.basex.io/basex-org/basex-app-with-docker> 
> All I’ve done is: download BaseX.zip, extract BaseX.zip, add a Dockerfile to 
> build the image.
>  
>  
>  
> Hope this helps  :-)
>  
>  
>  
> Michael
>  
>  
> 
> 
> Am 26.11.2021 um 14:50 schrieb Rob Stapper <[email protected] 
> <mailto:[email protected]>>:
>  
> I’ve mounted ‘c:/Program Files (x86)/basex/data’ on ‘/srv/basex/data’ 
>  
>  
>  
>  
> 
>  
> <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient&utm_term=icon>
>       Virus-free. www.avast.com 
> <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient&utm_term=link>

Reply via email to