Packages
nerves
0.11.0
1.15.0
1.14.3
1.14.2
1.14.1
1.14.0
1.13.2
1.13.1
1.13.0
1.12.0
1.11.3
1.11.2
1.11.1
1.11.0
1.10.5
1.10.4
1.10.3
1.10.2
1.10.1
1.10.0
1.9.3
1.9.2
retired
1.9.1
1.9.0
1.8.0
1.7.17
1.7.16
1.7.15
1.7.14
retired
1.7.13
1.7.12
1.7.11
1.7.10
1.7.9
1.7.8
1.7.7
1.7.6
1.7.5
1.7.4
1.7.3
1.7.2
retired
1.7.1
retired
1.7.0
retired
1.6.7
1.6.6
1.6.5
1.6.4
1.6.3
1.6.2
1.6.1
1.6.0
1.5.5
1.5.4
1.5.3
1.5.2
1.5.1
1.5.0
1.4.5
1.4.4
1.4.3
1.4.2
1.4.1
1.4.0
1.3.4
1.3.3
1.3.2
1.3.1
1.3.0
1.2.1
1.2.0
1.1.1
1.1.0
1.0.1
1.0.0
1.0.0-rc.2
1.0.0-rc.1
1.0.0-rc.0
0.11.0
0.10.1
0.10.0
0.9.4
0.9.3
0.9.2
0.9.1
0.9.0
0.8.3
0.8.2
0.8.1
0.8.0
0.7.5
0.7.4
0.7.3
0.7.2
0.7.1
0.7.0
0.6.1
0.6.0
0.5.2
0.5.1
0.5.0
0.4.8
0.4.7
0.4.6
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.4.0-rc.0
0.3.4
0.3.3
0.3.2
0.3.1
0.3.0
0.2.0
Craft and deploy bulletproof embedded software
Current section
Files
Jump to
Current section
Files
lib/nerves/artifact/providers/docker/image.ex
defmodule Nerves.Artifact.Providers.Docker.Image do
alias Nerves.Artifact.Providers.Docker
import Docker.Utils
def create(dockerfile, tag) do
cmd = "docker"
path = Path.dirname(dockerfile)
args = ["build", "--tag", "#{tag}", path]
shell_info("Create image")
if Mix.shell().yes?("The Nerves Docker provider needs to create the image.\nProceed? ") do
case Mix.Nerves.Utils.shell(cmd, args) do
{_, 0} -> :ok
_ -> Mix.raise("Nerves Docker provider could not create docker volume nerves_cache")
end
else
Mix.raise("Unable to use Nerves Docker provider without image")
end
end
def pull(tag) do
shell_info("Trying to pull image")
cmd = "docker"
args = ["pull", "#{tag}"]
case System.cmd(cmd, args, stderr_to_stdout: true) do
{<<"Cannot connect to the Docker daemon", _tail::binary>>, _} ->
Mix.raise("Nerves Docker provider is unable to connect to docker daemon")
{_, 0} ->
true
{_reason, _} ->
false
end
end
def exists?(tag) do
cmd = "docker"
args = ["image", "ls", "#{tag}", "-q"]
case System.cmd(cmd, args, stderr_to_stdout: true) do
{"", _} ->
false
{<<"Cannot connect to the Docker daemon", _tail::binary>>, _} ->
Mix.raise("Nerves Docker provider is unable to connect to docker daemon")
{_, 0} ->
true
end
end
end