module DeployDoc::Docker

Public Class Methods

cmd(configuration, envs, cmd, extra_opts = []) click to toggle source
# File lib/deploy_doc/docker.rb, line 3
def self.cmd(configuration, envs, cmd, extra_opts = [])
  data_dir = if configuration.data_dir == "."
               Dir.pwd
             else
               configuration.data_dir
             end

  docker_cmd = [
    "docker", 
    "run", 
    "-it",
    "--rm", 
    envs, 
    "-v#{data_dir}:/deploy_doc/data/",
    "-w/deploy_doc/data/"
  ]

  # Expose the host host docker daemon in the child docker container.
  docker_socket_protocol, docker_socket_address = configuration.docker_socket.split("://",2)
  case docker_socket_protocol
  when "unix"
    docker_cmd.push "-v#{docker_socket_address}:/var/run/docker.sock"
  when "tcp"
    docker_cmd.push "-e DOCKER_HOST='#{configuration.docker_socket}'"
  else
    raise DeployDocError.new("Unkown docker socket protocol '#{docker_socket_protocol}'")
  end

  docker_cmd += extra_opts
  docker_cmd += [configuration.docker_image, cmd]
  docker_cmd.join(" ")
end