Skip to content
vic

edib-tool/mix-edib

A mix task for EDIB (elixir docker image builder)

edib-tool/mix-edib.json
{
"createdAt": "2015-10-31T13:33:19Z",
"defaultBranch": "master",
"description": "A mix task for EDIB (elixir docker image builder)",
"fullName": "edib-tool/mix-edib",
"homepage": "https://hex.pm/packages/edib",
"language": "Elixir",
"name": "mix-edib",
"pushedAt": "2023-08-27T12:05:36Z",
"stargazersCount": 83,
"topics": [
"builder",
"container",
"docker",
"edib",
"elixir",
"image",
"mix",
"tool"
],
"updatedAt": "2024-10-27T03:23:53Z",
"url": "https://github.com/edib-tool/mix-edib"
}

Hex.pm package version Hex.pm package docs Hex.pm package license Build Status (master) Coverage Status (master) Deps Status Inline docs

A mix task for EDIB (elixir docker image builder).

EDIB creates a docker image of your application release.

Just run this and confirm:

mix archive.install hex edib

Don’t forget to add distillery to your project:

defp deps do
[
{:distillery, "~> 1.1"},
]
end
mix edib

mix-edib will use the MIX_ENV environment variable to build the image.

MIX_ENV=staging mix edib

WARNING: If MIX_ENV is not set EDIB will build the image for the prod environment.

mix help edib

Override the (repository) name of the docker image

mix edib --name <NAME>
mix edib -n <NAME>

Set only a specific prefix for the docker image name (default: local)

mix edib --prefix <PREFIX>
mix edib -p <PREFIX>

Set a specific tag for the docker image

mix edib --tag <TAG>
mix edib -t <TAG>

If --name and --prefix are given, the name option takes precedence (prefix will be ignored).

Following options use https://github.com/ntrepid8/ex_strip_zip in the edib-tool build environment.

All .beam files in a release can be stripped (mostly of debug information):

mix edib --strip
mix edib -x

More technical information about stripping: http://erlang.org/doc/man/beam_lib.html#strip-1

All OTP applications can be bundled into archives (.ez files):

mix edib --zip
mix edib -z

WARNING: Do not use this if you have NIFs in your codebase or dependencies.

More technical information about “Loading of Code From Archive Files”: http://erlang.org/doc/man/code.html#id104826

Silence build output of EDIB (will be logged to .edib.log instead)

mix edib --silent
mix edib -s

Map additional volumes for use while building the release

mix edib --mapping <FROM>:<TO>[:<OPTION>]
mix edib -m <FROM>:<TO>[:<OPTION>]

For common cases there are some mapping shorthands:

Include the host user’s SSH keys for private GitHub repositories

mix edib --ssh-keys

Include host user’s .hex/packages cache

Can improve build times when the host’s .hex cache is available for every build run (tip for Travis CI: use their directory caching)

mix edib --hex

Include host user’s .npm package cache

Can improve build times when the host’s .npm cache is available for every build run (tip for Travis CI: use their directory caching)

mix edib --npm

Docker flags (mostly for debug purposes):

Run the build step privileged

mix edib --privileged

Do not remove intermediate containers on build runs

mix edib --no-rm

Select edib-tool docker image (complete repo + version)

mix edib --edib edib/edib-tool:1.5.2
mix edib -e edib/edib-tool:1.5.2