We were looking at different mysql entrypoint scripts. Not sure why there are two, but this repo says it's the "official image": https://github.com/docker-library/mysql/blob/master/8.0/docker-entrypoint.sh#L87
You can see it is doing a "temporary startup of the MySQL server, for init purposes", with --skip-networking option on. Switching ports was the alternative I thought could be applied to Fuseki. On Mon, Dec 16, 2019 at 3:30 PM Andy Seaborne <[email protected]> wrote: > > The Dockerfile is at: > > https://github.com/mysql/mysql-docker/tree/mysql-server/8.0 > > all the work is done by > > docker-entrypoint.sh > > whcih si a 200 line shall script. > > and includes: > > "$@" --initialize-insecure > > an argument to mysqld, not a feature specific to the docker container image. > > Andy > > > On 16/12/2019 12:40, Martynas Jusevičius wrote: > > See "Initializing a fresh instance": https://hub.docker.com/_/mysql > > > > On Mon, Dec 16, 2019 at 12:20 PM Martynas Jusevičius > > <[email protected]> wrote: > >> > >> That's the thing: I don't want to execute docker run multiple times, > >> or remap ports manually. (In general we're using docker-compose much > >> more than plain docker run.) > >> > >> We want a super simple setup: docker-compose up and 4 or so services > >> start, waiting on each other to initialize. No more instructions, no > >> steps to follow, no room for error. > >> > >> And we have done that: by mounting the dataset I got Fuseki to import > >> data on startup -- but so far only using an in-memory dataset, not > >> TDB. > >> > >> GSP for loading data is fine, but Fuseki container should do it on > >> itself IMO. Waiting for completion by polling for specific data would > >> also work, but it does not sound like a generic solution to me -- and > >> increases coupling between containers. > >> > >> Bringing the Fuseki container online *after* data import is complete > >> would be a more general solution IMO, but I agree that complexity > >> increases. > >> I wasn't trying to reinvent the wheel here, just looked at how a > >> similar image (mysql) is addressing this. They seem to do an import on > >> a DB instance with networking disabled, and start a proper instance > >> after it's completed. > >> > >> > >> On Mon, Dec 16, 2019 at 11:45 AM Andy Seaborne <[email protected]> wrote: > >>> > >>> > >>> > >>> On 16/12/2019 09:23, Andy Seaborne wrote: > >>>> Remap it when starting the container. > >>>> > >>>> For loading test data, why not use GSP? Then the loading script > >>>> indicates when it is read for the other to use the container. > >>>> Or poll the server for specific data available. > >>> > >>> And in the 909 Dockerfile, the data can be placed in the container via > >>> a mount point. Separation of concerns - build the database or place the > >>> RDF files on the mount, then start the container. > >>> > >>> You can also use the container image to loader - the Java command line > >>> tools are available in the Fuseki jar file. "docker run" once to build > >>> on the volume for setup, "docker run" again to start and run Fuseki. > >>> > >>> Using java -cp fuseki-server.jar has always worked and is convenient > >>> when working on a remote server. (The commands take up very little > >>> space.) > >>> > >>> Andy > >>> > >>>> > >>>> Andy > >>>> > >>>> On 13/12/2019 23:37, Martynas Jusevičius wrote: > >>>>> Hi, > >>>>> > >>>>> is it possible to change the default port 3030 to something else by > >>>>> means of configuration? > >>>>> > >>>>> This is related to the Dockerfile which is a long time coming :) > >>>>> https://issues.apache.org/jira/browse/JENA-909 > >>>>> > >>>>> I need some init scripts that execute on Fuseki's launch (e.g. import > >>>>> mounted data) - but before making the server available externally. > >>>>> Other services are waiting on Fuseki, so we want to make sure it comes > >>>>> online only when the data is fully loaded. > >>>>> > >>>>> My plan is to follow roughly what the mysql entrypoint is doing: > >>>>> 1. start temporary Fuseki server on a non-EXPOSEd port > >>>>> 2. execute the init script(s) > >>>>> 3. shutdown the temporary server > >>>>> 4. start proper Fuseki server on the normal EXPOSEd port > >>>>> > >>>>> Would this work? > >>>>> > >>>>> Stian's image seems to do half of what I need: it can load the data, > >>>>> but does not look like it happens during startup - the load.sh needs > >>>>> to be run separately: > >>>>> https://github.com/stain/jena-docker/tree/master/jena-fuseki#data-loading > >>>>> > >>>>> I want to avoid any additional script executions after startup as > >>>>> we're aiming for a plain 'docker-compose up' launch of all services. > >>>>> > >>>>> Martynas > >>>>>
