This comes with support for Bind Mounts at Build Time
If available in Hex, the package can be installed
by adding ex_docker_build to your list of dependencies in mix.exs:
def deps do
  [
    {:ex_docker_build, "~> 0.6.2"}
  ]
endDocumentation can be generated with ExDoc and published on HexDocs. Once published, the docs can be found at https://hexdocs.pm/ex_docker_build.
Clone the following example in a directory you wish
$> mkdir ~/workspace
$> cd workspace
$> git clone https://github.com/sescobb27/elixir-docker-guideStart a mix session with iex -S mix and type the following instructions
path = Path.expand("~/workspace/elixir-docker-guide")
{:ok, image_id} = Path.join([path, "Dockerfile"]) |>
  ExDockerBuild.DockerfileParser.parse_file!() |>
  ExDockerBuild.DockerBuild.build(path)Or you can start using escript:
mix escript.build
Generated escript ex_docker_buildThen call the escript passing the path to a Dockerfile
./ex_docker_build ~/workspace/elixir-docker-guide/Dockerfile
[info]  image created d44264c48dadCopy the image_id into your clipboard and run the image with docker like this
docker run d44264c48dad # d44264c48dad being the image_idin test/fixtures/Dockerfile_bind.dockerfile in line 2 VOLUME /Users/kiro/test:/data
change /Users/kiro/test with your path of preference e.g /Your/User/test
(must be an absolute path, relative paths aren't supported yet)
$> mkdir ~/testpath = Path.expand("./test/fixtures")
{:ok, image_id} = Path.join([path, "Dockerfile_bind.dockerfile"]) |>
  ExDockerBuild.DockerfileParser.parse_file!() |>
  ExDockerBuild.DockerBuild.build(path)Then if you run ls ~/test you should see a file named myfile.txt with
hello world!!! as content
This library respects the environmental variable DOCKER_HOST this can be
very helpful when debugging, for example:
In on terminal run socat :
socat -v UNIX-LISTEN:/tmp/fake,fork UNIX-CONNECT:/var/run/docker.sock
In the terminal where you are running ex_docker_build set the docker socket :
export DOCKER_HOST=unix:///tmp/fake
Now you can observe all interactions with the Docker API server.
- Doesn't support relative paths in the container when 
COPYingCOPY ./relative/path/to/origin:/absolute/path/to/destination
 - Doesn't support standard 
VOLUMES, it only supports the followingVOLUMEs type with custom syntax- Bind Mounts e.g 
VOLUME ~/path/to/host/dir:/path/to/container/dir - Named Volumes e.g 
VOLUME volume_nameand then using it likeVOLUME volume_name:/path/to/container/dir 
 - Bind Mounts e.g 
 
- add support for more docker file instructions
 - resolve TODOs inside the source code
 
