Packages
deli
0.2.0-rc.4
0.2.0-rc.6
0.2.0-rc.5
0.2.0-rc.4
0.2.0-rc.3
0.2.0-rc.2
0.2.0-rc.1
0.1.28
0.1.27
0.1.26
0.1.25
0.1.23
0.1.22
0.1.21
0.1.20
0.1.19
0.1.18
0.1.17
0.1.15
0.1.14
0.1.13
0.1.12
0.1.11
0.1.10
0.1.9
0.1.8
retired
0.1.7
retired
0.1.6
retired
0.1.5
retired
0.1.4
retired
0.1.3
retired
0.1.2
retired
0.1.1
retired
0.1.0
retired
Easy deployment for Elixir apps
Current section
Files
Jump to
Current section
Files
lib/deli/templates/dockerfile.ex
defmodule Deli.Templates.Dockerfile do
require EEx
alias Deli.BeamVersions
alias Deli.Release.Docker
@moduledoc false
@base_path "lib/templates/.deli/Dockerfile"
@deli_images ~w(
centos
debian
)a
@deli_bindings ~w(
tag
versions
app
user
yarn?
node_version
)a
@custom_bindings ~w(
docker_image
app
user
_yarn?
_node_version
)a
path = &Path.expand("#{@base_path}/#{&1}.eex")
EEx.function_from_file(:def, :build_centos, path.(:centos), @deli_bindings)
EEx.function_from_file(:def, :build_debian, path.(:debian), @deli_bindings)
EEx.function_from_file(:def, :build_custom, path.(:custom), @custom_bindings)
@spec build(Docker.build_target(), Deli.app(), atom, boolean, String.t()) :: String.t()
def build({:deli, {deli_image, tag}, beam_versions_opts}, app, user, yarn?, node_version)
when deli_image in @deli_images and (is_atom(tag) or is_binary(tag)) and
is_atom(app) and is_atom(user) and is_boolean(yarn?) and
is_binary(node_version) and is_list(beam_versions_opts) do
beam_versions = beam_versions_opts |> BeamVersions.fetch()
builder = builder(deli_image)
tag |> builder.(beam_versions, app, user, yarn?, node_version)
end
def build({:deli, {deli_image, tag}}, app, user, yarn?, node_version) do
{:deli, {deli_image, tag}, []} |> build(app, user, yarn?, node_version)
end
def build({:deli, deli_image}, app, user, yarn?, node_version) do
{:deli, {deli_image, :latest}} |> build(app, user, yarn?, node_version)
end
def build({:deli, deli_image, beam_versions}, app, user, yarn?, node_version) do
{:deli, deli_image, beam_versions} |> build(app, user, yarn?, node_version)
end
def build(docker_image, app, user, yarn?, node_version)
when (is_atom(docker_image) or is_binary(docker_image)) and
is_atom(app) and is_atom(user) and is_boolean(yarn?) and
is_binary(node_version) do
docker_image |> build_custom(app, user, yarn?, node_version)
end
def build({docker_image, tag}, app, user, yarn?, node_version)
when (is_atom(docker_image) or is_binary(docker_image)) and
is_atom(app) and is_atom(user) and is_boolean(yarn?) and
is_binary(node_version) do
"#{docker_image}:#{tag}" |> build(app, user, yarn?, node_version)
end
defp builder(:centos), do: &build_centos/6
defp builder(:debian), do: &build_debian/6
end