The latest version of the River4 Docker image now supports volumes, which provides for data to persist across a container. NOTE: If you use Kitematic to run the River4 container, there are some slight differences to how this works, which I will write about in another article.
Changes:
Create the river4data and subdirectories at build time (see Dockerfile)
Copy my full readinglist.opml to the /river4data/lists directory during build
Changed the CMD so that River4 is run from the root directory so that it finds river4data where it expects to find it as a subdirectory off root.
Mount /river4data as a volume during build.
You can run the container as before, it will now use the default readinglist without include.
docker run --name river4 -d -p 1337:1337 fmcpherson/river4
Confirm entering by docker logs river4
If you are running Docker Engine 1.8 or newer, you can use the docker cp command to copy your own readinglist.opml file in to the /river4data/lists directory in the container by entering the following (assuming the readinglist.opml is in the current directory, and you have named your container river4)
NOTE: The above change will not persist, if you shut down the container, the next time it starts will start up with the originally provided readinglist.opml. You can re-run the docker cp command after starting up the container to overwrite the file.
If you want the changes you make to readinglist.opml to persist, you need to "map" a local directory on your computer to the /river4data mount in the container. For example, assume you have a directory on your computer called /river, to start the river4 container in a way that data persists enter the following run command.
Now, if you overwrite the readinglist.opml with your own copy, it will persist after you shutdown the river4 container, provided you execute the run statement exactly as provided above.
After running the container, to overwrite enter
After this, the change you just made will persist, again provided you include the -v flag in the docker run statement as provided above.
If the -v flag is not included and you enter "docker run --name river4 -d -p 1337:1337 fmcpherson.river4" the original readinglist provided in the image will be used by the container.