From 78d6ca135994ebe31bd8c4d3effb3e0896c2deed Mon Sep 17 00:00:00 2001 From: William Blankenship Date: Mon, 16 Mar 2015 19:08:12 -0500 Subject: [PATCH 1/3] Detect if base image uses buildpack-deps --- .template-helpers/variant.sh | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/.template-helpers/variant.sh b/.template-helpers/variant.sh index 86c5a6007..a60914e0e 100755 --- a/.template-helpers/variant.sh +++ b/.template-helpers/variant.sh @@ -9,9 +9,10 @@ if [ -z "$repo" ]; then fi dir="$(dirname "$(readlink -f "$BASH_SOURCE")")" +url='https://raw.githubusercontent.com/docker-library/official-images/master/library/'"$repo" IFS=$'\n' -tags=( $(curl -sSL 'https://raw.githubusercontent.com/docker-library/official-images/master/library/'"$repo" | grep -vE '^$|^#' | cut -d':' -f1 | sort -u) ) +tags=( $(curl -sSL $url | grep -vE '^$|^#' | cut -d':' -f1 | sort -u) ) unset IFS text= @@ -23,9 +24,14 @@ for tag in "${tags[@]}"; do fi done if [ "$text" ]; then - # give a little space - echo - echo - cat "$dir/variant.md" - echo "$text" + latest=($(curl -sSL $url | sed -e 's/git:\/\/github.com\///' -e 's/@/ /' - | grep "latest")) + dockerfile='https://raw.githubusercontent.com/'"${latest[1]}"'/'"${latest[2]}"'/'"${latest[3]}"'/Dockerfile' + base_image=$(curl -sSL $dockerfile | sed 's/:/\t/' | nawk '/^FROM .*$/ { print $2 }') + if [ "$base_image" = "buildpack-deps" ]; then + # give a little space + echo + echo + cat "$dir/variant.md" + echo "$text" + fi fi From a8517af5eaa7a4a672077738982222156a5179af Mon Sep 17 00:00:00 2001 From: William Blankenship Date: Tue, 17 Mar 2015 09:27:30 -0500 Subject: [PATCH 2/3] default `image-[version]` wording, and ran `update.sh` --- .template-helpers/variant-buildpacks.md | 7 +++++++ .template-helpers/variant.md | 2 +- .template-helpers/variant.sh | 10 ++++++---- django/README.md | 4 ++-- golang/README.md | 2 +- iojs/README.md | 2 +- maven/README.md | 4 ++-- mono/README.md | 4 ++-- node/README.md | 2 +- pypy/README.md | 2 +- rails/README.md | 4 ++-- ruby/README.md | 2 +- 12 files changed, 27 insertions(+), 18 deletions(-) create mode 100644 .template-helpers/variant-buildpacks.md diff --git a/.template-helpers/variant-buildpacks.md b/.template-helpers/variant-buildpacks.md new file mode 100644 index 000000000..554a78c42 --- /dev/null +++ b/.template-helpers/variant-buildpacks.md @@ -0,0 +1,7 @@ +# Image Variants + +The `%%REPO%%` images come in many flavors, each designed for a specific use case. + +## `%%REPO%%:` + +This is the defacto image. If you are unsure about what your needs are, you probably want to use this one. It is designed to be used both as a throw away container (mount your source code and start the container to start your app), as well as the base to build other images off of. This tag is based off of [`buildpack-deps`](https://registry.hub.docker.com/_/buildpack-deps/). `buildpack-deps` is designed for the average user of docker who has many images on their system. It, by design, has a large number of extremely common Debian packages. This reduces the number of packages that images that derive from it need to install, thus reducing the overall size of all images on your system. diff --git a/.template-helpers/variant.md b/.template-helpers/variant.md index 554a78c42..efcccf49c 100644 --- a/.template-helpers/variant.md +++ b/.template-helpers/variant.md @@ -4,4 +4,4 @@ The `%%REPO%%` images come in many flavors, each designed for a specific use cas ## `%%REPO%%:` -This is the defacto image. If you are unsure about what your needs are, you probably want to use this one. It is designed to be used both as a throw away container (mount your source code and start the container to start your app), as well as the base to build other images off of. This tag is based off of [`buildpack-deps`](https://registry.hub.docker.com/_/buildpack-deps/). `buildpack-deps` is designed for the average user of docker who has many images on their system. It, by design, has a large number of extremely common Debian packages. This reduces the number of packages that images that derive from it need to install, thus reducing the overall size of all images on your system. +This is the defacto image. If you are unsure about what your needs are, you probably want to use this one. It is designed to be used both as a throw away container (mount your source code and start the container to start your app), as well as the base to build other images off of. diff --git a/.template-helpers/variant.sh b/.template-helpers/variant.sh index a60914e0e..fce772d5b 100755 --- a/.template-helpers/variant.sh +++ b/.template-helpers/variant.sh @@ -27,11 +27,13 @@ if [ "$text" ]; then latest=($(curl -sSL $url | sed -e 's/git:\/\/github.com\///' -e 's/@/ /' - | grep "latest")) dockerfile='https://raw.githubusercontent.com/'"${latest[1]}"'/'"${latest[2]}"'/'"${latest[3]}"'/Dockerfile' base_image=$(curl -sSL $dockerfile | sed 's/:/\t/' | nawk '/^FROM .*$/ { print $2 }') + # give a little space + echo + echo if [ "$base_image" = "buildpack-deps" ]; then - # give a little space - echo - echo + cat "$dir/variant-buildpacks.md" + else cat "$dir/variant.md" - echo "$text" fi + echo "$text" fi diff --git a/django/README.md b/django/README.md index ca70dfc5a..4e32a3c46 100644 --- a/django/README.md +++ b/django/README.md @@ -54,11 +54,11 @@ The `django` images come in many flavors, each designed for a specific use case. ## `django:` -This is the defacto image. If you are unsure about what your needs are, you probably want to use this one. It is designed to be used both as a throw away container (mount your source code and start the container to start your app), as well as the base to build other images off of. This tag is based off of [`buildpack-deps`](https://registry.hub.docker.com/_/buildpack-deps/). `buildpack-deps` is designed for the average user of docker who has many images on their system. It, by design, has a large number of extremely common Debian packages. This reduces the number of packages that images that derive from it need to install, thus reducing the overall size of all images on your system. +This is the defacto image. If you are unsure about what your needs are, you probably want to use this one. It is designed to be used both as a throw away container (mount your source code and start the container to start your app), as well as the base to build other images off of. ## `django:onbuild` -This image makes building derivitative images easier. For most use cases, creating a `Dockerfile` in the base of your project directory with the line `FROM django:onbuild` will be enough to create a stand-alone image for your project. +This image makes building derivative images easier. For most use cases, creating a `Dockerfile` in the base of your project directory with the line `FROM django:onbuild` will be enough to create a stand-alone image for your project. # License diff --git a/golang/README.md b/golang/README.md index 809ed2921..9bf4c2e99 100644 --- a/golang/README.md +++ b/golang/README.md @@ -72,7 +72,7 @@ This is the defacto image. If you are unsure about what your needs are, you prob ## `golang:onbuild` -This image makes building derivitative images easier. For most use cases, creating a `Dockerfile` in the base of your project directory with the line `FROM golang:onbuild` will be enough to create a stand-alone image for your project. +This image makes building derivative images easier. For most use cases, creating a `Dockerfile` in the base of your project directory with the line `FROM golang:onbuild` will be enough to create a stand-alone image for your project. # License diff --git a/iojs/README.md b/iojs/README.md index d9d5d2756..12f4716f4 100644 --- a/iojs/README.md +++ b/iojs/README.md @@ -47,7 +47,7 @@ This is the defacto image. If you are unsure about what your needs are, you prob ## `iojs:onbuild` -This image makes building derivitative images easier. For most use cases, creating a `Dockerfile` in the base of your project directory with the line `FROM iojs:onbuild` will be enough to create a stand-alone image for your project. +This image makes building derivative images easier. For most use cases, creating a `Dockerfile` in the base of your project directory with the line `FROM iojs:onbuild` will be enough to create a stand-alone image for your project. ## `iojs:slim` diff --git a/maven/README.md b/maven/README.md index fd3442516..bbe9da49e 100644 --- a/maven/README.md +++ b/maven/README.md @@ -43,11 +43,11 @@ The `maven` images come in many flavors, each designed for a specific use case. ## `maven:` -This is the defacto image. If you are unsure about what your needs are, you probably want to use this one. It is designed to be used both as a throw away container (mount your source code and start the container to start your app), as well as the base to build other images off of. This tag is based off of [`buildpack-deps`](https://registry.hub.docker.com/_/buildpack-deps/). `buildpack-deps` is designed for the average user of docker who has many images on their system. It, by design, has a large number of extremely common Debian packages. This reduces the number of packages that images that derive from it need to install, thus reducing the overall size of all images on your system. +This is the defacto image. If you are unsure about what your needs are, you probably want to use this one. It is designed to be used both as a throw away container (mount your source code and start the container to start your app), as well as the base to build other images off of. ## `maven:onbuild` -This image makes building derivitative images easier. For most use cases, creating a `Dockerfile` in the base of your project directory with the line `FROM maven:onbuild` will be enough to create a stand-alone image for your project. +This image makes building derivative images easier. For most use cases, creating a `Dockerfile` in the base of your project directory with the line `FROM maven:onbuild` will be enough to create a stand-alone image for your project. # License diff --git a/mono/README.md b/mono/README.md index 54e17e560..fcb9608a2 100644 --- a/mono/README.md +++ b/mono/README.md @@ -52,11 +52,11 @@ The `mono` images come in many flavors, each designed for a specific use case. ## `mono:` -This is the defacto image. If you are unsure about what your needs are, you probably want to use this one. It is designed to be used both as a throw away container (mount your source code and start the container to start your app), as well as the base to build other images off of. This tag is based off of [`buildpack-deps`](https://registry.hub.docker.com/_/buildpack-deps/). `buildpack-deps` is designed for the average user of docker who has many images on their system. It, by design, has a large number of extremely common Debian packages. This reduces the number of packages that images that derive from it need to install, thus reducing the overall size of all images on your system. +This is the defacto image. If you are unsure about what your needs are, you probably want to use this one. It is designed to be used both as a throw away container (mount your source code and start the container to start your app), as well as the base to build other images off of. ## `mono:onbuild` -This image makes building derivitative images easier. For most use cases, creating a `Dockerfile` in the base of your project directory with the line `FROM mono:onbuild` will be enough to create a stand-alone image for your project. +This image makes building derivative images easier. For most use cases, creating a `Dockerfile` in the base of your project directory with the line `FROM mono:onbuild` will be enough to create a stand-alone image for your project. # License diff --git a/node/README.md b/node/README.md index aa5bcd3c0..8d5a058d8 100644 --- a/node/README.md +++ b/node/README.md @@ -60,7 +60,7 @@ This is the defacto image. If you are unsure about what your needs are, you prob ## `node:onbuild` -This image makes building derivitative images easier. For most use cases, creating a `Dockerfile` in the base of your project directory with the line `FROM node:onbuild` will be enough to create a stand-alone image for your project. +This image makes building derivative images easier. For most use cases, creating a `Dockerfile` in the base of your project directory with the line `FROM node:onbuild` will be enough to create a stand-alone image for your project. ## `node:slim` diff --git a/pypy/README.md b/pypy/README.md index 639e21b97..f9f03ad6a 100644 --- a/pypy/README.md +++ b/pypy/README.md @@ -58,7 +58,7 @@ This is the defacto image. If you are unsure about what your needs are, you prob ## `pypy:onbuild` -This image makes building derivitative images easier. For most use cases, creating a `Dockerfile` in the base of your project directory with the line `FROM pypy:onbuild` will be enough to create a stand-alone image for your project. +This image makes building derivative images easier. For most use cases, creating a `Dockerfile` in the base of your project directory with the line `FROM pypy:onbuild` will be enough to create a stand-alone image for your project. ## `pypy:slim` diff --git a/rails/README.md b/rails/README.md index 3055e9260..1f27eea5f 100644 --- a/rails/README.md +++ b/rails/README.md @@ -55,11 +55,11 @@ The `rails` images come in many flavors, each designed for a specific use case. ## `rails:` -This is the defacto image. If you are unsure about what your needs are, you probably want to use this one. It is designed to be used both as a throw away container (mount your source code and start the container to start your app), as well as the base to build other images off of. This tag is based off of [`buildpack-deps`](https://registry.hub.docker.com/_/buildpack-deps/). `buildpack-deps` is designed for the average user of docker who has many images on their system. It, by design, has a large number of extremely common Debian packages. This reduces the number of packages that images that derive from it need to install, thus reducing the overall size of all images on your system. +This is the defacto image. If you are unsure about what your needs are, you probably want to use this one. It is designed to be used both as a throw away container (mount your source code and start the container to start your app), as well as the base to build other images off of. ## `rails:onbuild` -This image makes building derivitative images easier. For most use cases, creating a `Dockerfile` in the base of your project directory with the line `FROM rails:onbuild` will be enough to create a stand-alone image for your project. +This image makes building derivative images easier. For most use cases, creating a `Dockerfile` in the base of your project directory with the line `FROM rails:onbuild` will be enough to create a stand-alone image for your project. # License diff --git a/ruby/README.md b/ruby/README.md index 19eb1619b..20186ace2 100644 --- a/ruby/README.md +++ b/ruby/README.md @@ -66,7 +66,7 @@ This is the defacto image. If you are unsure about what your needs are, you prob ## `ruby:onbuild` -This image makes building derivitative images easier. For most use cases, creating a `Dockerfile` in the base of your project directory with the line `FROM ruby:onbuild` will be enough to create a stand-alone image for your project. +This image makes building derivative images easier. For most use cases, creating a `Dockerfile` in the base of your project directory with the line `FROM ruby:onbuild` will be enough to create a stand-alone image for your project. ## `ruby:slim` From d50d3153084d3723ca23f5188651ca2701afdcb6 Mon Sep 17 00:00:00 2001 From: William Blankenship Date: Tue, 17 Mar 2015 17:53:55 -0500 Subject: [PATCH 3/3] Style changes and only process dockerfiles from github.com --- .template-helpers/variant.sh | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/.template-helpers/variant.sh b/.template-helpers/variant.sh index fce772d5b..1f6c7af27 100755 --- a/.template-helpers/variant.sh +++ b/.template-helpers/variant.sh @@ -9,10 +9,10 @@ if [ -z "$repo" ]; then fi dir="$(dirname "$(readlink -f "$BASH_SOURCE")")" -url='https://raw.githubusercontent.com/docker-library/official-images/master/library/'"$repo" +url='https://raw.githubusercontent.com/docker-library/official-images/master/library/'"$repo" IFS=$'\n' -tags=( $(curl -sSL $url | grep -vE '^$|^#' | cut -d':' -f1 | sort -u) ) +tags=( $(curl -sSL "$url" | grep -vE '^$|^#' | cut -d':' -f1 | sort -u) ) unset IFS text= @@ -24,16 +24,19 @@ for tag in "${tags[@]}"; do fi done if [ "$text" ]; then - latest=($(curl -sSL $url | sed -e 's/git:\/\/github.com\///' -e 's/@/ /' - | grep "latest")) - dockerfile='https://raw.githubusercontent.com/'"${latest[1]}"'/'"${latest[2]}"'/'"${latest[3]}"'/Dockerfile' - base_image=$(curl -sSL $dockerfile | sed 's/:/\t/' | nawk '/^FROM .*$/ { print $2 }') - # give a little space - echo - echo - if [ "$base_image" = "buildpack-deps" ]; then - cat "$dir/variant-buildpacks.md" - else - cat "$dir/variant.md" - fi - echo "$text" + latest=($(curl -sSL "$url" | grep "latest.*github.com" | sed -e 's!git://github.com/!!' -e 's/@/ /' -)) + if [ -z "latest" ]; then + exit 0 # If not github or no latest tag, we are done here + fi + dockerfile='https://raw.githubusercontent.com/'"${latest[1]}"'/'"${latest[2]}"'/'"${latest[3]}"'/Dockerfile' + baseImage=$(curl -sSL $dockerfile | sed 's/:/\t/' | awk '$1 == "FROM" { print $2 }') + # give a little space + echo + echo + if [ "$baseImage" = "buildpack-deps" ]; then + cat "$dir/variant-buildpacks.md" + else + cat "$dir/variant.md" + fi + echo "$text" fi