Using stack’s awesome docker integration I got an unexpected error.
> stack build /home/kondy/.stack/config.yaml: openBinaryFile: does not exist (No such file or directory)
After poking around for a bit I discovered that it was my symlinked dotfiles causing the error, not docker or stack.
Running the build with the
--verbose command to gain some further insight
> stack build --verbose 2016-04-12 15:25:34.077559: [debug] Run process: /usr/bin/docker start -a -i a401a0b1a6c48774f175acf8c2ff83279f0641f5fdb6df62be586b6c7348de0c @(stack_5xoCB8Vl1plFNNNfk8BYdK:System.Process.Run src/System/Process/Run.hs:105:5)
We see the error is proceeded by a
docker start command. The long command above this in the verbose build output it the
docker create command, which contains the following volume mount..
This maps my stack dotfiles to a same folder in stack’s docker build container. I have stack.yaml symlinked to ~/.stack.
lrwxrwxrwx 1 kondy 56 Apr 12 15:22 config.yaml -> /home/kondy/src/dotfiles/apps/stack/config.yaml
Checking the mounted
/home/kondy/.stack folder from within docker shows
config.yaml again symlinked to
/home/kondy/src/dotfiles/apps/stack/config.yaml, which doesn’t not exist in the docker container.
For now I have simply remove the symlink from my dotfiles. The files changes infrequently enough to make this a passable solution for now. This is a known limitation of docker and is not planned to be fixed in the future.