Module: Docker

Extended by:
Docker
Included in:
Docker
Defined in:
lib/scripts/docker/build.rb,
lib/scripts/docker/login.rb,
lib/scripts/docker/herokuish.rb,
lib/scripts/docker/push_branch.rb,
lib/scripts/docker/push_latest.rb

Instance Method Summary collapse

Instance Method Details

#buildObject



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# File 'lib/scripts/docker/build.rb', line 3

def build
  required_env("DOCKER_IMAGE")

  # set image tag if it hasnt been set
  env_check("IMAGE_TAG", `git rev-parse HEAD`.strip)

  dockerfile = env_fetch("BUILD_DOCKERFILE", "Dockerfile")
  # project_folder = env_fetch("DOCKER_FOLDER", ".")

  # build docker image
  command("docker build --pull -t \"$DOCKER_IMAGE:$IMAGE_TAG\" -f #{dockerfile} .")

  # push docker image
  command('docker push "$DOCKER_IMAGE:$IMAGE_TAG"')
end

#herokuishObject



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/scripts/docker/herokuish.rb', line 3

def herokuish
  # set image tag if it hasnt been set
  # also has to support old ruby versions
  dockerfile_contents = <<-DOCKERFILE
    FROM gliderlabs/herokuish

    COPY . /app

    RUN /bin/herokuish buildpack build

    CMD ["/start", "web"]
  DOCKERFILE

  dockerfile_contents = unindent(dockerfile_contents)

  timed_run "Creating herokuish dockerfile" do
    File.write("Dockerfile.herokuish", dockerfile_contents)

    ENV["BUILD_DOCKERFILE"] = "Dockerfile.herokuish"
  end

  run_script("docker/build")
end

#loginObject



3
4
5
6
7
8
9
10
11
12
13
14
15
16
# File 'lib/scripts/docker/login.rb', line 3

def 
  # set image tag if it hasnt been set
  required_env("DOCKER_USERNAME")
  required_env("DOCKER_PASSWORD")

  env_check("DOCKER_EMAIL", "[email protected]")

  docker_registry = env_fetch("DOCKER_REGISTRY", nil)

  # login to docker hub
   = 'docker login -u "$DOCKER_USERNAME" -p "$DOCKER_PASSWORD" -e "$DOCKER_EMAIL"'
   += " #{docker_registry}" if docker_registry
  command()
end

#push_branchObject



3
4
5
6
7
8
9
10
11
12
13
14
15
16
# File 'lib/scripts/docker/push_branch.rb', line 3

def push_branch
  required_env("DOCKER_IMAGE")

  # set image tag if it hasnt been set
  env_check("IMAGE_TAG", `git rev-parse HEAD`.strip)

  branch = `git rev-parse --abbrev-ref HEAD`.strip

  # tag image
  command("docker tag \"$DOCKER_IMAGE:$IMAGE_TAG\" \"$DOCKER_IMAGE:#{branch}\"")

  # push docker image
  command("docker push \"$DOCKER_IMAGE:#{branch}\"")
end

#push_latestObject



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/scripts/docker/push_latest.rb', line 3

def push_latest
  latest_branch = env_fetch("DOCKER_LATEST_BRANCH", "master")

  branch = `git rev-parse --abbrev-ref HEAD`.strip
  return if branch != latest_branch

  required_env("DOCKER_IMAGE")

  # set image tag if it hasnt been set
  env_check("IMAGE_TAG", `git rev-parse HEAD`.strip)

  # tag latest image
  command('docker tag "$DOCKER_IMAGE:$IMAGE_TAG" "$DOCKER_IMAGE:latest"')

  # push docker image
  command('docker push "$DOCKER_IMAGE:latest"')
end