├── manage ├── __init__.py ├── __main__.py ├── push.py ├── readme.py ├── build.py ├── manifest.py └── create.py ├── .gitignore ├── Pipfile ├── 1.5 ├── onbuild │ └── Dockerfile └── Dockerfile ├── 1.6 ├── onbuild │ └── Dockerfile └── Dockerfile ├── 1.7 ├── onbuild │ └── Dockerfile └── Dockerfile ├── 1.8 ├── onbuild │ └── Dockerfile └── Dockerfile ├── 1.9 ├── onbuild │ └── Dockerfile └── Dockerfile ├── 1.10 ├── onbuild │ └── Dockerfile └── Dockerfile ├── 1.11 ├── onbuild │ └── Dockerfile └── Dockerfile ├── 1.12 ├── onbuild │ └── Dockerfile └── Dockerfile ├── 1.13 ├── onbuild │ └── Dockerfile └── Dockerfile ├── 1.14 ├── onbuild │ └── Dockerfile └── Dockerfile ├── 1.15.0 ├── onbuild │ └── Dockerfile └── Dockerfile ├── 1.15 ├── onbuild │ └── Dockerfile └── Dockerfile ├── 1.16 ├── onbuild │ └── Dockerfile └── Dockerfile ├── 1.17 ├── onbuild │ └── Dockerfile └── Dockerfile ├── beta ├── onbuild │ └── Dockerfile └── Dockerfile ├── stable ├── onbuild │ └── Dockerfile └── Dockerfile ├── nightly ├── onbuild │ └── Dockerfile └── Dockerfile ├── templates ├── Dockerfile_onbuild.mustache └── Dockerfile.mustache ├── docker-tags.yml ├── Pipfile.lock └── README.md /manage/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.pyc 2 | manifest.yml 3 | __pycache__ -------------------------------------------------------------------------------- /Pipfile: -------------------------------------------------------------------------------- 1 | [[source]] 2 | url = "https://pypi.python.org/simple" 3 | verify_ssl = true 4 | 5 | [packages] 6 | pyyaml = "*" 7 | pystache = "*" 8 | docker = "*" 9 | -------------------------------------------------------------------------------- /1.5/onbuild/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM scorpil/rust:1.5 2 | 3 | RUN mkdir -p /rust/app 4 | WORKDIR /rust/app 5 | 6 | ONBUILD COPY . /rust/app 7 | ONBUILD RUN cargo build --release 8 | 9 | CMD cargo run --release 10 | -------------------------------------------------------------------------------- /1.6/onbuild/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM scorpil/rust:1.6 2 | 3 | RUN mkdir -p /rust/app 4 | WORKDIR /rust/app 5 | 6 | ONBUILD COPY . /rust/app 7 | ONBUILD RUN cargo build --release 8 | 9 | CMD cargo run --release 10 | -------------------------------------------------------------------------------- /1.7/onbuild/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM scorpil/rust:1.7 2 | 3 | RUN mkdir -p /rust/app 4 | WORKDIR /rust/app 5 | 6 | ONBUILD COPY . /rust/app 7 | ONBUILD RUN cargo build --release 8 | 9 | CMD cargo run --release 10 | -------------------------------------------------------------------------------- /1.8/onbuild/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM scorpil/rust:1.8 2 | 3 | RUN mkdir -p /rust/app 4 | WORKDIR /rust/app 5 | 6 | ONBUILD COPY . /rust/app 7 | ONBUILD RUN cargo build --release 8 | 9 | CMD cargo run --release 10 | -------------------------------------------------------------------------------- /1.9/onbuild/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM scorpil/rust:1.9 2 | 3 | RUN mkdir -p /rust/app 4 | WORKDIR /rust/app 5 | 6 | ONBUILD COPY . /rust/app 7 | ONBUILD RUN cargo build --release 8 | 9 | CMD cargo run --release 10 | -------------------------------------------------------------------------------- /1.10/onbuild/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM scorpil/rust:1.10 2 | 3 | RUN mkdir -p /rust/app 4 | WORKDIR /rust/app 5 | 6 | ONBUILD COPY . /rust/app 7 | ONBUILD RUN cargo build --release 8 | 9 | CMD cargo run --release 10 | -------------------------------------------------------------------------------- /1.11/onbuild/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM scorpil/rust:1.11 2 | 3 | RUN mkdir -p /rust/app 4 | WORKDIR /rust/app 5 | 6 | ONBUILD COPY . /rust/app 7 | ONBUILD RUN cargo build --release 8 | 9 | CMD cargo run --release 10 | -------------------------------------------------------------------------------- /1.12/onbuild/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM scorpil/rust:1.12 2 | 3 | RUN mkdir -p /rust/app 4 | WORKDIR /rust/app 5 | 6 | ONBUILD COPY . /rust/app 7 | ONBUILD RUN cargo build --release 8 | 9 | CMD cargo run --release 10 | -------------------------------------------------------------------------------- /1.13/onbuild/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM scorpil/rust:1.13 2 | 3 | RUN mkdir -p /rust/app 4 | WORKDIR /rust/app 5 | 6 | ONBUILD COPY . /rust/app 7 | ONBUILD RUN cargo build --release 8 | 9 | CMD cargo run --release 10 | -------------------------------------------------------------------------------- /1.14/onbuild/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM scorpil/rust:1.14 2 | 3 | RUN mkdir -p /rust/app 4 | WORKDIR /rust/app 5 | 6 | ONBUILD COPY . /rust/app 7 | ONBUILD RUN cargo build --release 8 | 9 | CMD cargo run --release 10 | -------------------------------------------------------------------------------- /1.15.0/onbuild/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM scorpil/rust:1.15.0 2 | 3 | RUN mkdir -p /rust/app 4 | WORKDIR /rust/app 5 | 6 | ONBUILD COPY . /rust/app 7 | ONBUILD RUN cargo build --release 8 | 9 | CMD cargo run --release 10 | -------------------------------------------------------------------------------- /1.15/onbuild/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM scorpil/rust:1.15 2 | 3 | RUN mkdir -p /rust/app 4 | WORKDIR /rust/app 5 | 6 | ONBUILD COPY . /rust/app 7 | ONBUILD RUN cargo build --release 8 | 9 | CMD cargo run --release 10 | -------------------------------------------------------------------------------- /1.16/onbuild/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM scorpil/rust:1.16 2 | 3 | RUN mkdir -p /rust/app 4 | WORKDIR /rust/app 5 | 6 | ONBUILD COPY . /rust/app 7 | ONBUILD RUN cargo build --release 8 | 9 | CMD cargo run --release 10 | -------------------------------------------------------------------------------- /1.17/onbuild/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM scorpil/rust:1.17 2 | 3 | RUN mkdir -p /rust/app 4 | WORKDIR /rust/app 5 | 6 | ONBUILD COPY . /rust/app 7 | ONBUILD RUN cargo build --release 8 | 9 | CMD cargo run --release 10 | -------------------------------------------------------------------------------- /beta/onbuild/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM scorpil/rust:beta 2 | 3 | RUN mkdir -p /rust/app 4 | WORKDIR /rust/app 5 | 6 | ONBUILD COPY . /rust/app 7 | ONBUILD RUN cargo build --release 8 | 9 | CMD cargo run --release 10 | -------------------------------------------------------------------------------- /stable/onbuild/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM scorpil/rust:stable 2 | 3 | RUN mkdir -p /rust/app 4 | WORKDIR /rust/app 5 | 6 | ONBUILD COPY . /rust/app 7 | ONBUILD RUN cargo build --release 8 | 9 | CMD cargo run --release 10 | -------------------------------------------------------------------------------- /nightly/onbuild/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM scorpil/rust:nightly 2 | 3 | RUN mkdir -p /rust/app 4 | WORKDIR /rust/app 5 | 6 | ONBUILD COPY . /rust/app 7 | ONBUILD RUN cargo build --release 8 | 9 | CMD cargo run --release 10 | -------------------------------------------------------------------------------- /templates/Dockerfile_onbuild.mustache: -------------------------------------------------------------------------------- 1 | FROM scorpil/rust:{{ parent }} 2 | 3 | RUN mkdir -p {{ app_home }} 4 | WORKDIR {{ app_home }} 5 | 6 | ONBUILD COPY . {{ app_home }} 7 | ONBUILD RUN cargo build --release 8 | 9 | CMD cargo run --release 10 | -------------------------------------------------------------------------------- /manage/__main__.py: -------------------------------------------------------------------------------- 1 | import sys 2 | from .create import create 3 | from .build import build 4 | from .readme import readme 5 | from .push import push 6 | 7 | 8 | def usage(): 9 | print("Commands available: {}".format(', '.join(COMMANDS.keys()))) 10 | 11 | COMMANDS = { 12 | 'create': create, 13 | 'build': build, 14 | 'push': push, 15 | 'readme': readme, 16 | 'help': usage, 17 | } 18 | 19 | 20 | if __name__ == "__main__": 21 | if len(sys.argv) < 2: 22 | usage() 23 | exit(0) 24 | 25 | COMMANDS.get(sys.argv[1], usage)() 26 | -------------------------------------------------------------------------------- /manage/push.py: -------------------------------------------------------------------------------- 1 | from __future__ import print_function 2 | import docker 3 | from datetime import datetime 4 | 5 | from .manifest import Manifest 6 | 7 | 8 | def push(): 9 | client = docker.from_env() 10 | manifest = Manifest.load() 11 | for main_tag, image_data in manifest.containers.items(): 12 | for tag in image_data['tags']: 13 | push_text = "Pushing {}:{} ... ".format( 14 | manifest.dockerhub_repo, tag) 15 | print(push_text, end='') 16 | 17 | client.images.push(manifest.dockerhub_repo, tag) 18 | print(u"\u2713") 19 | manifest.containers.update(main_tag, pushed=datetime.now()) 20 | manifest.store() 21 | -------------------------------------------------------------------------------- /manage/readme.py: -------------------------------------------------------------------------------- 1 | from .manifest import Manifest 2 | 3 | 4 | GITHUB_BASE = 'https://github.com/' 5 | 6 | def readme(): 7 | manifest = Manifest.load() 8 | readme = "# Supported tags and respective `Dockerfile` links\n" 9 | for main_version, image_data in manifest.containers.items(): 10 | dockerfile_path = image_data['path'].lstrip('.') 11 | tags_md = ', '.join(map(lambda t: '`{}`'.format(t), image_data['tags'])) 12 | repo_file = "{}/{}/blob/master{}".format( 13 | GITHUB_BASE.rstrip('/'), 14 | manifest.github_repo.rstrip('/'), 15 | dockerfile_path) 16 | readme += "- [{} (*{}*)]({})\n".format(tags_md, dockerfile_path, repo_file) 17 | print(readme) 18 | -------------------------------------------------------------------------------- /1.10/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM debian:jessie 2 | MAINTAINER Andrew Scorpil "dev@scorpil.com" 3 | 4 | ENV DEBIAN_FRONTEND=noninteractive 5 | 6 | RUN apt-get update && \ 7 | apt-get install \ 8 | ca-certificates \ 9 | curl \ 10 | gcc \ 11 | libc6-dev \ 12 | -qqy \ 13 | --no-install-recommends \ 14 | && rm -rf /var/lib/apt/lists/* 15 | 16 | ENV RUST_ARCHIVE=rust-1.10.0-x86_64-unknown-linux-gnu.tar.gz 17 | ENV RUST_DOWNLOAD_URL=https://static.rust-lang.org/dist/$RUST_ARCHIVE 18 | 19 | RUN mkdir -p /rust 20 | WORKDIR /rust 21 | 22 | RUN curl -fsOSL $RUST_DOWNLOAD_URL \ 23 | && curl -s $RUST_DOWNLOAD_URL.sha256 | sha256sum -c - \ 24 | && tar -C /rust -xzf $RUST_ARCHIVE --strip-components=1 \ 25 | && rm $RUST_ARCHIVE \ 26 | && ./install.sh 27 | -------------------------------------------------------------------------------- /1.11/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM debian:jessie 2 | MAINTAINER Andrew Scorpil "dev@scorpil.com" 3 | 4 | ENV DEBIAN_FRONTEND=noninteractive 5 | 6 | RUN apt-get update && \ 7 | apt-get install \ 8 | ca-certificates \ 9 | curl \ 10 | gcc \ 11 | libc6-dev \ 12 | -qqy \ 13 | --no-install-recommends \ 14 | && rm -rf /var/lib/apt/lists/* 15 | 16 | ENV RUST_ARCHIVE=rust-1.11.0-x86_64-unknown-linux-gnu.tar.gz 17 | ENV RUST_DOWNLOAD_URL=https://static.rust-lang.org/dist/$RUST_ARCHIVE 18 | 19 | RUN mkdir -p /rust 20 | WORKDIR /rust 21 | 22 | RUN curl -fsOSL $RUST_DOWNLOAD_URL \ 23 | && curl -s $RUST_DOWNLOAD_URL.sha256 | sha256sum -c - \ 24 | && tar -C /rust -xzf $RUST_ARCHIVE --strip-components=1 \ 25 | && rm $RUST_ARCHIVE \ 26 | && ./install.sh 27 | -------------------------------------------------------------------------------- /1.12/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM debian:jessie 2 | MAINTAINER Andrew Scorpil "dev@scorpil.com" 3 | 4 | ENV DEBIAN_FRONTEND=noninteractive 5 | 6 | RUN apt-get update && \ 7 | apt-get install \ 8 | ca-certificates \ 9 | curl \ 10 | gcc \ 11 | libc6-dev \ 12 | -qqy \ 13 | --no-install-recommends \ 14 | && rm -rf /var/lib/apt/lists/* 15 | 16 | ENV RUST_ARCHIVE=rust-1.12.0-x86_64-unknown-linux-gnu.tar.gz 17 | ENV RUST_DOWNLOAD_URL=https://static.rust-lang.org/dist/$RUST_ARCHIVE 18 | 19 | RUN mkdir -p /rust 20 | WORKDIR /rust 21 | 22 | RUN curl -fsOSL $RUST_DOWNLOAD_URL \ 23 | && curl -s $RUST_DOWNLOAD_URL.sha256 | sha256sum -c - \ 24 | && tar -C /rust -xzf $RUST_ARCHIVE --strip-components=1 \ 25 | && rm $RUST_ARCHIVE \ 26 | && ./install.sh 27 | -------------------------------------------------------------------------------- /1.13/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM debian:jessie 2 | MAINTAINER Andrew Scorpil "dev@scorpil.com" 3 | 4 | ENV DEBIAN_FRONTEND=noninteractive 5 | 6 | RUN apt-get update && \ 7 | apt-get install \ 8 | ca-certificates \ 9 | curl \ 10 | gcc \ 11 | libc6-dev \ 12 | -qqy \ 13 | --no-install-recommends \ 14 | && rm -rf /var/lib/apt/lists/* 15 | 16 | ENV RUST_ARCHIVE=rust-1.13.0-x86_64-unknown-linux-gnu.tar.gz 17 | ENV RUST_DOWNLOAD_URL=https://static.rust-lang.org/dist/$RUST_ARCHIVE 18 | 19 | RUN mkdir -p /rust 20 | WORKDIR /rust 21 | 22 | RUN curl -fsOSL $RUST_DOWNLOAD_URL \ 23 | && curl -s $RUST_DOWNLOAD_URL.sha256 | sha256sum -c - \ 24 | && tar -C /rust -xzf $RUST_ARCHIVE --strip-components=1 \ 25 | && rm $RUST_ARCHIVE \ 26 | && ./install.sh 27 | -------------------------------------------------------------------------------- /1.14/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM debian:jessie 2 | MAINTAINER Andrew Scorpil "dev@scorpil.com" 3 | 4 | ENV DEBIAN_FRONTEND=noninteractive 5 | 6 | RUN apt-get update && \ 7 | apt-get install \ 8 | ca-certificates \ 9 | curl \ 10 | gcc \ 11 | libc6-dev \ 12 | -qqy \ 13 | --no-install-recommends \ 14 | && rm -rf /var/lib/apt/lists/* 15 | 16 | ENV RUST_ARCHIVE=rust-1.14.0-x86_64-unknown-linux-gnu.tar.gz 17 | ENV RUST_DOWNLOAD_URL=https://static.rust-lang.org/dist/$RUST_ARCHIVE 18 | 19 | RUN mkdir -p /rust 20 | WORKDIR /rust 21 | 22 | RUN curl -fsOSL $RUST_DOWNLOAD_URL \ 23 | && curl -s $RUST_DOWNLOAD_URL.sha256 | sha256sum -c - \ 24 | && tar -C /rust -xzf $RUST_ARCHIVE --strip-components=1 \ 25 | && rm $RUST_ARCHIVE \ 26 | && ./install.sh 27 | -------------------------------------------------------------------------------- /1.15/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM debian:jessie 2 | MAINTAINER Andrew Scorpil "dev@scorpil.com" 3 | 4 | ENV DEBIAN_FRONTEND=noninteractive 5 | 6 | RUN apt-get update && \ 7 | apt-get install \ 8 | ca-certificates \ 9 | curl \ 10 | gcc \ 11 | libc6-dev \ 12 | -qqy \ 13 | --no-install-recommends \ 14 | && rm -rf /var/lib/apt/lists/* 15 | 16 | ENV RUST_ARCHIVE=rust-1.15.1-x86_64-unknown-linux-gnu.tar.gz 17 | ENV RUST_DOWNLOAD_URL=https://static.rust-lang.org/dist/$RUST_ARCHIVE 18 | 19 | RUN mkdir -p /rust 20 | WORKDIR /rust 21 | 22 | RUN curl -fsOSL $RUST_DOWNLOAD_URL \ 23 | && curl -s $RUST_DOWNLOAD_URL.sha256 | sha256sum -c - \ 24 | && tar -C /rust -xzf $RUST_ARCHIVE --strip-components=1 \ 25 | && rm $RUST_ARCHIVE \ 26 | && ./install.sh 27 | -------------------------------------------------------------------------------- /1.16/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM debian:jessie 2 | MAINTAINER Andrew Scorpil "dev@scorpil.com" 3 | 4 | ENV DEBIAN_FRONTEND=noninteractive 5 | 6 | RUN apt-get update && \ 7 | apt-get install \ 8 | ca-certificates \ 9 | curl \ 10 | gcc \ 11 | libc6-dev \ 12 | -qqy \ 13 | --no-install-recommends \ 14 | && rm -rf /var/lib/apt/lists/* 15 | 16 | ENV RUST_ARCHIVE=rust-1.16.0-x86_64-unknown-linux-gnu.tar.gz 17 | ENV RUST_DOWNLOAD_URL=https://static.rust-lang.org/dist/$RUST_ARCHIVE 18 | 19 | RUN mkdir -p /rust 20 | WORKDIR /rust 21 | 22 | RUN curl -fsOSL $RUST_DOWNLOAD_URL \ 23 | && curl -s $RUST_DOWNLOAD_URL.sha256 | sha256sum -c - \ 24 | && tar -C /rust -xzf $RUST_ARCHIVE --strip-components=1 \ 25 | && rm $RUST_ARCHIVE \ 26 | && ./install.sh 27 | -------------------------------------------------------------------------------- /1.17/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM debian:jessie 2 | MAINTAINER Andrew Scorpil "dev@scorpil.com" 3 | 4 | ENV DEBIAN_FRONTEND=noninteractive 5 | 6 | RUN apt-get update && \ 7 | apt-get install \ 8 | ca-certificates \ 9 | curl \ 10 | gcc \ 11 | libc6-dev \ 12 | -qqy \ 13 | --no-install-recommends \ 14 | && rm -rf /var/lib/apt/lists/* 15 | 16 | ENV RUST_ARCHIVE=rust-1.17.0-x86_64-unknown-linux-gnu.tar.gz 17 | ENV RUST_DOWNLOAD_URL=https://static.rust-lang.org/dist/$RUST_ARCHIVE 18 | 19 | RUN mkdir -p /rust 20 | WORKDIR /rust 21 | 22 | RUN curl -fsOSL $RUST_DOWNLOAD_URL \ 23 | && curl -s $RUST_DOWNLOAD_URL.sha256 | sha256sum -c - \ 24 | && tar -C /rust -xzf $RUST_ARCHIVE --strip-components=1 \ 25 | && rm $RUST_ARCHIVE \ 26 | && ./install.sh 27 | -------------------------------------------------------------------------------- /1.5/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM debian:jessie 2 | MAINTAINER Andrew Scorpil "dev@scorpil.com" 3 | 4 | ENV DEBIAN_FRONTEND=noninteractive 5 | 6 | RUN apt-get update && \ 7 | apt-get install \ 8 | ca-certificates \ 9 | curl \ 10 | gcc \ 11 | libc6-dev \ 12 | -qqy \ 13 | --no-install-recommends \ 14 | && rm -rf /var/lib/apt/lists/* 15 | 16 | ENV RUST_ARCHIVE=rust-1.5.0-x86_64-unknown-linux-gnu.tar.gz 17 | ENV RUST_DOWNLOAD_URL=https://static.rust-lang.org/dist/$RUST_ARCHIVE 18 | 19 | RUN mkdir -p /rust 20 | WORKDIR /rust 21 | 22 | RUN curl -fsOSL $RUST_DOWNLOAD_URL \ 23 | && curl -s $RUST_DOWNLOAD_URL.sha256 | sha256sum -c - \ 24 | && tar -C /rust -xzf $RUST_ARCHIVE --strip-components=1 \ 25 | && rm $RUST_ARCHIVE \ 26 | && ./install.sh 27 | -------------------------------------------------------------------------------- /1.6/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM debian:jessie 2 | MAINTAINER Andrew Scorpil "dev@scorpil.com" 3 | 4 | ENV DEBIAN_FRONTEND=noninteractive 5 | 6 | RUN apt-get update && \ 7 | apt-get install \ 8 | ca-certificates \ 9 | curl \ 10 | gcc \ 11 | libc6-dev \ 12 | -qqy \ 13 | --no-install-recommends \ 14 | && rm -rf /var/lib/apt/lists/* 15 | 16 | ENV RUST_ARCHIVE=rust-1.6.0-x86_64-unknown-linux-gnu.tar.gz 17 | ENV RUST_DOWNLOAD_URL=https://static.rust-lang.org/dist/$RUST_ARCHIVE 18 | 19 | RUN mkdir -p /rust 20 | WORKDIR /rust 21 | 22 | RUN curl -fsOSL $RUST_DOWNLOAD_URL \ 23 | && curl -s $RUST_DOWNLOAD_URL.sha256 | sha256sum -c - \ 24 | && tar -C /rust -xzf $RUST_ARCHIVE --strip-components=1 \ 25 | && rm $RUST_ARCHIVE \ 26 | && ./install.sh 27 | -------------------------------------------------------------------------------- /1.7/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM debian:jessie 2 | MAINTAINER Andrew Scorpil "dev@scorpil.com" 3 | 4 | ENV DEBIAN_FRONTEND=noninteractive 5 | 6 | RUN apt-get update && \ 7 | apt-get install \ 8 | ca-certificates \ 9 | curl \ 10 | gcc \ 11 | libc6-dev \ 12 | -qqy \ 13 | --no-install-recommends \ 14 | && rm -rf /var/lib/apt/lists/* 15 | 16 | ENV RUST_ARCHIVE=rust-1.7.0-x86_64-unknown-linux-gnu.tar.gz 17 | ENV RUST_DOWNLOAD_URL=https://static.rust-lang.org/dist/$RUST_ARCHIVE 18 | 19 | RUN mkdir -p /rust 20 | WORKDIR /rust 21 | 22 | RUN curl -fsOSL $RUST_DOWNLOAD_URL \ 23 | && curl -s $RUST_DOWNLOAD_URL.sha256 | sha256sum -c - \ 24 | && tar -C /rust -xzf $RUST_ARCHIVE --strip-components=1 \ 25 | && rm $RUST_ARCHIVE \ 26 | && ./install.sh 27 | -------------------------------------------------------------------------------- /1.8/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM debian:jessie 2 | MAINTAINER Andrew Scorpil "dev@scorpil.com" 3 | 4 | ENV DEBIAN_FRONTEND=noninteractive 5 | 6 | RUN apt-get update && \ 7 | apt-get install \ 8 | ca-certificates \ 9 | curl \ 10 | gcc \ 11 | libc6-dev \ 12 | -qqy \ 13 | --no-install-recommends \ 14 | && rm -rf /var/lib/apt/lists/* 15 | 16 | ENV RUST_ARCHIVE=rust-1.8.0-x86_64-unknown-linux-gnu.tar.gz 17 | ENV RUST_DOWNLOAD_URL=https://static.rust-lang.org/dist/$RUST_ARCHIVE 18 | 19 | RUN mkdir -p /rust 20 | WORKDIR /rust 21 | 22 | RUN curl -fsOSL $RUST_DOWNLOAD_URL \ 23 | && curl -s $RUST_DOWNLOAD_URL.sha256 | sha256sum -c - \ 24 | && tar -C /rust -xzf $RUST_ARCHIVE --strip-components=1 \ 25 | && rm $RUST_ARCHIVE \ 26 | && ./install.sh 27 | -------------------------------------------------------------------------------- /1.9/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM debian:jessie 2 | MAINTAINER Andrew Scorpil "dev@scorpil.com" 3 | 4 | ENV DEBIAN_FRONTEND=noninteractive 5 | 6 | RUN apt-get update && \ 7 | apt-get install \ 8 | ca-certificates \ 9 | curl \ 10 | gcc \ 11 | libc6-dev \ 12 | -qqy \ 13 | --no-install-recommends \ 14 | && rm -rf /var/lib/apt/lists/* 15 | 16 | ENV RUST_ARCHIVE=rust-1.9.0-x86_64-unknown-linux-gnu.tar.gz 17 | ENV RUST_DOWNLOAD_URL=https://static.rust-lang.org/dist/$RUST_ARCHIVE 18 | 19 | RUN mkdir -p /rust 20 | WORKDIR /rust 21 | 22 | RUN curl -fsOSL $RUST_DOWNLOAD_URL \ 23 | && curl -s $RUST_DOWNLOAD_URL.sha256 | sha256sum -c - \ 24 | && tar -C /rust -xzf $RUST_ARCHIVE --strip-components=1 \ 25 | && rm $RUST_ARCHIVE \ 26 | && ./install.sh 27 | -------------------------------------------------------------------------------- /beta/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM debian:jessie 2 | MAINTAINER Andrew Scorpil "dev@scorpil.com" 3 | 4 | ENV DEBIAN_FRONTEND=noninteractive 5 | 6 | RUN apt-get update && \ 7 | apt-get install \ 8 | ca-certificates \ 9 | curl \ 10 | gcc \ 11 | libc6-dev \ 12 | -qqy \ 13 | --no-install-recommends \ 14 | && rm -rf /var/lib/apt/lists/* 15 | 16 | ENV RUST_ARCHIVE=rust-beta-x86_64-unknown-linux-gnu.tar.gz 17 | ENV RUST_DOWNLOAD_URL=https://static.rust-lang.org/dist/$RUST_ARCHIVE 18 | 19 | RUN mkdir -p /rust 20 | WORKDIR /rust 21 | 22 | RUN curl -fsOSL $RUST_DOWNLOAD_URL \ 23 | && curl -s $RUST_DOWNLOAD_URL.sha256 | sha256sum -c - \ 24 | && tar -C /rust -xzf $RUST_ARCHIVE --strip-components=1 \ 25 | && rm $RUST_ARCHIVE \ 26 | && ./install.sh 27 | -------------------------------------------------------------------------------- /1.15.0/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM debian:jessie 2 | MAINTAINER Andrew Scorpil "dev@scorpil.com" 3 | 4 | ENV DEBIAN_FRONTEND=noninteractive 5 | 6 | RUN apt-get update && \ 7 | apt-get install \ 8 | ca-certificates \ 9 | curl \ 10 | gcc \ 11 | libc6-dev \ 12 | -qqy \ 13 | --no-install-recommends \ 14 | && rm -rf /var/lib/apt/lists/* 15 | 16 | ENV RUST_ARCHIVE=rust-1.15.0-x86_64-unknown-linux-gnu.tar.gz 17 | ENV RUST_DOWNLOAD_URL=https://static.rust-lang.org/dist/$RUST_ARCHIVE 18 | 19 | RUN mkdir -p /rust 20 | WORKDIR /rust 21 | 22 | RUN curl -fsOSL $RUST_DOWNLOAD_URL \ 23 | && curl -s $RUST_DOWNLOAD_URL.sha256 | sha256sum -c - \ 24 | && tar -C /rust -xzf $RUST_ARCHIVE --strip-components=1 \ 25 | && rm $RUST_ARCHIVE \ 26 | && ./install.sh 27 | -------------------------------------------------------------------------------- /nightly/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM debian:jessie 2 | MAINTAINER Andrew Scorpil "dev@scorpil.com" 3 | 4 | ENV DEBIAN_FRONTEND=noninteractive 5 | 6 | RUN apt-get update && \ 7 | apt-get install \ 8 | ca-certificates \ 9 | curl \ 10 | gcc \ 11 | libc6-dev \ 12 | -qqy \ 13 | --no-install-recommends \ 14 | && rm -rf /var/lib/apt/lists/* 15 | 16 | ENV RUST_ARCHIVE=rust-nightly-x86_64-unknown-linux-gnu.tar.gz 17 | ENV RUST_DOWNLOAD_URL=https://static.rust-lang.org/dist/$RUST_ARCHIVE 18 | 19 | RUN mkdir -p /rust 20 | WORKDIR /rust 21 | 22 | RUN curl -fsOSL $RUST_DOWNLOAD_URL \ 23 | && curl -s $RUST_DOWNLOAD_URL.sha256 | sha256sum -c - \ 24 | && tar -C /rust -xzf $RUST_ARCHIVE --strip-components=1 \ 25 | && rm $RUST_ARCHIVE \ 26 | && ./install.sh 27 | -------------------------------------------------------------------------------- /stable/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM debian:jessie 2 | MAINTAINER Andrew Scorpil "dev@scorpil.com" 3 | 4 | ENV DEBIAN_FRONTEND=noninteractive 5 | 6 | RUN apt-get update && \ 7 | apt-get install \ 8 | ca-certificates \ 9 | curl \ 10 | gcc \ 11 | libc6-dev \ 12 | -qqy \ 13 | --no-install-recommends \ 14 | && rm -rf /var/lib/apt/lists/* 15 | 16 | ENV RUST_ARCHIVE=rust-1.18.0-x86_64-unknown-linux-gnu.tar.gz 17 | ENV RUST_DOWNLOAD_URL=https://static.rust-lang.org/dist/$RUST_ARCHIVE 18 | 19 | RUN mkdir -p /rust 20 | WORKDIR /rust 21 | 22 | RUN curl -fsOSL $RUST_DOWNLOAD_URL \ 23 | && curl -s $RUST_DOWNLOAD_URL.sha256 | sha256sum -c - \ 24 | && tar -C /rust -xzf $RUST_ARCHIVE --strip-components=1 \ 25 | && rm $RUST_ARCHIVE \ 26 | && ./install.sh 27 | -------------------------------------------------------------------------------- /templates/Dockerfile.mustache: -------------------------------------------------------------------------------- 1 | FROM debian:jessie 2 | MAINTAINER Andrew Scorpil "dev@scorpil.com" 3 | 4 | ENV DEBIAN_FRONTEND=noninteractive 5 | 6 | RUN apt-get update && \ 7 | apt-get install \ 8 | ca-certificates \ 9 | curl \ 10 | gcc \ 11 | libc6-dev \ 12 | -qqy \ 13 | --no-install-recommends \ 14 | && rm -rf /var/lib/apt/lists/* 15 | 16 | ENV RUST_ARCHIVE={{ archive }} 17 | ENV RUST_DOWNLOAD_URL=https://static.rust-lang.org/dist/$RUST_ARCHIVE 18 | 19 | RUN mkdir -p {{ rust_home }} 20 | WORKDIR {{ rust_home }} 21 | 22 | RUN curl -fsOSL $RUST_DOWNLOAD_URL \ 23 | && curl -s $RUST_DOWNLOAD_URL.sha256 | sha256sum -c - \ 24 | && tar -C {{ rust_home }} -xzf $RUST_ARCHIVE --strip-components=1 \ 25 | && rm $RUST_ARCHIVE \ 26 | && ./install.sh 27 | -------------------------------------------------------------------------------- /docker-tags.yml: -------------------------------------------------------------------------------- 1 | dockerhub_repo: scorpil/rust 2 | github_repo: scorpil/docker-rust 3 | images: 4 | - version: '1.12' 5 | archive: 'rust-1.12.0-x86_64-unknown-linux-gnu.tar.gz' 6 | - version: '1.13' 7 | archive: 'rust-1.13.0-x86_64-unknown-linux-gnu.tar.gz' 8 | - version: '1.14' 9 | archive: 'rust-1.14.0-x86_64-unknown-linux-gnu.tar.gz' 10 | - version: '1.15.0' 11 | archive: 'rust-1.15.0-x86_64-unknown-linux-gnu.tar.gz' 12 | - version: '1.15' 13 | archive: 'rust-1.15.1-x86_64-unknown-linux-gnu.tar.gz' 14 | extra_tags: 15 | - '1.15.1' 16 | - version: '1.16' 17 | archive: 'rust-1.16.0-x86_64-unknown-linux-gnu.tar.gz' 18 | - version: '1.17' 19 | archive: 'rust-1.17.0-x86_64-unknown-linux-gnu.tar.gz' 20 | - version: '1.18' 21 | channel: 'stable' 22 | archive: 'rust-1.18.0-x86_64-unknown-linux-gnu.tar.gz' 23 | extra_tags: 24 | - '1' 25 | - version: '1.19' 26 | channel: 'beta' 27 | archive: 'rust-beta-x86_64-unknown-linux-gnu.tar.gz' 28 | - version: '1.20' 29 | channel: 'nightly' 30 | archive: 'rust-nightly-x86_64-unknown-linux-gnu.tar.gz' -------------------------------------------------------------------------------- /manage/build.py: -------------------------------------------------------------------------------- 1 | from __future__ import print_function 2 | import sys 3 | import os 4 | import docker 5 | from datetime import datetime 6 | 7 | from .manifest import Manifest 8 | 9 | 10 | def build(): 11 | start = datetime.now() 12 | client = docker.from_env() 13 | manifest = Manifest.load() 14 | for main_tag, image_data in manifest.containers.items(): 15 | result_column = 35 16 | building_text = "{}s: Bulding {} ... ".format( 17 | (datetime.now() - start).seconds, main_tag) 18 | spaces = result_column - len(building_text) 19 | if spaces < 1: 20 | spaces = 1 21 | 22 | print("{}{}".format(building_text, ' ' * spaces), end='') 23 | sys.stdout.flush() 24 | 25 | image = client.images.build( 26 | fileobj=file(image_data['path'], 'r'), 27 | tag="{}:{}".format(manifest.dockerhub_repo, main_tag), 28 | nocache=True) 29 | rustc_version = client.containers.run(image.id, command="rustc -V").strip() 30 | manifest.containers.update(main_tag, 31 | image=image.short_id, 32 | rustc=rustc_version, 33 | updated=datetime.now()) 34 | for tag in image_data['tags']: 35 | image.tag('scorpil/rust', tag) 36 | print(u"\u2713 [image: {} | rustc: {}]".format(image.short_id, rustc_version)) 37 | sys.stdout.flush() 38 | manifest.store() 39 | -------------------------------------------------------------------------------- /Pipfile.lock: -------------------------------------------------------------------------------- 1 | { 2 | "default": { 3 | "websocket-client": { 4 | "version": "==0.40.0", 5 | "hash": "sha256:40ac14a0c54e14d22809a5c8d553de5a2ae45de3c60105fae53bcb281b3fe6fb" 6 | }, 7 | "pyyaml": { 8 | "version": "==3.12", 9 | "hash": "sha256:592766c6303207a20efc445587778322d7f73b161bd994f227adaa341ba212ab" 10 | }, 11 | "pystache": { 12 | "version": "==0.5.4", 13 | "hash": "sha256:f7bbc265fb957b4d6c7c042b336563179444ab313fb93a719759111eabd3b85a" 14 | }, 15 | "requests": { 16 | "version": "==2.13.0", 17 | "hash": "sha256:1a720e8862a41aa22e339373b526f508ef0c8988baf48b84d3fc891a8e237efb" 18 | }, 19 | "six": { 20 | "version": "==1.10.0", 21 | "hash": "sha256:0ff78c403d9bccf5a425a6d31a12aa6b47f1c21ca4dc2573a7e2f32a97335eb1" 22 | }, 23 | "docker": { 24 | "version": "==2.1.0", 25 | "hash": "sha256:4c0588b6b640983a01c86175c2a42cc0777bcef10c5ae82ad505d3207141b4c8" 26 | }, 27 | "docker-pycreds": { 28 | "version": "==0.2.1", 29 | "hash": "sha256:58d2688f92de5d6f1a6ac4fe25da461232f0e0a4c1212b93b256b046b2d714a9" 30 | } 31 | }, 32 | "develop": {}, 33 | "_meta": { 34 | "sources": [ 35 | { 36 | "url": "https://pypi.python.org/simple", 37 | "verify_ssl": true 38 | } 39 | ], 40 | "requires": {}, 41 | "hash": { 42 | "sha256": "df094fcce22ac12b69b2f943791b237bd3232ce7b3485f25f663bbd6e17b4d96" 43 | } 44 | } 45 | } -------------------------------------------------------------------------------- /manage/manifest.py: -------------------------------------------------------------------------------- 1 | import yaml 2 | from datetime import datetime 3 | 4 | 5 | MANIFEST_FILE = './manifest.yml' 6 | 7 | 8 | class Containers(dict): 9 | @staticmethod 10 | def _version_ordering(version_str): 11 | scores = { 12 | 'stable': 100, 13 | 'beta': 101, 14 | 'nightly': 102, 15 | } 16 | parts = version_str.split('.') 17 | if '-' in parts[-1]: 18 | last, extra = parts[-1].split('-', 1) 19 | parts = parts[:-1] 20 | parts.append(last) 21 | else: 22 | extra = '' 23 | 24 | parts = list(map(lambda v: scores[v] if v in scores.keys() else v, parts)) 25 | parts = list(map(int, parts)) 26 | parts.append(extra) 27 | return parts 28 | 29 | def add(self, path, version, archive, channel, extra_tags, onbuild): 30 | tags = Manifest._make_tags(version, channel, extra_tags, onbuild) 31 | self[tags[0]] = { 32 | 'path': path, 33 | 'archive': archive, 34 | 'channel': channel, 35 | 'onbuild': onbuild, 36 | 'rustc': None, 37 | 'image': None, 38 | 'pushed': None, 39 | 'updated': datetime.now(), 40 | 'tags': tags 41 | } 42 | 43 | def update(self, main_tag, **kwargs): 44 | self[main_tag].update(kwargs) 45 | 46 | 47 | def items(self): 48 | for key in sorted(self.keys(), key=self._version_ordering): 49 | yield key, self[key] 50 | 51 | 52 | class Manifest(object): 53 | def __init__(self): 54 | self.dockerhub_repo = None 55 | self.github_repo = None 56 | self.containers = Containers() 57 | self.created = datetime.now() 58 | self.updated = datetime.now() 59 | 60 | @staticmethod 61 | def load(): 62 | try: 63 | yml_stream = open(MANIFEST_FILE, 'r') 64 | except IOError: 65 | return Manifest() 66 | return yaml.load(yml_stream) 67 | 68 | @staticmethod 69 | def _make_tags(version, channel, extra_tags, onbuild): 70 | if onbuild: 71 | transform = lambda tag: "{}-onbuild".format(tag) 72 | else: 73 | transform = lambda tag: str(tag) 74 | 75 | tags = [] 76 | if channel: 77 | tags.append(transform(channel)) 78 | tags.append(transform(version)) 79 | if extra_tags: 80 | tags += map(transform, extra_tags) 81 | return tags 82 | 83 | def store(self): 84 | self.updated = datetime.now() 85 | yaml.dump(self, open(MANIFEST_FILE, 'w'), default_flow_style=False) 86 | -------------------------------------------------------------------------------- /manage/create.py: -------------------------------------------------------------------------------- 1 | import os 2 | import yaml 3 | import pystache 4 | 5 | from .manifest import Manifest 6 | 7 | 8 | DFILE_PATH = './templates/Dockerfile.mustache' 9 | DFILE_ONBUILD_PATH = './templates/Dockerfile_onbuild.mustache' 10 | 11 | dfile_template = open(DFILE_PATH, 'r').read() 12 | dfile_onbuild_template = open(DFILE_ONBUILD_PATH, 'r').read() 13 | 14 | tags_file_stream = open('docker-tags.yml', 'r') 15 | 16 | 17 | def make_dfile_path(version, channel, onbuild): 18 | dfile_path_items = ['.'] 19 | if channel: 20 | dfile_path_items.append(channel) 21 | else: 22 | dfile_path_items.append(str(version)) 23 | 24 | if onbuild: 25 | dfile_path_items.append('onbuild') 26 | 27 | dfile_path_items.append('Dockerfile') 28 | 29 | return '/'.join(dfile_path_items) 30 | 31 | def base_template(onbuild): 32 | if onbuild: 33 | return dfile_onbuild_template 34 | return dfile_template 35 | 36 | def dfile_generate(version, archive, channel=None, onbuild=False): 37 | dfile_path = make_dfile_path(version, channel, onbuild) 38 | template_vars = {} 39 | if onbuild: 40 | template_vars['parent'] = channel or version 41 | template_vars['app_home'] = '/rust/app' 42 | template = dfile_onbuild_template 43 | else: 44 | template_vars['archive'] = archive 45 | template_vars['rust_home'] = '/rust' 46 | template = dfile_template 47 | 48 | dfile_content = pystache.render(template, template_vars) 49 | return dfile_write(dfile_path, dfile_content) 50 | 51 | def dfile_write(dfile_path, dfile_content): 52 | try: 53 | os.makedirs(os.path.dirname(dfile_path)) 54 | except OSError: 55 | pass 56 | 57 | with open(dfile_path, 'w') as dfile: 58 | dfile.write(dfile_content) 59 | return dfile_path 60 | 61 | def create(): 62 | manifest = Manifest.load() 63 | tags_info = yaml.safe_load(tags_file_stream) 64 | manifest.dockerhub_repo = tags_info['dockerhub_repo'] 65 | manifest.github_repo = tags_info['github_repo'] 66 | for image in tags_info['images']: 67 | version = image['version'] 68 | archive = image['archive'] 69 | channel = image.get('channel') 70 | extra_tags = image.get('extra_tags') 71 | 72 | path = dfile_generate(version, archive, channel, onbuild=False) 73 | manifest.containers.add(path, version, archive, channel, 74 | extra_tags, onbuild=False) 75 | 76 | onbuild_path = dfile_generate(version, archive, channel, onbuild=True) 77 | manifest.containers.add(onbuild_path, version, archive, channel, 78 | extra_tags, onbuild=True) 79 | 80 | manifest.store() 81 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Supported tags and respective `Dockerfile` links 2 | - [`1.5` (*/1.5/Dockerfile*)](https://github.com/scorpil/docker-rust/blob/master/1.5/Dockerfile) 3 | - [`1.5-onbuild` (*/1.5/onbuild/Dockerfile*)](https://github.com/scorpil/docker-rust/blob/master/1.5/onbuild/Dockerfile) 4 | - [`1.6` (*/1.6/Dockerfile*)](https://github.com/scorpil/docker-rust/blob/master/1.6/Dockerfile) 5 | - [`1.6-onbuild` (*/1.6/onbuild/Dockerfile*)](https://github.com/scorpil/docker-rust/blob/master/1.6/onbuild/Dockerfile) 6 | - [`1.7` (*/1.7/Dockerfile*)](https://github.com/scorpil/docker-rust/blob/master/1.7/Dockerfile) 7 | - [`1.7-onbuild` (*/1.7/onbuild/Dockerfile*)](https://github.com/scorpil/docker-rust/blob/master/1.7/onbuild/Dockerfile) 8 | - [`1.8` (*/1.8/Dockerfile*)](https://github.com/scorpil/docker-rust/blob/master/1.8/Dockerfile) 9 | - [`1.8-onbuild` (*/1.8/onbuild/Dockerfile*)](https://github.com/scorpil/docker-rust/blob/master/1.8/onbuild/Dockerfile) 10 | - [`1.9` (*/1.9/Dockerfile*)](https://github.com/scorpil/docker-rust/blob/master/1.9/Dockerfile) 11 | - [`1.9-onbuild` (*/1.9/onbuild/Dockerfile*)](https://github.com/scorpil/docker-rust/blob/master/1.9/onbuild/Dockerfile) 12 | - [`1.10` (*/1.10/Dockerfile*)](https://github.com/scorpil/docker-rust/blob/master/1.10/Dockerfile) 13 | - [`1.10-onbuild` (*/1.10/onbuild/Dockerfile*)](https://github.com/scorpil/docker-rust/blob/master/1.10/onbuild/Dockerfile) 14 | - [`1.11` (*/1.11/Dockerfile*)](https://github.com/scorpil/docker-rust/blob/master/1.11/Dockerfile) 15 | - [`1.11-onbuild` (*/1.11/onbuild/Dockerfile*)](https://github.com/scorpil/docker-rust/blob/master/1.11/onbuild/Dockerfile) 16 | - [`1.12` (*/1.12/Dockerfile*)](https://github.com/scorpil/docker-rust/blob/master/1.12/Dockerfile) 17 | - [`1.12-onbuild` (*/1.12/onbuild/Dockerfile*)](https://github.com/scorpil/docker-rust/blob/master/1.12/onbuild/Dockerfile) 18 | - [`1.13` (*/1.13/Dockerfile*)](https://github.com/scorpil/docker-rust/blob/master/1.13/Dockerfile) 19 | - [`1.13-onbuild` (*/1.13/onbuild/Dockerfile*)](https://github.com/scorpil/docker-rust/blob/master/1.13/onbuild/Dockerfile) 20 | - [`1.14` (*/1.14/Dockerfile*)](https://github.com/scorpil/docker-rust/blob/master/1.14/Dockerfile) 21 | - [`1.14-onbuild` (*/1.14/onbuild/Dockerfile*)](https://github.com/scorpil/docker-rust/blob/master/1.14/onbuild/Dockerfile) 22 | - [`1.15.0` (*/1.15.0/Dockerfile*)](https://github.com/scorpil/docker-rust/blob/master/1.15.0/Dockerfile) 23 | - [`1.15.0-onbuild` (*/1.15.0/onbuild/Dockerfile*)](https://github.com/scorpil/docker-rust/blob/master/1.15.0/onbuild/Dockerfile) 24 | - [`1.15`, `1.15.1` (*/1.15/Dockerfile*)](https://github.com/scorpil/docker-rust/blob/master/1.15/Dockerfile) 25 | - [`1.15-onbuild`, `1.15.1-onbuild` (*/1.15/onbuild/Dockerfile*)](https://github.com/scorpil/docker-rust/blob/master/1.15/onbuild/Dockerfile) 26 | - [`1.16` (*/1.16/Dockerfile*)](https://github.com/scorpil/docker-rust/blob/master/1.16/Dockerfile) 27 | - [`1.16-onbuild` (*/1.16/onbuild/Dockerfile*)](https://github.com/scorpil/docker-rust/blob/master/1.16/onbuild/Dockerfile) 28 | - [`1.17` (*/1.17/Dockerfile*)](https://github.com/scorpil/docker-rust/blob/master/1.17/Dockerfile) 29 | - [`1.17-onbuild` (*/1.17/onbuild/Dockerfile*)](https://github.com/scorpil/docker-rust/blob/master/1.17/onbuild/Dockerfile) 30 | - [`stable`, `1.18`, `1` (*/stable/Dockerfile*)](https://github.com/scorpil/docker-rust/blob/master/stable/Dockerfile) 31 | - [`stable-onbuild`, `1.18-onbuild`, `1-onbuild` (*/stable/onbuild/Dockerfile*)](https://github.com/scorpil/docker-rust/blob/master/stable/onbuild/Dockerfile) 32 | - [`beta`, `1.19` (*/beta/Dockerfile*)](https://github.com/scorpil/docker-rust/blob/master/beta/Dockerfile) 33 | - [`beta-onbuild`, `1.19-onbuild` (*/beta/onbuild/Dockerfile*)](https://github.com/scorpil/docker-rust/blob/master/beta/onbuild/Dockerfile) 34 | - [`nightly`, `1.20` (*/nightly/Dockerfile*)](https://github.com/scorpil/docker-rust/blob/master/nightly/Dockerfile) 35 | - [`nightly-onbuild`, `1.20-onbuild` (*/nightly/onbuild/Dockerfile*)](https://github.com/scorpil/docker-rust/blob/master/nightly/onbuild/Dockerfile) 36 | 37 | --------------------------------------------------------------------------------