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.