Hi,

I'm trying to set up a Stardog container with Vagrant/Docker. The biggest 
challenge is to setup a volume that keeps changed data (e.g. persisted RDF 
data), even after a container restart. When I don't use VOLUME's, Stardog 
starts just fine but won't keep its persisted data. When I do use a VOLUME, 
Stardog even fails to load. This is how I've setup the environment.

To create a virtualbox machine, I'm using the following Vagrantfile 
(initialized with vagrant up)

Vagrant.configure("2") do |config| 
 config.vm.box = "ubuntu/trusty64"
 config.vm.hostname = "dh01"
 config.vm.provision "docker"
 
 config.vm.provision "shell", inline:
    "ps aux | grep 'sshd:' | awk '{print $2}' | xargs kill"
 
 config.vm.provider "virtualbox" do |v|
 v.name = "vagrant_docker_host"
 v.memory = 2048
 v.cpus = 2
 end
 
 config.vm.network "forwarded_port", guest: 5820, host: 5820 
end

As the persisted RDF data should still be available when a Stardog 
container is reloaded, a data container is created to keep a volume.

config.vm.define "data_container" do |v|
    v.vm.provider "docker" do |d|
      d.vagrant_vagrantfile = "./docker/Vagrantfile"
      d.name = "data_container"
      d.image = "busybox" 
      d.remains_running = false
      d.create_args = ["--entrypoint", "/bin/true"]
   d.volumes = [
  "/data/stardog/:/data/stardog"
   ]
    end
end 

The Stardog container is started with the following Vagrantfile that points 
to given Dockerfile:

config.vm.define "stardog" do |v|
    v.vm.provider "docker" do |d|
      d.vagrant_vagrantfile = "./docker/Vagrantfile"
      d.build_dir = "./stardog"
      d.name = "stardog"      
      d.ports = [ '5820:5820' ]
  d.remains_running = true
  d.create_args = ["--volumes-from=data_container"]
    end
end


FROM java:openjdk-7-jdk

ENV STARDOG_VER stardog-3.1.3
ENV STARDOG_HOME /data/stardog

WORKDIR /

COPY ${STARDOG_VER}.zip /
RUN unzip ${STARDOG_VER}.zip

COPY stardog.properties ${STARDOG_HOME}/
COPY stardog-license-key.bin ${STARDOG_HOME}/

EXPOSE 5820

WORKDIR /${STARDOG_VER}

CMD bin/stardog-admin server start && (tail -f $STARDOG_HOME/stardog.log &) 
&& while (pidof java > /dev/null); do sleep 1; done

With given configuration, the two COPY statements seem to be ignored. Both 
files aren't copied and that causes Stardog to fail on initialization. As 
to no surprise, the destination folder corresponds to the folder that is 
defined in the volume argument.

When I leave out the entry "d.create_args = 
["--volumes-from=data_container"]", Stardog loads fine but won't "remember" 
its data after a restart. So to summerize, I'm trying to use a volume with 
a folder /data/stardog in the docker VM that synchronizes with a folder 
/data/stardog in the stardog container. Any help is appreciated!

-- 
This mailing list is governed under the HashiCorp Community Guidelines - 
https://www.hashicorp.com/community-guidelines.html. Behavior in violation of 
those guidelines may result in your removal from this mailing list.

GitHub Issues: https://github.com/mitchellh/vagrant/issues
IRC: #vagrant on Freenode
--- 
You received this message because you are subscribed to the Google Groups 
"Vagrant" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vagrant-up/0bac425b-5444-4600-8561-692c1e5ff433%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to