├── .dockerignore ├── .gitignore ├── .travis.yml ├── Dockerfile ├── LICENSE ├── MAINTAINERS ├── NEW-IMAGE-CHECKLIST.md ├── README.md ├── bashbrew ├── README.md ├── bashbrew-entrypoint.sh ├── bashbrew.sh ├── go │ ├── src │ │ └── bashbrew │ │ │ ├── cmd-build.go │ │ │ ├── cmd-cat.go │ │ │ ├── cmd-deps.go │ │ │ ├── cmd-from.go │ │ │ ├── cmd-list.go │ │ │ ├── cmd-push.go │ │ │ ├── cmd-tag.go │ │ │ ├── config.go │ │ │ ├── docker.go │ │ │ ├── git.go │ │ │ ├── main.go │ │ │ ├── repo.go │ │ │ └── sort.go │ └── vendor │ │ ├── manifest │ │ └── src │ │ ├── github.com │ │ ├── codegangsta │ │ │ └── cli │ │ │ │ ├── CHANGELOG.md │ │ │ │ ├── LICENSE │ │ │ │ ├── README.md │ │ │ │ ├── altsrc │ │ │ │ ├── flag.go │ │ │ │ ├── flag_test.go │ │ │ │ ├── helpers_test.go │ │ │ │ ├── input_source_context.go │ │ │ │ ├── map_input_source.go │ │ │ │ ├── yaml_command_test.go │ │ │ │ └── yaml_file_loader.go │ │ │ │ ├── app.go │ │ │ │ ├── app_test.go │ │ │ │ ├── appveyor.yml │ │ │ │ ├── autocomplete │ │ │ │ ├── bash_autocomplete │ │ │ │ └── zsh_autocomplete │ │ │ │ ├── category.go │ │ │ │ ├── cli.go │ │ │ │ ├── command.go │ │ │ │ ├── command_test.go │ │ │ │ ├── context.go │ │ │ │ ├── context_test.go │ │ │ │ ├── errors.go │ │ │ │ ├── errors_test.go │ │ │ │ ├── flag.go │ │ │ │ ├── flag_test.go │ │ │ │ ├── funcs.go │ │ │ │ ├── help.go │ │ │ │ ├── help_test.go │ │ │ │ └── helpers_test.go │ │ └── docker-library │ │ │ └── go-dockerlibrary │ │ │ ├── LICENSE │ │ │ ├── manifest │ │ │ ├── example.go │ │ │ ├── fetch.go │ │ │ ├── line-based.go │ │ │ ├── parse.go │ │ │ └── rfc2822.go │ │ │ └── pkg │ │ │ ├── execpipe │ │ │ └── execpipe.go │ │ │ ├── stripper │ │ │ └── comments.go │ │ │ └── templatelib │ │ │ └── lib.go │ │ ├── golang.org │ │ └── x │ │ │ └── crypto │ │ │ ├── cast5 │ │ │ ├── cast5.go │ │ │ └── cast5_test.go │ │ │ └── openpgp │ │ │ ├── armor │ │ │ ├── armor.go │ │ │ ├── armor_test.go │ │ │ └── encode.go │ │ │ ├── canonical_text.go │ │ │ ├── canonical_text_test.go │ │ │ ├── clearsign │ │ │ ├── clearsign.go │ │ │ └── clearsign_test.go │ │ │ ├── elgamal │ │ │ ├── elgamal.go │ │ │ └── elgamal_test.go │ │ │ ├── errors │ │ │ └── errors.go │ │ │ ├── keys.go │ │ │ ├── keys_test.go │ │ │ ├── packet │ │ │ ├── compressed.go │ │ │ ├── compressed_test.go │ │ │ ├── config.go │ │ │ ├── encrypted_key.go │ │ │ ├── encrypted_key_test.go │ │ │ ├── literal.go │ │ │ ├── ocfb.go │ │ │ ├── ocfb_test.go │ │ │ ├── one_pass_signature.go │ │ │ ├── opaque.go │ │ │ ├── opaque_test.go │ │ │ ├── packet.go │ │ │ ├── packet_test.go │ │ │ ├── private_key.go │ │ │ ├── private_key_test.go │ │ │ ├── public_key.go │ │ │ ├── public_key_test.go │ │ │ ├── public_key_v3.go │ │ │ ├── public_key_v3_test.go │ │ │ ├── reader.go │ │ │ ├── signature.go │ │ │ ├── signature_test.go │ │ │ ├── signature_v3.go │ │ │ ├── signature_v3_test.go │ │ │ ├── symmetric_key_encrypted.go │ │ │ ├── symmetric_key_encrypted_test.go │ │ │ ├── symmetrically_encrypted.go │ │ │ ├── symmetrically_encrypted_test.go │ │ │ ├── userattribute.go │ │ │ ├── userattribute_test.go │ │ │ ├── userid.go │ │ │ └── userid_test.go │ │ │ ├── read.go │ │ │ ├── read_test.go │ │ │ ├── s2k │ │ │ ├── s2k.go │ │ │ └── s2k_test.go │ │ │ ├── write.go │ │ │ └── write_test.go │ │ ├── gopkg.in │ │ └── yaml.v2 │ │ │ ├── LICENSE │ │ │ ├── LICENSE.libyaml │ │ │ ├── README.md │ │ │ ├── apic.go │ │ │ ├── decode.go │ │ │ ├── decode_test.go │ │ │ ├── emitterc.go │ │ │ ├── encode.go │ │ │ ├── encode_test.go │ │ │ ├── parserc.go │ │ │ ├── readerc.go │ │ │ ├── resolve.go │ │ │ ├── scannerc.go │ │ │ ├── sorter.go │ │ │ ├── suite_test.go │ │ │ ├── writerc.go │ │ │ ├── yaml.go │ │ │ ├── yamlh.go │ │ │ └── yamlprivateh.go │ │ └── pault.ag │ │ └── go │ │ ├── debian │ │ ├── control │ │ │ ├── changes.go │ │ │ ├── changes_test.go │ │ │ ├── control.go │ │ │ ├── control_test.go │ │ │ ├── decode.go │ │ │ ├── decode_test.go │ │ │ ├── doc.go │ │ │ ├── dsc.go │ │ │ ├── dsc_test.go │ │ │ ├── encode.go │ │ │ ├── encode_test.go │ │ │ ├── filehash.go │ │ │ ├── index.go │ │ │ ├── index_test.go │ │ │ ├── parse.go │ │ │ └── parse_test.go │ │ ├── dependency │ │ │ ├── arch.go │ │ │ ├── arch_test.go │ │ │ ├── dependency.go │ │ │ ├── dependency_test.go │ │ │ ├── doc.go │ │ │ ├── models.go │ │ │ ├── parser.go │ │ │ ├── parser_test.go │ │ │ ├── string.go │ │ │ └── string_test.go │ │ ├── internal │ │ │ └── copy.go │ │ ├── transput │ │ │ ├── compressors.go │ │ │ ├── construct.go │ │ │ └── hash.go │ │ └── version │ │ │ ├── version.go │ │ │ └── version_test.go │ │ └── topsort │ │ ├── LICENSE │ │ ├── README.md │ │ ├── topsort.go │ │ └── topsort_test.go └── travis.sh ├── build-and-push.sh ├── children.sh ├── diff-pr.sh ├── library ├── aerospike ├── alpine ├── amazonlinux ├── arangodb ├── backdrop ├── bash ├── bonita ├── buildpack-deps ├── busybox ├── cassandra ├── celery ├── centos ├── chronograf ├── cirros ├── clearlinux ├── clojure ├── composer ├── consul ├── couchbase ├── couchdb ├── crate ├── crux ├── debian ├── django ├── docker ├── drupal ├── eclipse-mosquitto ├── eggdrop ├── elasticsearch ├── elixir ├── erlang ├── fedora ├── fsharp ├── gazebo ├── gcc ├── ghost ├── golang ├── haproxy ├── haskell ├── hello-seattle ├── hello-world ├── hola-mundo ├── httpd ├── hylang ├── ibmjava ├── influxdb ├── iojs ├── irssi ├── java ├── jenkins ├── jetty ├── joomla ├── jruby ├── julia ├── kaazing-gateway ├── kapacitor ├── kibana ├── known ├── kong ├── lightstreamer ├── logstash ├── mageia ├── mariadb ├── maven ├── memcached ├── mongo ├── mongo-express ├── mono ├── mysql ├── nats ├── nats-streaming ├── neo4j ├── neurodebian ├── nginx ├── node ├── notary ├── nuxeo ├── odoo ├── openjdk ├── opensuse ├── oraclelinux ├── orientdb ├── owncloud ├── percona ├── perl ├── photon ├── php ├── php-zendserver ├── piwik ├── plone ├── postgres ├── pypy ├── python ├── r-base ├── rabbitmq ├── rails ├── rakudo-star ├── redis ├── redmine ├── registry ├── rethinkdb ├── rocket.chat ├── ros ├── ruby ├── sentry ├── solr ├── sonarqube ├── sourcemage ├── spiped ├── storm ├── swarm ├── telegraf ├── thrift ├── tomcat ├── tomee ├── traefik ├── ubuntu ├── vault ├── websphere-liberty ├── wordpress └── zookeeper ├── test-pr.sh └── test ├── README.md ├── clean.sh ├── config.sh ├── retry.sh ├── run.sh └── tests ├── cassandra-basics └── run.sh ├── composer ├── composer.json ├── container.sh └── run.sh ├── cve-2014--shellshock ├── container.sh ├── really-run.sh ├── run.sh └── shellshock_test.sh ├── debian-apt-get ├── container.sh ├── expected-std-out.txt └── run.sh ├── docker-build.sh ├── docker-dind └── run.sh ├── elasticsearch-basics └── run.sh ├── elixir-hello-world ├── container.exs ├── expected-std-out.txt └── run.sh ├── erlang-hello-world ├── container.erl ├── expected-std-out.txt └── run.sh ├── fsharp-hello-world ├── container.fsx ├── expected-std-out.txt └── run.sh ├── gcc-c-hello-world ├── container.c ├── expected-std-out.txt └── run.sh ├── gcc-cpp-hello-world ├── container.cpp ├── expected-std-out.txt └── run.sh ├── golang-hello-world ├── container.go ├── expected-std-out.txt ├── real-run.sh └── run.sh ├── haproxy-basics ├── haproxy.cfg └── run.sh ├── haskell-cabal ├── container.sh └── run.sh ├── haskell-ghci ├── container.sh └── run.sh ├── haskell-runhaskell ├── container.hs ├── expected-std-out.txt └── run.sh ├── hylang-hello-world ├── container.hy ├── expected-std-out.txt └── run.sh ├── hylang-sh ├── container.hy ├── expected-std-out.txt └── run.sh ├── image-name.sh ├── jetty-hello-web ├── index.jsp └── run.sh ├── julia-hello-world ├── container.jl ├── expected-std-out.txt └── run.sh ├── logstash-basics └── run.sh ├── mongo-basics └── run.sh ├── mysql-basics └── run.sh ├── mysql-initdb ├── initdb.sql └── run.sh ├── mysql-log-bin └── run.sh ├── no-hard-coded-passwords └── run.sh ├── node-hello-world ├── container.js ├── expected-std-out.txt └── run.sh ├── nuxeo-basics └── run.sh ├── nuxeo-conf ├── expected-std-out.txt └── run.sh ├── override-cmd └── run.sh ├── perl-hello-world ├── container.pl ├── expected-std-out.txt └── run.sh ├── php-apache-hello-web ├── index.php └── run.sh ├── php-ext-install ├── container.sh └── run.sh ├── php-fpm-hello-web ├── index.php └── run.sh ├── php-hello-world ├── container.php ├── expected-std-out.txt └── run.sh ├── plone-addons ├── expected-std-out.txt └── run.sh ├── plone-basics └── run.sh ├── plone-zeoclient └── run.sh ├── postgres-basics └── run.sh ├── postgres-initdb ├── initdb.sql └── run.sh ├── python-hy ├── container.hy ├── container.sh ├── expected-std-out.txt └── run.sh ├── python-imports ├── container.py └── run.sh ├── python-pip-requests-ssl ├── container.py └── run.sh ├── python-sqlite3 ├── container.py └── run.sh ├── redis-basics-config ├── real-run.sh └── run.sh ├── redis-basics-persistent └── run.sh ├── redis-basics └── run.sh ├── remove-onbuild.sh ├── ruby-bundler ├── Gemfile ├── container.sh └── run.sh ├── ruby-gems ├── container.sh └── run.sh ├── ruby-hello-world ├── container.rb ├── expected-std-out.txt └── run.sh ├── ruby-nonroot ├── Gemfile ├── container.sh ├── real-run.sh └── run.sh ├── ruby-standard-libs ├── container.rb ├── expected-std-out.txt └── run.sh ├── run-bash-in-container.sh ├── run-elixir-in-container.sh ├── run-erlang-in-container.sh ├── run-fsharp-in-container.sh ├── run-g++-in-container.sh ├── run-gcc-in-container.sh ├── run-go-in-container.sh ├── run-haskell-in-container.sh ├── run-hy-in-container.sh ├── run-in-container.sh ├── run-julia-in-container.sh ├── run-node-in-container.sh ├── run-perl-in-container.sh ├── run-php-in-container.sh ├── run-python-in-container.sh ├── run-ruby-in-container.sh ├── run-sh-in-container.sh ├── tomcat-hello-world └── run.sh ├── utc ├── expected-std-out.txt └── run.sh ├── wordpress-apache-run └── run.sh └── wordpress-fpm-run ├── nginx-default.conf └── run.sh /.dockerignore: -------------------------------------------------------------------------------- 1 | .gitignore -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .git 2 | bashbrew/go/bin 3 | bashbrew/go/pkg 4 | bashbrew/go/vendor/bin 5 | bashbrew/go/vendor/pkg 6 | bashbrew/logs 7 | bashbrew/src 8 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: go 2 | go: 1.6.2 3 | 4 | # allow for use of Docker-based workers 5 | sudo: false 6 | 7 | install: 8 | - | 9 | GB_VERSION=$(awk '$1 == "ENV" && $2 == "GB_VERSION" { print $3; exit }' Dockerfile) 10 | firstGo="${GOPATH%%:*}" 11 | mkdir -p "$firstGo/src/github.com/constabulary" 12 | ( 13 | cd "$firstGo/src/github.com/constabulary" 14 | wget -qO- "https://github.com/constabulary/gb/archive/v${GB_VERSION}.tar.gz" \ 15 | | tar -xz 16 | mv gb-* gb 17 | cd gb 18 | go install -v ./... 19 | ) 20 | 21 | before_script: 22 | - env | sort 23 | - ( cd bashbrew/go && gb build ) 24 | - export PATH="$PWD/bashbrew/go/bin:$PATH" 25 | 26 | script: 27 | - ./bashbrew/travis.sh 28 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM docker:1.10-git 2 | 3 | RUN apk add --no-cache \ 4 | # bash for running scripts 5 | bash \ 6 | # go for compiling bashbrew 7 | go 8 | 9 | ENV GOPATH /go 10 | ENV PATH $GOPATH/bin:$PATH 11 | 12 | ENV GB_VERSION 0.4.1 13 | RUN set -x \ 14 | && mkdir -p /go/src/github.com/constabulary \ 15 | && cd /go/src/github.com/constabulary \ 16 | && wget -qO- "https://github.com/constabulary/gb/archive/v${GB_VERSION}.tar.gz" \ 17 | | tar -xz \ 18 | && mv gb-* gb \ 19 | && cd gb \ 20 | && go install -v ./... 21 | 22 | ENV DIR /usr/src/official-images 23 | ENV PATH $DIR/bashbrew/go/bin:$PATH 24 | 25 | ENV BASHBREW_LIBRARY $DIR/library 26 | ENV BASHBREW_CACHE /bashbrew-cache 27 | 28 | # make sure our default cache dir exists and is writable by anyone (similar to /tmp) 29 | RUN mkdir -p "$BASHBREW_CACHE" \ 30 | && chmod 1777 "$BASHBREW_CACHE" 31 | # (this allows us to decide at runtime the exact uid/gid we'd like to run as) 32 | 33 | WORKDIR $DIR 34 | COPY . $DIR 35 | 36 | RUN cd bashbrew/go && gb build 37 | 38 | VOLUME $BASHBREW_CACHE 39 | 40 | RUN ln -s "$PWD/bashbrew/bashbrew-entrypoint.sh" /usr/local/bin/bashbrew-entrypoint.sh 41 | ENTRYPOINT ["bashbrew-entrypoint.sh"] 42 | -------------------------------------------------------------------------------- /MAINTAINERS: -------------------------------------------------------------------------------- 1 | Tianon Gravi (@tianon) 2 | Joseph Ferguson (@yosifkit) 3 | Talon Bowler (@moghedrin) 4 | # Emeritus: Peter Salvatore (@psftw) 5 | -------------------------------------------------------------------------------- /NEW-IMAGE-CHECKLIST.md: -------------------------------------------------------------------------------- 1 | # Checklist for Review 2 | 3 | **NOTE:** This checklist is intended for the use of the Official Images maintainers both to track the status of your PR and to help inform you and others of where we're at. As such, please leave the "checking" of items to the repository maintainers. If there is a point below for which you would like to provide additional information or note completion, please do so by commenting on the PR. Thanks! (and thanks for staying patient with us :heart:) 4 | 5 | - [ ] associated with or contacted upstream? 6 | - [ ] does it fit into one of the common categories? ("service", "language stack", "base distribution") 7 | - [ ] is it reasonably popular, or does it solve a particular use case well? 8 | - [ ] does a [documentation](https://github.com/docker-library/docs/blob/master/README.md) PR exist? (should be reviewed and merged at roughly the same time so that we don't have an empty image page on the Hub for very long) 9 | - [ ] dockerization review for best practices and cache gotchas/improvements (ala [the official review guidelines](https://github.com/docker-library/official-images/blob/master/README.md#review-guidelines))? 10 | - [ ] 2+ dockerization review? 11 | - [ ] existing official images have been considered as a base? (ie, if `foobar` needs Node.js, has `FROM node:...` instead of grabbing `node` via other means been considered?) 12 | - [ ] if `FROM scratch`, tarballs only exist in a single commit within the associated history? 13 | - [ ] passes current tests? any simple new tests that might be appropriate to add? (https://github.com/docker-library/official-images/tree/master/test) 14 | -------------------------------------------------------------------------------- /bashbrew/bashbrew-entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | 4 | if [ "${1:0:1}" = '-' ]; then 5 | set -- bashbrew "$@" 6 | fi 7 | 8 | # if our command is a valid bashbrew subcommand, let's invoke it through bashbrew instead 9 | # (this allows for "docker run bashbrew build", etc) 10 | if bashbrew "$1" --help > /dev/null 2>&1; then 11 | set -- bashbrew "$@" 12 | fi 13 | 14 | exec "$@" 15 | -------------------------------------------------------------------------------- /bashbrew/bashbrew.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | dir="$(dirname "$(readlink -f "$BASH_SOURCE")")" 5 | 6 | if ! command -v gb &> /dev/null; then 7 | ( set -x && go get github.com/constabulary/gb/... ) 8 | fi 9 | 10 | ( cd "$dir/go" && gb build > /dev/null ) 11 | 12 | exec "$dir/go/bin/bashbrew" "$@" 13 | -------------------------------------------------------------------------------- /bashbrew/go/src/bashbrew/cmd-cat.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "bytes" 5 | "fmt" 6 | "io/ioutil" 7 | "strings" 8 | "text/template" 9 | 10 | "github.com/codegangsta/cli" 11 | "github.com/docker-library/go-dockerlibrary/pkg/templatelib" 12 | ) 13 | 14 | var DefaultCatFormat = ` 15 | {{- if i }}{{ "\n\n" }}{{ end -}} 16 | {{- .TagName | ternary (.Manifest.GetTag .TagName) .Manifest -}} 17 | ` 18 | 19 | func cmdCat(c *cli.Context) error { 20 | repos, err := repos(c.Bool("all"), c.Args()...) 21 | if err != nil { 22 | return cli.NewMultiError(fmt.Errorf(`failed gathering repo list`), err) 23 | } 24 | 25 | format := c.String("format") 26 | formatFile := c.String("format-file") 27 | 28 | templateName := "--format" 29 | tmplMultiErr := fmt.Errorf(`failed parsing --format %q`, format) 30 | if formatFile != "" { 31 | b, err := ioutil.ReadFile(formatFile) 32 | if err != nil { 33 | return cli.NewMultiError(fmt.Errorf(`failed reading --format-file %q`, formatFile), err) 34 | } 35 | templateName = formatFile 36 | tmplMultiErr = fmt.Errorf(`failed parsing --format-file %q`, formatFile) 37 | format = string(b) 38 | } 39 | 40 | var i int 41 | tmpl, err := template.New(templateName).Funcs(templatelib.FuncMap).Funcs(template.FuncMap{ 42 | "i": func() int { 43 | return i 44 | }, 45 | }).Parse(format) 46 | if err != nil { 47 | return cli.NewMultiError(tmplMultiErr, err) 48 | } 49 | 50 | var repo string 51 | for i, repo = range repos { 52 | r, err := fetch(repo) 53 | if err != nil { 54 | return cli.NewMultiError(fmt.Errorf(`failed fetching repo %q`, repo), err) 55 | } 56 | 57 | buf := &bytes.Buffer{} 58 | err = tmpl.ExecuteTemplate(buf, templateName, r) 59 | if err != nil { 60 | return cli.NewMultiError(fmt.Errorf(`failed executing template`), err) 61 | } 62 | out := buf.String() 63 | fmt.Print(out) 64 | if !strings.HasSuffix(out, "\n") { 65 | fmt.Println() 66 | } 67 | } 68 | 69 | return nil 70 | } 71 | -------------------------------------------------------------------------------- /bashbrew/go/src/bashbrew/cmd-from.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "fmt" 5 | 6 | "github.com/codegangsta/cli" 7 | ) 8 | 9 | func cmdFrom(c *cli.Context) error { 10 | repos, err := repos(c.Bool("all"), c.Args()...) 11 | if err != nil { 12 | return cli.NewMultiError(fmt.Errorf(`failed gathering repo list`), err) 13 | } 14 | 15 | uniq := c.Bool("uniq") 16 | namespace := "" 17 | applyConstraints := c.Bool("apply-constraints") 18 | 19 | for _, repo := range repos { 20 | r, err := fetch(repo) 21 | if err != nil { 22 | return cli.NewMultiError(fmt.Errorf(`failed fetching repo %q`, repo), err) 23 | } 24 | 25 | for _, entry := range r.Entries() { 26 | if applyConstraints && r.SkipConstraints(entry) { 27 | continue 28 | } 29 | 30 | from, err := r.DockerFrom(&entry) 31 | if err != nil { 32 | return cli.NewMultiError(fmt.Errorf(`failed fetching/scraping FROM for %q (tags %q)`, r.RepoName, entry.TagsString()), err) 33 | } 34 | 35 | for _, tag := range r.Tags(namespace, uniq, entry) { 36 | fmt.Printf("%s: %s\n", tag, from) 37 | } 38 | } 39 | } 40 | 41 | return nil 42 | } 43 | -------------------------------------------------------------------------------- /bashbrew/go/src/bashbrew/cmd-list.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "fmt" 5 | 6 | "github.com/codegangsta/cli" 7 | "github.com/docker-library/go-dockerlibrary/manifest" 8 | ) 9 | 10 | func cmdList(c *cli.Context) error { 11 | repos, err := repos(c.Bool("all"), c.Args()...) 12 | if err != nil { 13 | return cli.NewMultiError(fmt.Errorf(`failed gathering repo list`), err) 14 | } 15 | 16 | uniq := c.Bool("uniq") 17 | namespace := "" 18 | applyConstraints := c.Bool("apply-constraints") 19 | onlyRepos := c.Bool("repos") 20 | 21 | buildOrder := c.Bool("build-order") 22 | if buildOrder { 23 | repos, err = sortRepos(repos, applyConstraints) 24 | if err != nil { 25 | return cli.NewMultiError(fmt.Errorf(`failed sorting repo list`), err) 26 | } 27 | } 28 | 29 | for _, repo := range repos { 30 | r, err := fetch(repo) 31 | if err != nil { 32 | return cli.NewMultiError(fmt.Errorf(`failed fetching repo %q`, repo), err) 33 | } 34 | 35 | if onlyRepos { 36 | if r.TagEntry == nil { 37 | fmt.Printf("%s\n", r.RepoName) 38 | } else { 39 | for _, tag := range r.Tags(namespace, uniq, *r.TagEntry) { 40 | fmt.Printf("%s\n", tag) 41 | } 42 | } 43 | continue 44 | } 45 | 46 | var entries []manifest.Manifest2822Entry 47 | if buildOrder { 48 | entries, err = r.SortedEntries(applyConstraints) 49 | if err != nil { 50 | return cli.NewMultiError(fmt.Errorf(`failed sorting entries list for %q`, repo), err) 51 | } 52 | } else { 53 | entries = r.Entries() 54 | } 55 | 56 | for _, entry := range entries { 57 | if applyConstraints && r.SkipConstraints(entry) { 58 | continue 59 | } 60 | 61 | for _, tag := range r.Tags(namespace, uniq, entry) { 62 | fmt.Printf("%s\n", tag) 63 | } 64 | } 65 | } 66 | 67 | return nil 68 | } 69 | -------------------------------------------------------------------------------- /bashbrew/go/src/bashbrew/cmd-push.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "fmt" 5 | 6 | "github.com/codegangsta/cli" 7 | ) 8 | 9 | func cmdPush(c *cli.Context) error { 10 | repos, err := repos(c.Bool("all"), c.Args()...) 11 | if err != nil { 12 | return cli.NewMultiError(fmt.Errorf(`failed gathering repo list`), err) 13 | } 14 | 15 | uniq := c.Bool("uniq") 16 | namespace := c.String("namespace") 17 | 18 | if namespace == "" { 19 | return fmt.Errorf(`"--namespace" is a required flag for "push"`) 20 | } 21 | 22 | for _, repo := range repos { 23 | r, err := fetch(repo) 24 | if err != nil { 25 | return cli.NewMultiError(fmt.Errorf(`failed fetching repo %q`, repo), err) 26 | } 27 | 28 | for _, entry := range r.Entries() { 29 | if r.SkipConstraints(entry) { 30 | continue 31 | } 32 | 33 | for _, tag := range r.Tags(namespace, uniq, entry) { 34 | fmt.Printf("Pushing %s\n", tag) 35 | err = dockerPush(tag) 36 | if err != nil { 37 | return cli.NewMultiError(fmt.Errorf(`failed pushing %q`, tag), err) 38 | } 39 | } 40 | } 41 | } 42 | 43 | return nil 44 | } 45 | -------------------------------------------------------------------------------- /bashbrew/go/src/bashbrew/cmd-tag.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "fmt" 5 | "path" 6 | 7 | "github.com/codegangsta/cli" 8 | ) 9 | 10 | func cmdTag(c *cli.Context) error { 11 | repos, err := repos(c.Bool("all"), c.Args()...) 12 | if err != nil { 13 | return cli.NewMultiError(fmt.Errorf(`failed gathering repo list`), err) 14 | } 15 | 16 | uniq := c.Bool("uniq") 17 | namespace := c.String("namespace") 18 | 19 | if namespace == "" { 20 | return fmt.Errorf(`"--namespace" is a required flag for "tag"`) 21 | } 22 | 23 | for _, repo := range repos { 24 | r, err := fetch(repo) 25 | if err != nil { 26 | return cli.NewMultiError(fmt.Errorf(`failed fetching repo %q`, repo), err) 27 | } 28 | 29 | for _, entry := range r.Entries() { 30 | if r.SkipConstraints(entry) { 31 | continue 32 | } 33 | 34 | for _, tag := range r.Tags("", uniq, entry) { 35 | namespacedTag := path.Join(namespace, tag) 36 | fmt.Printf("Tagging %s\n", namespacedTag) 37 | err = dockerTag(tag, namespacedTag) 38 | if err != nil { 39 | return cli.NewMultiError(fmt.Errorf(`failed tagging %q as %q`, tag, namespacedTag), err) 40 | } 41 | } 42 | } 43 | } 44 | 45 | return nil 46 | } 47 | -------------------------------------------------------------------------------- /bashbrew/go/vendor/manifest: -------------------------------------------------------------------------------- 1 | { 2 | "version": 0, 3 | "dependencies": [ 4 | { 5 | "importpath": "github.com/codegangsta/cli", 6 | "repository": "https://github.com/codegangsta/cli", 7 | "revision": "01857ac33766ce0c93856370626f9799281c14f4", 8 | "branch": "HEAD" 9 | }, 10 | { 11 | "importpath": "github.com/docker-library/go-dockerlibrary", 12 | "repository": "https://github.com/docker-library/go-dockerlibrary", 13 | "revision": "6c6566f129042695444eb647d5cee653ca943b0d", 14 | "branch": "master" 15 | }, 16 | { 17 | "importpath": "golang.org/x/crypto", 18 | "repository": "https://go.googlesource.com/crypto", 19 | "revision": "5bcd134fee4dd1475da17714aac19c0aa0142e2f", 20 | "branch": "master" 21 | }, 22 | { 23 | "importpath": "gopkg.in/yaml.v2", 24 | "repository": "https://gopkg.in/yaml.v2", 25 | "revision": "a83829b6f1293c91addabc89d0571c246397bbf4", 26 | "branch": "v2" 27 | }, 28 | { 29 | "importpath": "pault.ag/go/debian", 30 | "repository": "https://github.com/paultag/go-debian", 31 | "revision": "e7a23c7df0f545cdb75afbcc6d296bb93ce2786f", 32 | "branch": "master" 33 | }, 34 | { 35 | "importpath": "pault.ag/go/topsort", 36 | "repository": "https://github.com/paultag/go-topsort", 37 | "revision": "f98d2ad46e1adcbf8fa59a95a3b5509a7da9c6b5", 38 | "branch": "master" 39 | } 40 | ] 41 | } -------------------------------------------------------------------------------- /bashbrew/go/vendor/src/github.com/codegangsta/cli/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (C) 2013 Jeremy Saenz 2 | All Rights Reserved. 3 | 4 | MIT LICENSE 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining a copy of 7 | this software and associated documentation files (the "Software"), to deal in 8 | the Software without restriction, including without limitation the rights to 9 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 10 | the Software, and to permit persons to whom the Software is furnished to do so, 11 | subject to the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be included in all 14 | copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 18 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 19 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 20 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 21 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /bashbrew/go/vendor/src/github.com/codegangsta/cli/altsrc/helpers_test.go: -------------------------------------------------------------------------------- 1 | package altsrc 2 | 3 | import ( 4 | "reflect" 5 | "testing" 6 | ) 7 | 8 | func expect(t *testing.T, a interface{}, b interface{}) { 9 | if !reflect.DeepEqual(b, a) { 10 | t.Errorf("Expected %#v (type %v) - Got %#v (type %v)", b, reflect.TypeOf(b), a, reflect.TypeOf(a)) 11 | } 12 | } 13 | 14 | func refute(t *testing.T, a interface{}, b interface{}) { 15 | if a == b { 16 | t.Errorf("Did not expect %v (type %v) - Got %v (type %v)", b, reflect.TypeOf(b), a, reflect.TypeOf(a)) 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /bashbrew/go/vendor/src/github.com/codegangsta/cli/altsrc/input_source_context.go: -------------------------------------------------------------------------------- 1 | package altsrc 2 | 3 | import ( 4 | "time" 5 | 6 | "github.com/codegangsta/cli" 7 | ) 8 | 9 | // InputSourceContext is an interface used to allow 10 | // other input sources to be implemented as needed. 11 | type InputSourceContext interface { 12 | Int(name string) (int, error) 13 | Duration(name string) (time.Duration, error) 14 | Float64(name string) (float64, error) 15 | String(name string) (string, error) 16 | StringSlice(name string) ([]string, error) 17 | IntSlice(name string) ([]int, error) 18 | Generic(name string) (cli.Generic, error) 19 | Bool(name string) (bool, error) 20 | BoolT(name string) (bool, error) 21 | } 22 | -------------------------------------------------------------------------------- /bashbrew/go/vendor/src/github.com/codegangsta/cli/appveyor.yml: -------------------------------------------------------------------------------- 1 | version: "{build}" 2 | 3 | os: Windows Server 2012 R2 4 | 5 | install: 6 | - go version 7 | - go env 8 | 9 | build_script: 10 | - cd %APPVEYOR_BUILD_FOLDER% 11 | - go vet ./... 12 | - go test -v ./... 13 | 14 | test: off 15 | 16 | deploy: off 17 | -------------------------------------------------------------------------------- /bashbrew/go/vendor/src/github.com/codegangsta/cli/autocomplete/bash_autocomplete: -------------------------------------------------------------------------------- 1 | #! /bin/bash 2 | 3 | : ${PROG:=$(basename ${BASH_SOURCE})} 4 | 5 | _cli_bash_autocomplete() { 6 | local cur opts base 7 | COMPREPLY=() 8 | cur="${COMP_WORDS[COMP_CWORD]}" 9 | opts=$( ${COMP_WORDS[@]:0:$COMP_CWORD} --generate-bash-completion ) 10 | COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) 11 | return 0 12 | } 13 | 14 | complete -F _cli_bash_autocomplete $PROG 15 | -------------------------------------------------------------------------------- /bashbrew/go/vendor/src/github.com/codegangsta/cli/autocomplete/zsh_autocomplete: -------------------------------------------------------------------------------- 1 | autoload -U compinit && compinit 2 | autoload -U bashcompinit && bashcompinit 3 | 4 | script_dir=$(dirname $0) 5 | source ${script_dir}/bash_autocomplete 6 | -------------------------------------------------------------------------------- /bashbrew/go/vendor/src/github.com/codegangsta/cli/category.go: -------------------------------------------------------------------------------- 1 | package cli 2 | 3 | // CommandCategories is a slice of *CommandCategory. 4 | type CommandCategories []*CommandCategory 5 | 6 | // CommandCategory is a category containing commands. 7 | type CommandCategory struct { 8 | Name string 9 | Commands Commands 10 | } 11 | 12 | func (c CommandCategories) Less(i, j int) bool { 13 | return c[i].Name < c[j].Name 14 | } 15 | 16 | func (c CommandCategories) Len() int { 17 | return len(c) 18 | } 19 | 20 | func (c CommandCategories) Swap(i, j int) { 21 | c[i], c[j] = c[j], c[i] 22 | } 23 | 24 | // AddCommand adds a command to a category. 25 | func (c CommandCategories) AddCommand(category string, command Command) CommandCategories { 26 | for _, commandCategory := range c { 27 | if commandCategory.Name == category { 28 | commandCategory.Commands = append(commandCategory.Commands, command) 29 | return c 30 | } 31 | } 32 | return append(c, &CommandCategory{Name: category, Commands: []Command{command}}) 33 | } 34 | 35 | // VisibleCommands returns a slice of the Commands with Hidden=false 36 | func (c *CommandCategory) VisibleCommands() []Command { 37 | ret := []Command{} 38 | for _, command := range c.Commands { 39 | if !command.Hidden { 40 | ret = append(ret, command) 41 | } 42 | } 43 | return ret 44 | } 45 | -------------------------------------------------------------------------------- /bashbrew/go/vendor/src/github.com/codegangsta/cli/cli.go: -------------------------------------------------------------------------------- 1 | // Package cli provides a minimal framework for creating and organizing command line 2 | // Go applications. cli is designed to be easy to understand and write, the most simple 3 | // cli application can be written as follows: 4 | // func main() { 5 | // cli.NewApp().Run(os.Args) 6 | // } 7 | // 8 | // Of course this application does not do much, so let's make this an actual application: 9 | // func main() { 10 | // app := cli.NewApp() 11 | // app.Name = "greet" 12 | // app.Usage = "say a greeting" 13 | // app.Action = func(c *cli.Context) error { 14 | // println("Greetings") 15 | // } 16 | // 17 | // app.Run(os.Args) 18 | // } 19 | package cli 20 | -------------------------------------------------------------------------------- /bashbrew/go/vendor/src/github.com/codegangsta/cli/errors_test.go: -------------------------------------------------------------------------------- 1 | package cli 2 | 3 | import ( 4 | "errors" 5 | "os" 6 | "testing" 7 | ) 8 | 9 | func TestHandleExitCoder_nil(t *testing.T) { 10 | exitCode := 0 11 | called := false 12 | 13 | OsExiter = func(rc int) { 14 | exitCode = rc 15 | called = true 16 | } 17 | 18 | defer func() { OsExiter = os.Exit }() 19 | 20 | HandleExitCoder(nil) 21 | 22 | expect(t, exitCode, 0) 23 | expect(t, called, false) 24 | } 25 | 26 | func TestHandleExitCoder_ExitCoder(t *testing.T) { 27 | exitCode := 0 28 | called := false 29 | 30 | OsExiter = func(rc int) { 31 | exitCode = rc 32 | called = true 33 | } 34 | 35 | defer func() { OsExiter = os.Exit }() 36 | 37 | HandleExitCoder(NewExitError("galactic perimeter breach", 9)) 38 | 39 | expect(t, exitCode, 9) 40 | expect(t, called, true) 41 | } 42 | 43 | func TestHandleExitCoder_MultiErrorWithExitCoder(t *testing.T) { 44 | exitCode := 0 45 | called := false 46 | 47 | OsExiter = func(rc int) { 48 | exitCode = rc 49 | called = true 50 | } 51 | 52 | defer func() { OsExiter = os.Exit }() 53 | 54 | exitErr := NewExitError("galactic perimeter breach", 9) 55 | err := NewMultiError(errors.New("wowsa"), errors.New("egad"), exitErr) 56 | HandleExitCoder(err) 57 | 58 | expect(t, exitCode, 9) 59 | expect(t, called, true) 60 | } 61 | -------------------------------------------------------------------------------- /bashbrew/go/vendor/src/github.com/codegangsta/cli/funcs.go: -------------------------------------------------------------------------------- 1 | package cli 2 | 3 | // BashCompleteFunc is an action to execute when the bash-completion flag is set 4 | type BashCompleteFunc func(*Context) 5 | 6 | // BeforeFunc is an action to execute before any subcommands are run, but after 7 | // the context is ready if a non-nil error is returned, no subcommands are run 8 | type BeforeFunc func(*Context) error 9 | 10 | // AfterFunc is an action to execute after any subcommands are run, but after the 11 | // subcommand has finished it is run even if Action() panics 12 | type AfterFunc func(*Context) error 13 | 14 | // ActionFunc is the action to execute when no subcommands are specified 15 | type ActionFunc func(*Context) error 16 | 17 | // CommandNotFoundFunc is executed if the proper command cannot be found 18 | type CommandNotFoundFunc func(*Context, string) 19 | 20 | // OnUsageErrorFunc is executed if an usage error occurs. This is useful for displaying 21 | // customized usage error messages. This function is able to replace the 22 | // original error messages. If this function is not set, the "Incorrect usage" 23 | // is displayed and the execution is interrupted. 24 | type OnUsageErrorFunc func(context *Context, err error, isSubcommand bool) error 25 | 26 | // FlagStringFunc is used by the help generation to display a flag, which is 27 | // expected to be a single line. 28 | type FlagStringFunc func(Flag) string 29 | -------------------------------------------------------------------------------- /bashbrew/go/vendor/src/github.com/codegangsta/cli/helpers_test.go: -------------------------------------------------------------------------------- 1 | package cli 2 | 3 | import ( 4 | "os" 5 | "reflect" 6 | "runtime" 7 | "strings" 8 | "testing" 9 | ) 10 | 11 | var ( 12 | wd, _ = os.Getwd() 13 | ) 14 | 15 | func expect(t *testing.T, a interface{}, b interface{}) { 16 | _, fn, line, _ := runtime.Caller(1) 17 | fn = strings.Replace(fn, wd+"/", "", -1) 18 | 19 | if !reflect.DeepEqual(a, b) { 20 | t.Errorf("(%s:%d) Expected %v (type %v) - Got %v (type %v)", fn, line, b, reflect.TypeOf(b), a, reflect.TypeOf(a)) 21 | } 22 | } 23 | 24 | func refute(t *testing.T, a interface{}, b interface{}) { 25 | if reflect.DeepEqual(a, b) { 26 | t.Errorf("Did not expect %v (type %v) - Got %v (type %v)", b, reflect.TypeOf(b), a, reflect.TypeOf(a)) 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /bashbrew/go/vendor/src/github.com/docker-library/go-dockerlibrary/manifest/example.go: -------------------------------------------------------------------------------- 1 | // +build ignore 2 | 3 | package main 4 | 5 | import ( 6 | "bufio" 7 | "fmt" 8 | "strings" 9 | 10 | "github.com/docker-library/go-dockerlibrary/manifest" 11 | ) 12 | 13 | func main() { 14 | // TODO comment parsing 15 | man, err := manifest.Parse(bufio.NewReader(strings.NewReader(`# RFC 2822 16 | 17 | # I LOVE CAKE 18 | 19 | Maintainers: InfoSiftr (@infosiftr), 20 | Johan Euphrosine (@proppy) 21 | GitRepo: https://github.com/docker-library/golang.git 22 | GitFetch: refs/heads/master 23 | 24 | 25 | # hi 26 | 27 | 28 | # blasphemer 29 | 30 | 31 | # Go 1.6 32 | Tags: 1.6.1, 1.6, 1, latest 33 | GitCommit: 0ce80411b9f41e9c3a21fc0a1bffba6ae761825a 34 | Directory: 1.6 35 | 36 | 37 | # Go 1.5 38 | Tags: 1.5.3 39 | GitCommit: d7e2a8d90a9b8f5dfd5bcd428e0c33b68c40cc19 40 | Directory: 1.5 41 | 42 | 43 | Tags: 1.5 44 | GitCommit: d7e2a8d90a9b8f5dfd5bcd428e0c33b68c40cc19 45 | Directory: 1.5 46 | 47 | 48 | `))) 49 | if err != nil { 50 | panic(err) 51 | } 52 | fmt.Printf("-------------\n2822:\n%s\n", man) 53 | 54 | man, err = manifest.Parse(bufio.NewReader(strings.NewReader(` 55 | # first set 56 | a: b@c d 57 | e: b@c d 58 | 59 | # second set 60 | f: g@h 61 | i: g@h j 62 | `))) 63 | if err != nil { 64 | panic(err) 65 | } 66 | fmt.Printf("-------------\nline-based:\n%v\n", man) 67 | } 68 | -------------------------------------------------------------------------------- /bashbrew/go/vendor/src/github.com/docker-library/go-dockerlibrary/manifest/parse.go: -------------------------------------------------------------------------------- 1 | package manifest 2 | 3 | import ( 4 | "bytes" 5 | "fmt" 6 | "io" 7 | ) 8 | 9 | // try parsing as a 2822 manifest, but fallback to line-based if that fails 10 | func Parse(reader io.Reader) (*Manifest2822, error) { 11 | buf := &bytes.Buffer{} 12 | 13 | // try parsing as 2822, but also copy back into a new buffer so that if it fails, we can re-parse as line-based 14 | manifest, err2822 := Parse2822(io.TeeReader(reader, buf)) 15 | if err2822 != nil { 16 | manifest, err := ParseLineBased(buf) 17 | if err != nil { 18 | return nil, fmt.Errorf("cannot parse manifest in either format:\nRFC 2822 error: %v\nLine-based error: %v", err2822, err) 19 | } 20 | return manifest, nil 21 | } 22 | 23 | return manifest, nil 24 | } 25 | -------------------------------------------------------------------------------- /bashbrew/go/vendor/src/github.com/docker-library/go-dockerlibrary/pkg/execpipe/execpipe.go: -------------------------------------------------------------------------------- 1 | package execpipe 2 | 3 | import ( 4 | "io" 5 | "os/exec" 6 | ) 7 | 8 | // "io.ReadCloser" interface to a command's output where "Close()" is effectively "Wait()" 9 | type Pipe struct { 10 | cmd *exec.Cmd 11 | out io.ReadCloser 12 | } 13 | 14 | // convenience wrapper for "Run" 15 | func RunCommand(cmd string, args ...string) (*Pipe, error) { 16 | return Run(exec.Command(cmd, args...)) 17 | } 18 | 19 | // start "cmd", capturing stdout in a pipe (be sure to call "Close" when finished reading to reap the process) 20 | func Run(cmd *exec.Cmd) (*Pipe, error) { 21 | pipe := &Pipe{ 22 | cmd: cmd, 23 | } 24 | if out, err := pipe.cmd.StdoutPipe(); err != nil { 25 | return nil, err 26 | } else { 27 | pipe.out = out 28 | } 29 | if err := pipe.cmd.Start(); err != nil { 30 | pipe.out.Close() 31 | return nil, err 32 | } 33 | return pipe, nil 34 | } 35 | 36 | func (pipe *Pipe) Read(p []byte) (n int, err error) { 37 | return pipe.out.Read(p) 38 | } 39 | 40 | func (pipe *Pipe) Close() error { 41 | return pipe.cmd.Wait() 42 | } 43 | -------------------------------------------------------------------------------- /bashbrew/go/vendor/src/github.com/docker-library/go-dockerlibrary/pkg/stripper/comments.go: -------------------------------------------------------------------------------- 1 | package stripper 2 | 3 | import ( 4 | "bufio" 5 | "bytes" 6 | "io" 7 | "strings" 8 | "unicode" 9 | ) 10 | 11 | type CommentStripper struct { 12 | Comment string 13 | Delimiter byte 14 | Whitespace bool 15 | 16 | r *bufio.Reader 17 | buf bytes.Buffer 18 | } 19 | 20 | func NewCommentStripper(r io.Reader) *CommentStripper { 21 | return &CommentStripper{ 22 | Comment: "#", 23 | Delimiter: '\n', 24 | Whitespace: true, 25 | 26 | r: bufio.NewReader(r), 27 | } 28 | } 29 | 30 | func (r *CommentStripper) Read(p []byte) (int, error) { 31 | for { 32 | if r.buf.Len() >= len(p) { 33 | return r.buf.Read(p) 34 | } 35 | line, err := r.r.ReadString(r.Delimiter) 36 | if len(line) > 0 { 37 | checkLine := line 38 | if r.Whitespace { 39 | checkLine = strings.TrimLeftFunc(checkLine, unicode.IsSpace) 40 | } 41 | if strings.HasPrefix(checkLine, r.Comment) { 42 | // yay, skip this line 43 | continue 44 | } 45 | r.buf.WriteString(line) 46 | } 47 | if err != nil { 48 | if r.buf.Len() > 0 { 49 | return r.buf.Read(p) 50 | } 51 | return 0, err 52 | } 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /bashbrew/go/vendor/src/golang.org/x/crypto/openpgp/canonical_text.go: -------------------------------------------------------------------------------- 1 | // Copyright 2011 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | package openpgp 6 | 7 | import "hash" 8 | 9 | // NewCanonicalTextHash reformats text written to it into the canonical 10 | // form and then applies the hash h. See RFC 4880, section 5.2.1. 11 | func NewCanonicalTextHash(h hash.Hash) hash.Hash { 12 | return &canonicalTextHash{h, 0} 13 | } 14 | 15 | type canonicalTextHash struct { 16 | h hash.Hash 17 | s int 18 | } 19 | 20 | var newline = []byte{'\r', '\n'} 21 | 22 | func (cth *canonicalTextHash) Write(buf []byte) (int, error) { 23 | start := 0 24 | 25 | for i, c := range buf { 26 | switch cth.s { 27 | case 0: 28 | if c == '\r' { 29 | cth.s = 1 30 | } else if c == '\n' { 31 | cth.h.Write(buf[start:i]) 32 | cth.h.Write(newline) 33 | start = i + 1 34 | } 35 | case 1: 36 | cth.s = 0 37 | } 38 | } 39 | 40 | cth.h.Write(buf[start:]) 41 | return len(buf), nil 42 | } 43 | 44 | func (cth *canonicalTextHash) Sum(in []byte) []byte { 45 | return cth.h.Sum(in) 46 | } 47 | 48 | func (cth *canonicalTextHash) Reset() { 49 | cth.h.Reset() 50 | cth.s = 0 51 | } 52 | 53 | func (cth *canonicalTextHash) Size() int { 54 | return cth.h.Size() 55 | } 56 | 57 | func (cth *canonicalTextHash) BlockSize() int { 58 | return cth.h.BlockSize() 59 | } 60 | -------------------------------------------------------------------------------- /bashbrew/go/vendor/src/golang.org/x/crypto/openpgp/canonical_text_test.go: -------------------------------------------------------------------------------- 1 | // Copyright 2011 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | package openpgp 6 | 7 | import ( 8 | "bytes" 9 | "testing" 10 | ) 11 | 12 | type recordingHash struct { 13 | buf *bytes.Buffer 14 | } 15 | 16 | func (r recordingHash) Write(b []byte) (n int, err error) { 17 | return r.buf.Write(b) 18 | } 19 | 20 | func (r recordingHash) Sum(in []byte) []byte { 21 | return append(in, r.buf.Bytes()...) 22 | } 23 | 24 | func (r recordingHash) Reset() { 25 | panic("shouldn't be called") 26 | } 27 | 28 | func (r recordingHash) Size() int { 29 | panic("shouldn't be called") 30 | } 31 | 32 | func (r recordingHash) BlockSize() int { 33 | panic("shouldn't be called") 34 | } 35 | 36 | func testCanonicalText(t *testing.T, input, expected string) { 37 | r := recordingHash{bytes.NewBuffer(nil)} 38 | c := NewCanonicalTextHash(r) 39 | c.Write([]byte(input)) 40 | result := c.Sum(nil) 41 | if expected != string(result) { 42 | t.Errorf("input: %x got: %x want: %x", input, result, expected) 43 | } 44 | } 45 | 46 | func TestCanonicalText(t *testing.T) { 47 | testCanonicalText(t, "foo\n", "foo\r\n") 48 | testCanonicalText(t, "foo", "foo") 49 | testCanonicalText(t, "foo\r\n", "foo\r\n") 50 | testCanonicalText(t, "foo\r\nbar", "foo\r\nbar") 51 | testCanonicalText(t, "foo\r\nbar\n\n", "foo\r\nbar\r\n\r\n") 52 | } 53 | -------------------------------------------------------------------------------- /bashbrew/go/vendor/src/golang.org/x/crypto/openpgp/elgamal/elgamal_test.go: -------------------------------------------------------------------------------- 1 | // Copyright 2011 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | package elgamal 6 | 7 | import ( 8 | "bytes" 9 | "crypto/rand" 10 | "math/big" 11 | "testing" 12 | ) 13 | 14 | // This is the 1024-bit MODP group from RFC 5114, section 2.1: 15 | const primeHex = "B10B8F96A080E01DDE92DE5EAE5D54EC52C99FBCFB06A3C69A6A9DCA52D23B616073E28675A23D189838EF1E2EE652C013ECB4AEA906112324975C3CD49B83BFACCBDD7D90C4BD7098488E9C219A73724EFFD6FAE5644738FAA31A4FF55BCCC0A151AF5F0DC8B4BD45BF37DF365C1A65E68CFDA76D4DA708DF1FB2BC2E4A4371" 16 | 17 | const generatorHex = "A4D1CBD5C3FD34126765A442EFB99905F8104DD258AC507FD6406CFF14266D31266FEA1E5C41564B777E690F5504F213160217B4B01B886A5E91547F9E2749F4D7FBD7D3B9A92EE1909D0D2263F80A76A6A24C087A091F531DBF0A0169B6A28AD662A4D18E73AFA32D779D5918D08BC8858F4DCEF97C2A24855E6EEB22B3B2E5" 18 | 19 | func fromHex(hex string) *big.Int { 20 | n, ok := new(big.Int).SetString(hex, 16) 21 | if !ok { 22 | panic("failed to parse hex number") 23 | } 24 | return n 25 | } 26 | 27 | func TestEncryptDecrypt(t *testing.T) { 28 | priv := &PrivateKey{ 29 | PublicKey: PublicKey{ 30 | G: fromHex(generatorHex), 31 | P: fromHex(primeHex), 32 | }, 33 | X: fromHex("42"), 34 | } 35 | priv.Y = new(big.Int).Exp(priv.G, priv.X, priv.P) 36 | 37 | message := []byte("hello world") 38 | c1, c2, err := Encrypt(rand.Reader, &priv.PublicKey, message) 39 | if err != nil { 40 | t.Errorf("error encrypting: %s", err) 41 | } 42 | message2, err := Decrypt(priv, c1, c2) 43 | if err != nil { 44 | t.Errorf("error decrypting: %s", err) 45 | } 46 | if !bytes.Equal(message2, message) { 47 | t.Errorf("decryption failed, got: %x, want: %x", message2, message) 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /bashbrew/go/vendor/src/golang.org/x/crypto/openpgp/packet/compressed_test.go: -------------------------------------------------------------------------------- 1 | // Copyright 2011 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | package packet 6 | 7 | import ( 8 | "bytes" 9 | "encoding/hex" 10 | "io" 11 | "io/ioutil" 12 | "testing" 13 | ) 14 | 15 | func TestCompressed(t *testing.T) { 16 | packet, err := Read(readerFromHex(compressedHex)) 17 | if err != nil { 18 | t.Errorf("failed to read Compressed: %s", err) 19 | return 20 | } 21 | 22 | c, ok := packet.(*Compressed) 23 | if !ok { 24 | t.Error("didn't find Compressed packet") 25 | return 26 | } 27 | 28 | contents, err := ioutil.ReadAll(c.Body) 29 | if err != nil && err != io.EOF { 30 | t.Error(err) 31 | return 32 | } 33 | 34 | expected, _ := hex.DecodeString(compressedExpectedHex) 35 | if !bytes.Equal(expected, contents) { 36 | t.Errorf("got:%x want:%x", contents, expected) 37 | } 38 | } 39 | 40 | const compressedHex = "a3013b2d90c4e02b72e25f727e5e496a5e49b11e1700" 41 | const compressedExpectedHex = "cb1062004d14c8fe636f6e74656e74732e0a" 42 | -------------------------------------------------------------------------------- /bashbrew/go/vendor/src/golang.org/x/crypto/openpgp/packet/ocfb_test.go: -------------------------------------------------------------------------------- 1 | // Copyright 2010 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | package packet 6 | 7 | import ( 8 | "bytes" 9 | "crypto/aes" 10 | "crypto/rand" 11 | "testing" 12 | ) 13 | 14 | var commonKey128 = []byte{0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c} 15 | 16 | func testOCFB(t *testing.T, resync OCFBResyncOption) { 17 | block, err := aes.NewCipher(commonKey128) 18 | if err != nil { 19 | t.Error(err) 20 | return 21 | } 22 | 23 | plaintext := []byte("this is the plaintext, which is long enough to span several blocks.") 24 | randData := make([]byte, block.BlockSize()) 25 | rand.Reader.Read(randData) 26 | ocfb, prefix := NewOCFBEncrypter(block, randData, resync) 27 | ciphertext := make([]byte, len(plaintext)) 28 | ocfb.XORKeyStream(ciphertext, plaintext) 29 | 30 | ocfbdec := NewOCFBDecrypter(block, prefix, resync) 31 | if ocfbdec == nil { 32 | t.Errorf("NewOCFBDecrypter failed (resync: %t)", resync) 33 | return 34 | } 35 | plaintextCopy := make([]byte, len(plaintext)) 36 | ocfbdec.XORKeyStream(plaintextCopy, ciphertext) 37 | 38 | if !bytes.Equal(plaintextCopy, plaintext) { 39 | t.Errorf("got: %x, want: %x (resync: %t)", plaintextCopy, plaintext, resync) 40 | } 41 | } 42 | 43 | func TestOCFB(t *testing.T) { 44 | testOCFB(t, OCFBNoResync) 45 | testOCFB(t, OCFBResync) 46 | } 47 | -------------------------------------------------------------------------------- /bashbrew/go/vendor/src/golang.org/x/crypto/openpgp/packet/signature_test.go: -------------------------------------------------------------------------------- 1 | // Copyright 2011 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | package packet 6 | 7 | import ( 8 | "bytes" 9 | "crypto" 10 | "encoding/hex" 11 | "testing" 12 | ) 13 | 14 | func TestSignatureRead(t *testing.T) { 15 | packet, err := Read(readerFromHex(signatureDataHex)) 16 | if err != nil { 17 | t.Error(err) 18 | return 19 | } 20 | sig, ok := packet.(*Signature) 21 | if !ok || sig.SigType != SigTypeBinary || sig.PubKeyAlgo != PubKeyAlgoRSA || sig.Hash != crypto.SHA1 { 22 | t.Errorf("failed to parse, got: %#v", packet) 23 | } 24 | } 25 | 26 | func TestSignatureReserialize(t *testing.T) { 27 | packet, _ := Read(readerFromHex(signatureDataHex)) 28 | sig := packet.(*Signature) 29 | out := new(bytes.Buffer) 30 | err := sig.Serialize(out) 31 | if err != nil { 32 | t.Errorf("error reserializing: %s", err) 33 | return 34 | } 35 | 36 | expected, _ := hex.DecodeString(signatureDataHex) 37 | if !bytes.Equal(expected, out.Bytes()) { 38 | t.Errorf("output doesn't match input (got vs expected):\n%s\n%s", hex.Dump(out.Bytes()), hex.Dump(expected)) 39 | } 40 | } 41 | 42 | const signatureDataHex = "c2c05c04000102000605024cb45112000a0910ab105c91af38fb158f8d07ff5596ea368c5efe015bed6e78348c0f033c931d5f2ce5db54ce7f2a7e4b4ad64db758d65a7a71773edeab7ba2a9e0908e6a94a1175edd86c1d843279f045b021a6971a72702fcbd650efc393c5474d5b59a15f96d2eaad4c4c426797e0dcca2803ef41c6ff234d403eec38f31d610c344c06f2401c262f0993b2e66cad8a81ebc4322c723e0d4ba09fe917e8777658307ad8329adacba821420741009dfe87f007759f0982275d028a392c6ed983a0d846f890b36148c7358bdb8a516007fac760261ecd06076813831a36d0459075d1befa245ae7f7fb103d92ca759e9498fe60ef8078a39a3beda510deea251ea9f0a7f0df6ef42060f20780360686f3e400e" 43 | -------------------------------------------------------------------------------- /bashbrew/go/vendor/src/gopkg.in/yaml.v2/LICENSE.libyaml: -------------------------------------------------------------------------------- 1 | The following files were ported to Go from C files of libyaml, and thus 2 | are still covered by their original copyright and license: 3 | 4 | apic.go 5 | emitterc.go 6 | parserc.go 7 | readerc.go 8 | scannerc.go 9 | writerc.go 10 | yamlh.go 11 | yamlprivateh.go 12 | 13 | Copyright (c) 2006 Kirill Simonov 14 | 15 | Permission is hereby granted, free of charge, to any person obtaining a copy of 16 | this software and associated documentation files (the "Software"), to deal in 17 | the Software without restriction, including without limitation the rights to 18 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 19 | of the Software, and to permit persons to whom the Software is furnished to do 20 | so, subject to the following conditions: 21 | 22 | The above copyright notice and this permission notice shall be included in all 23 | copies or substantial portions of the Software. 24 | 25 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 26 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 27 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 28 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 29 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 30 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 31 | SOFTWARE. 32 | -------------------------------------------------------------------------------- /bashbrew/go/vendor/src/gopkg.in/yaml.v2/suite_test.go: -------------------------------------------------------------------------------- 1 | package yaml_test 2 | 3 | import ( 4 | . "gopkg.in/check.v1" 5 | "testing" 6 | ) 7 | 8 | func Test(t *testing.T) { TestingT(t) } 9 | 10 | type S struct{} 11 | 12 | var _ = Suite(&S{}) 13 | -------------------------------------------------------------------------------- /bashbrew/go/vendor/src/pault.ag/go/debian/control/doc.go: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Parse the Debian control file format. 4 | 5 | */ 6 | package control 7 | -------------------------------------------------------------------------------- /bashbrew/go/vendor/src/pault.ag/go/debian/dependency/doc.go: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | The Dependency module provides an interface to parse and inspect Debian 4 | Dependency relationships. 5 | 6 | 7 | Dependency | foo, bar (>= 1.0) [amd64] | baz 8 | -> Relations | -> Relation bar (>= 1.0) [amd64] | baz 9 | -> Possibilities | -> Possibility bar (>= 1.0) [amd64] 10 | | Name | -> Name bar 11 | | Version | -> Version (>= 1.0) 12 | | Architectures | -> Arch amd64 13 | | Stages | 14 | */ 15 | package dependency 16 | -------------------------------------------------------------------------------- /bashbrew/go/vendor/src/pault.ag/go/debian/dependency/string_test.go: -------------------------------------------------------------------------------- 1 | /* {{{ Copyright (c) Paul R. Tagliamonte , 2015 2 | * 3 | * Permission is hereby granted, free of charge, to any person obtaining a copy 4 | * of this software and associated documentation files (the "Software"), to deal 5 | * in the Software without restriction, including without limitation the rights 6 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | * copies of the Software, and to permit persons to whom the Software is 8 | * furnished to do so, subject to the following conditions: 9 | * 10 | * The above copyright notice and this permission notice shall be included in 11 | * all copies or substantial portions of the Software. 12 | * 13 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | * THE SOFTWARE. }}} */ 20 | 21 | package dependency_test 22 | 23 | import ( 24 | "testing" 25 | 26 | "pault.ag/go/debian/dependency" 27 | ) 28 | 29 | func TestArchString(t *testing.T) { 30 | equivs := map[string]string{ 31 | "all": "all", 32 | "any": "all", 33 | "amd64": "amd64", 34 | "gnu-linux-amd64": "amd64", 35 | "bsd-windows-i386": "bsd-windows-i386", 36 | } 37 | 38 | for _, el := range equivs { 39 | arch, err := dependency.ParseArch(el) 40 | isok(t, err) 41 | assert(t, arch.String() == equivs[el]) 42 | } 43 | } 44 | 45 | // vim: foldmethod=marker 46 | -------------------------------------------------------------------------------- /bashbrew/go/vendor/src/pault.ag/go/debian/internal/copy.go: -------------------------------------------------------------------------------- 1 | package internal 2 | 3 | import ( 4 | "io" 5 | "os" 6 | ) 7 | 8 | func Copy(source, dest string) error { 9 | in, err := os.Open(source) 10 | if err != nil { 11 | return err 12 | } 13 | defer in.Close() 14 | 15 | out, err := os.Create(dest) 16 | if err != nil { 17 | return err 18 | } 19 | defer out.Close() 20 | _, err = io.Copy(out, in) 21 | cerr := out.Close() 22 | if err != nil { 23 | return err 24 | } 25 | return cerr 26 | } 27 | -------------------------------------------------------------------------------- /bashbrew/go/vendor/src/pault.ag/go/debian/transput/compressors.go: -------------------------------------------------------------------------------- 1 | package transput 2 | 3 | import ( 4 | "fmt" 5 | "io" 6 | 7 | "compress/gzip" 8 | ) 9 | 10 | type Compressor func(io.Writer) (io.WriteCloser, error) 11 | 12 | func gzipCompressor(in io.Writer) (io.WriteCloser, error) { 13 | return gzip.NewWriter(in), nil 14 | } 15 | 16 | var knownCompressors = map[string]Compressor{ 17 | "gz": gzipCompressor, 18 | } 19 | 20 | func GetCompressor(name string) (Compressor, error) { 21 | if compressor, ok := knownCompressors[name]; ok { 22 | return compressor, nil 23 | } 24 | return nil, fmt.Errorf("No such compressor: '%s'", name) 25 | } 26 | -------------------------------------------------------------------------------- /bashbrew/go/vendor/src/pault.ag/go/debian/transput/construct.go: -------------------------------------------------------------------------------- 1 | package transput 2 | 3 | import ( 4 | "io" 5 | ) 6 | 7 | func NewHasherWriter(hash string, target io.Writer) (io.Writer, *Hasher, error) { 8 | hw, err := NewHasher(hash) 9 | if err != nil { 10 | return nil, nil, err 11 | } 12 | endWriter := io.MultiWriter(target, hw) 13 | return endWriter, hw, nil 14 | } 15 | 16 | func NewHasherWriters(hashes []string, target io.Writer) (io.Writer, []*Hasher, error) { 17 | hashers := []*Hasher{} 18 | writers := []io.Writer{} 19 | 20 | for _, hash := range hashes { 21 | hw, err := NewHasher(hash) 22 | if err != nil { 23 | return nil, nil, err 24 | } 25 | hashers = append(hashers, hw) 26 | writers = append(writers, hw) 27 | } 28 | 29 | endWriter := io.MultiWriter(append(writers, target)...) 30 | return endWriter, hashers, nil 31 | } 32 | 33 | func NewHasherReader(hash string, target io.Reader) (io.Reader, *Hasher, error) { 34 | hw, err := NewHasher(hash) 35 | if err != nil { 36 | return nil, nil, err 37 | } 38 | endReader := io.TeeReader(target, hw) 39 | return endReader, hw, nil 40 | } 41 | 42 | func NewHasherReaders(hashes []string, target io.Reader) (io.Reader, []*Hasher, error) { 43 | hashers := []*Hasher{} 44 | writers := []io.Writer{} 45 | 46 | for _, hash := range hashes { 47 | hw, err := NewHasher(hash) 48 | if err != nil { 49 | return nil, nil, err 50 | } 51 | hashers = append(hashers, hw) 52 | writers = append(writers, hw) 53 | } 54 | endReader := io.TeeReader(target, io.MultiWriter(writers...)) 55 | return endReader, hashers, nil 56 | } 57 | -------------------------------------------------------------------------------- /bashbrew/go/vendor/src/pault.ag/go/debian/transput/hash.go: -------------------------------------------------------------------------------- 1 | package transput 2 | 3 | import ( 4 | "fmt" 5 | "hash" 6 | 7 | "crypto/md5" 8 | "crypto/sha1" 9 | "crypto/sha256" 10 | "crypto/sha512" 11 | ) 12 | 13 | func GetHash(name string) (hash.Hash, error) { 14 | switch name { 15 | case "md5": 16 | return md5.New(), nil 17 | case "sha1": 18 | return sha1.New(), nil 19 | case "sha256": 20 | return sha256.New(), nil 21 | case "sha512": 22 | return sha512.New(), nil 23 | default: 24 | return nil, fmt.Errorf("Unknown algorithm: %s", name) 25 | } 26 | } 27 | 28 | func NewHasher(name string) (*Hasher, error) { 29 | hash, err := GetHash(name) 30 | if err != nil { 31 | return nil, err 32 | } 33 | 34 | hw := Hasher{ 35 | name: name, 36 | hash: hash, 37 | size: 0, 38 | } 39 | 40 | return &hw, nil 41 | } 42 | 43 | type Hasher struct { 44 | name string 45 | hash hash.Hash 46 | size int64 47 | } 48 | 49 | func (dh *Hasher) Name() string { 50 | return dh.name 51 | } 52 | 53 | func (dh *Hasher) Write(p []byte) (int, error) { 54 | n, err := dh.hash.Write(p) 55 | dh.size += int64(n) 56 | return n, err 57 | } 58 | 59 | func (dh *Hasher) Size() int64 { 60 | return dh.size 61 | } 62 | 63 | func (dh *Hasher) Sum(b []byte) []byte { 64 | return dh.hash.Sum(b) 65 | } 66 | -------------------------------------------------------------------------------- /bashbrew/go/vendor/src/pault.ag/go/topsort/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) Paul R. Tagliamonte , 2015 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /bashbrew/go/vendor/src/pault.ag/go/topsort/README.md: -------------------------------------------------------------------------------- 1 | topsort 2 | ======= 3 | 4 | This package provides a handy interface to do a topological sort of 5 | some data in a pretty lightweight way. 6 | 7 | Example 8 | ------- 9 | 10 | ```go 11 | package main 12 | 13 | import ( 14 | "fmt" 15 | 16 | "pault.ag/go/topsort" 17 | ) 18 | 19 | func main() { 20 | network := topsort.NewNetwork() 21 | 22 | network.AddNode("watch tv while eating", nil) 23 | network.AddNode("make dinner", nil) 24 | network.AddNode("clean my kitchen", nil) 25 | 26 | /* Right, so the order of operations is next */ 27 | 28 | network.AddEdge("clean my kitchen", "make dinner") 29 | // I need to clean the kitchen before I make dinner. 30 | 31 | network.AddEdge("make dinner", "watch tv while eating") 32 | // Need to make dinner before I can eat it. 33 | 34 | nodes, err := network.Sort() 35 | if err != nil { 36 | panic(err) 37 | } 38 | 39 | for _, step := range nodes { 40 | fmt.Printf(" -> %s\n", step.Name) 41 | } 42 | /* Output is: 43 | * 44 | * -> clean my kitchen 45 | * -> make dinner 46 | * -> watch tv while eating 47 | */ 48 | } 49 | ``` 50 | -------------------------------------------------------------------------------- /bashbrew/travis.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | cd "$(dirname "$(readlink -f "$BASH_SOURCE")")" 5 | 6 | repos=( --all ) 7 | extraCommands= 8 | 9 | upstreamRepo='docker-library/official-images' 10 | upstreamBranch='master' 11 | if [ "$TRAVIS_PULL_REQUEST" -a "$TRAVIS_PULL_REQUEST" != 'false' ]; then 12 | upstreamRepo="$TRAVIS_REPO_SLUG" 13 | upstreamBranch="$TRAVIS_BRANCH" 14 | fi 15 | 16 | HEAD="$(git rev-parse --verify HEAD)" 17 | 18 | git fetch -q "https://github.com/$upstreamRepo.git" "refs/heads/$upstreamBranch" 19 | UPSTREAM="$(git rev-parse --verify FETCH_HEAD)" 20 | 21 | if [ "$TRAVIS_BRANCH" = 'master' -a "$TRAVIS_PULL_REQUEST" = 'false' ]; then 22 | # if we're testing master itself, RUN ALL THE THINGS 23 | echo >&2 'Testing master -- BUILD ALL THE THINGS!' 24 | elif [ "$(git diff --numstat "$UPSTREAM...$HEAD" -- . | wc -l)" -ne 0 ]; then 25 | # changes in bashbrew/ -- keep "--all" so we test the bashbrew script changes appropriately 26 | echo >&2 'Changes in bashbrew/ detected!' 27 | extraCommands=1 28 | else 29 | repos=( $(git diff --numstat "$UPSTREAM...$HEAD" -- ../library | awk -F '/' '{ print $2 }') ) 30 | extraCommands=1 31 | fi 32 | 33 | if [ "${#repos[@]}" -eq 0 ]; then 34 | echo >&2 'Skipping test builds: no changes to library/ or bashbrew/ in PR' 35 | exit 36 | fi 37 | 38 | export BASHBREW_LIBRARY="$(dirname "$PWD")/library" 39 | 40 | cmds=( 41 | 'list' 42 | 'list --uniq' 43 | 'cat' 44 | ) 45 | if [ "$extraCommands" ]; then 46 | cmds+=( 47 | 'list --build-order' 48 | 'from' 49 | ) 50 | fi 51 | 52 | export PS4=$'\n\n$ ' 53 | for cmd in "${cmds[@]}"; do 54 | ( set -x && bashbrew $cmd "${repos[@]}" ) 55 | done 56 | echo; echo 57 | -------------------------------------------------------------------------------- /build-and-push.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -eu -o pipefail 3 | 4 | # set "$0" so that tmux shows something more useful than "bash" in the statusbar 5 | desired0='b-a-p' 6 | if ! grep -q "$desired0" "/proc/$$/cmdline"; then 7 | exec -a "$desired0" "$SHELL" -- "$BASH_SOURCE" "$@" 8 | fi 9 | 10 | if [ "$#" -eq 0 ]; then 11 | self="$(basename "$0")" 12 | cat >&2 <<-EOF 13 | error: missing arguments 14 | usage: $self 15 | ie: $self debian ubuntu 16 | EOF 17 | exit 1 18 | fi 19 | 20 | # allow for specifying an alternate path to "bashbrew" 21 | : "${BASHBREW:=bashbrew}" 22 | 23 | # normalize "$@" to be the "--uniq" versions (and deduplicate) 24 | # also grab the list of associated repos in explicit build order (so we can build/push grouped by repo) 25 | IFS=$'\n' 26 | set -- $("$BASHBREW" list --uniq --repos "$@" | sort -u | xargs "$BASHBREW" list --uniq --repos --build-order) 27 | repos=( $(echo "$*" | cut -d: -f1 | xargs "$BASHBREW" list --repos --build-order) ) 28 | unset IFS 29 | 30 | declare -A repoTags=() 31 | for repoTag; do 32 | repo="${repoTag%%:*}" 33 | repoTags[$repo]+=" $repoTag" 34 | done 35 | 36 | children="$("$(dirname "$BASH_SOURCE")/children.sh" "$@")" 37 | 38 | echo 39 | echo 40 | echo "Children: (of $*)" 41 | echo "${children:-}" 42 | echo 43 | echo 44 | 45 | for repo in "${repos[@]}"; do 46 | tags=( ${repoTags[$repo]} ) 47 | ( 48 | set -x 49 | time "$BASHBREW" build "${tags[@]}" 50 | time "$BASHBREW" tag "${tags[@]}" 51 | time "$BASHBREW" push "${tags[@]}" 52 | ) 53 | done 54 | 55 | echo 56 | echo 57 | echo "Children: (of $*)" 58 | echo "${children:-}" 59 | echo 60 | echo 61 | 62 | if [ "$children" ]; then 63 | echo 'Suggested command:' 64 | echo " ./children.sh $* | xargs ./build-and-push.sh" 65 | echo 66 | fi 67 | 68 | # end by printing only warnings (stderr) for images we skipped (such as "windowsservercore" when building on Linux) 69 | # this helps remind us to switch BASHBREW or servers 70 | "$BASHBREW" list --apply-constraints "$@" > /dev/null 71 | -------------------------------------------------------------------------------- /children.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -eu -o pipefail 3 | 4 | # "bashbrew children" can't work with "--uniq" and "bashbrew build" will build the entire "tag group", so we need to filter the output to just uniq values 5 | 6 | : "${BASHBREW:=bashbrew}" 7 | 8 | IFS=$'\n' 9 | set -- $("$BASHBREW" list --uniq --repos --build-order "$@") 10 | 11 | # \o/ https://github.com/docker-library/official-images/commit/9e57342714f99074ec205eea668c8b73aada36ec 12 | comm -13 \ 13 | <("$BASHBREW" list "$@" | sort -u) \ 14 | <("$BASHBREW" children "$@" | sort -u) \ 15 | | xargs --no-run-if-empty "$BASHBREW" list --build-order --uniq 16 | exit 0 17 | 18 | children=( $("$BASHBREW" children "$@") ) 19 | 20 | [ "${#children[@]}" -gt 0 ] || exit 0 21 | 22 | # just repo names so we can get the right build-order for all of their tags 23 | childrenRepos=( $(echo "${children[*]}" | cut -d: -f1 | sort -u) ) 24 | 25 | # all uniq tags from all repos which have relevant children, in proper build order 26 | childrenReposUniq=( $("$BASHBREW" list --uniq --build-order "${childrenRepos[@]}") ) 27 | 28 | # the canonical ("uniq") versions of the children we're after (same as the values now in "childrenReposUniq") 29 | # use "comm" to suppress "$@" from the list of children we care about 30 | childrenUniq=( 31 | $( 32 | comm -13 \ 33 | <( 34 | "$BASHBREW" list --uniq "$@" \ 35 | | sort -u 36 | ) \ 37 | <( 38 | "$BASHBREW" list --uniq "${children[@]}" \ 39 | | sort -u 40 | ) 41 | ) 42 | ) 43 | 44 | [ "${#childrenUniq[@]}" -gt 0 ] || exit 0 45 | 46 | unset IFS 47 | 48 | # create a lookup table of whether we should return a particular tag 49 | declare -A wantChild=() 50 | for child in "${childrenUniq[@]}"; do 51 | wantChild["$child"]=1 52 | done 53 | 54 | # loop over the canonical build order and print out tags we want :) 55 | for child in "${childrenReposUniq[@]}"; do 56 | [ "${wantChild[$child]:-}" ] || continue 57 | echo "$child" 58 | done 59 | 60 | # note that we can't use "comm" by itself here because "childrenUniq" and "childrenReposUniq" are not in the same order, which "comm" requires 61 | -------------------------------------------------------------------------------- /library/aerospike: -------------------------------------------------------------------------------- 1 | # maintainer: Lucien Volmar (@volmarl) 2 | 3 | 3.10.1.1: git://github.com/aerospike/aerospike-server.docker@c54477af5e0b62f506d5234dca012db63c906224 4 | latest: git://github.com/aerospike/aerospike-server.docker@c54477af5e0b62f506d5234dca012db63c906224 5 | -------------------------------------------------------------------------------- /library/alpine: -------------------------------------------------------------------------------- 1 | # maintainer: Glider Labs (@gliderlabs) 2 | 3 | 3.1: git://github.com/gliderlabs/docker-alpine@8179fe722094b8724b7e9eb1d573173baf6ca977 versions/library-3.1 4 | 3.2: git://github.com/gliderlabs/docker-alpine@5636e9a91b543fa507271fbbc9b5d1db59ce986f versions/library-3.2 5 | 3.3: git://github.com/gliderlabs/docker-alpine@bc90ea0c90880b44cc7f405cbe6ec27ed453fda7 versions/library-3.3 6 | 3.4: git://github.com/gliderlabs/docker-alpine@a83f6c797a617f580ff717efe9e53543f7beca43 versions/library-3.4 7 | latest: git://github.com/gliderlabs/docker-alpine@a83f6c797a617f580ff717efe9e53543f7beca43 versions/library-3.4 8 | edge: git://github.com/gliderlabs/docker-alpine@64804257e6997cdc88c39e949b6a9df492621691 versions/library-edge 9 | 10 | -------------------------------------------------------------------------------- /library/amazonlinux: -------------------------------------------------------------------------------- 1 | Maintainers: Amazon Linux Team (@aws), 2 | Ian Weller (@ianweller), 3 | Praveen K Paladugu (@praveen-pk) 4 | GitRepo: https://github.com/aws/amazon-linux-docker-images.git 5 | 6 | Tags: 2016.09.0.20161118, 2016.09, latest 7 | GitFetch: refs/heads/2016.09 8 | GitCommit: 11dffca07aebe78c254fac1e4e38b4d04bafb85c 9 | 10 | Tags: 2016.09.0.20161118-with-sources, 2016.09-with-sources, with-sources 11 | GitFetch: refs/heads/2016.09-with-sources 12 | GitCommit: a9962fe03d732b19f744aeba9b19fe3783b248a0 13 | -------------------------------------------------------------------------------- /library/arangodb: -------------------------------------------------------------------------------- 1 | # maintainer: Frank Celler (@fceller) 2 | # maintainer: Wilfried Goesgens (@dothebart) 3 | 4 | 2.5.5: git://github.com/arangodb/arangodb-docker@636cd874df38edd77a187c08e1803693b3d978d3 jessie/2.5.5 5 | 2.5: git://github.com/arangodb/arangodb-docker@636cd874df38edd77a187c08e1803693b3d978d3 jessie/2.5.5 6 | 7 | 8 | 2.7: git://github.com/arangodb/arangodb-docker@dbfcc5f3edb37f622a2acd221b58106547b05fae jessie/2.7.5 9 | 2.7.5: git://github.com/arangodb/arangodb-docker@dbfcc5f3edb37f622a2acd221b58106547b05fae jessie/2.7.5 10 | 11 | 2.8: git://github.com/arangodb/arangodb-docker@05366cb4c6a6aab8e1ff9ca74c81b09d9a57b5b5 jessie/2.8.11 12 | 2.8.11: git://github.com/arangodb/arangodb-docker@05366cb4c6a6aab8e1ff9ca74c81b09d9a57b5b5 jessie/2.8.11 13 | 14 | 15 | 3.1: git://github.com/arangodb/arangodb-docker@2edfe94b64e152e3ed20f3884d8782fe7beede21 jessie/3.1.4 16 | 3.1.4: git://github.com/arangodb/arangodb-docker@2edfe94b64e152e3ed20f3884d8782fe7beede21 jessie/3.1.4 17 | latest: git://github.com/arangodb/arangodb-docker@2edfe94b64e152e3ed20f3884d8782fe7beede21 jessie/3.1.4 18 | -------------------------------------------------------------------------------- /library/backdrop: -------------------------------------------------------------------------------- 1 | # maintainer: Mike Pirog (@pirog) 2 | # maintainer: Geoff St. Pierre (@serundeputy) 3 | 4 | 1.5.2: git://github.com/backdrop-ops/backdrop-docker@a4f504374c3186442ed811b54996e048cb2c11f1 1/apache 5 | 1.5: git://github.com/backdrop-ops/backdrop-docker@a4f504374c3186442ed811b54996e048cb2c11f1 1/apache 6 | 1: git://github.com/backdrop-ops/backdrop-docker@a4f504374c3186442ed811b54996e048cb2c11f1 1/apache 7 | 1.5.0-apache: git://github.com/backdrop-ops/backdrop-docker@a4f504374c3186442ed811b54996e048cb2c11f1 1/apache 8 | 1.5-apache: git://github.com/backdrop-ops/backdrop-docker@a4f504374c3186442ed811b54996e048cb2c11f1 1/apache 9 | 1-apache: git://github.com/backdrop-ops/backdrop-docker@a4f504374c3186442ed811b54996e048cb2c11f1 1/apache 10 | apache: git://github.com/backdrop-ops/backdrop-docker@a4f504374c3186442ed811b54996e048cb2c11f1 1/apache 11 | latest: git://github.com/backdrop-ops/backdrop-docker@a4f504374c3186442ed811b54996e048cb2c11f1 1/apache 12 | 13 | 1.5.2-fpm: git://github.com/backdrop-ops/backdrop-docker@a4f504374c3186442ed811b54996e048cb2c11f1 1/fpm 14 | 1.5-fpm: git://github.com/backdrop-ops/backdrop-docker@a4f504374c3186442ed811b54996e048cb2c11f1 1/fpm 15 | 1-fpm: git://github.com/backdrop-ops/backdrop-docker@a4f504374c3186442ed811b54996e048cb2c11f1 1/fpm 16 | fpm: git://github.com/backdrop-ops/backdrop-docker@a4f504374c3186442ed811b54996e048cb2c11f1 1/fpm 17 | -------------------------------------------------------------------------------- /library/bash: -------------------------------------------------------------------------------- 1 | # this file is generated via https://github.com/tianon/docker-bash/blob/cd1de3dfc885b3395cd354ddb988922350b092a7/generate-stackbrew-library.sh 2 | 3 | Maintainers: Tianon Gravi (@tianon) 4 | GitRepo: https://github.com/tianon/docker-bash.git 5 | 6 | Tags: 4.4.5, 4.4, 4, latest 7 | GitCommit: d3283a47fbb92419b7b6fc1fccd30b95d75e9ab6 8 | Directory: 4.4 9 | 10 | Tags: 4.3.48, 4.3 11 | GitCommit: 2f7c9c45567b18b74c321f0ff1e460ae1117a9b5 12 | Directory: 4.3 13 | 14 | Tags: 4.2.53, 4.2 15 | GitCommit: 4813d8692c050fab37ce67f205977b11c4eea42c 16 | Directory: 4.2 17 | 18 | Tags: 4.1.17, 4.1 19 | GitCommit: 4813d8692c050fab37ce67f205977b11c4eea42c 20 | Directory: 4.1 21 | 22 | Tags: 4.0.44, 4.0 23 | GitCommit: 4813d8692c050fab37ce67f205977b11c4eea42c 24 | Directory: 4.0 25 | 26 | Tags: 3.2.57, 3.2, 3 27 | GitCommit: 4813d8692c050fab37ce67f205977b11c4eea42c 28 | Directory: 3.2 29 | 30 | Tags: 3.1.23, 3.1 31 | GitCommit: 4813d8692c050fab37ce67f205977b11c4eea42c 32 | Directory: 3.1 33 | 34 | Tags: 3.0.22, 3.0 35 | GitCommit: 0fb93762d52d5f73ea53557706f19a255ef990d1 36 | Directory: 3.0 37 | -------------------------------------------------------------------------------- /library/bonita: -------------------------------------------------------------------------------- 1 | # maintainer: Jérémy Jacquier-Roux (@JeremJR) 2 | # maintainer: Guillaume Rosinosky (@guillaumerosinosky) 3 | # maintainer: Truc Nguyen (@tnguyen1) 4 | 5 | 7.2.4: git://github.com/Bonitasoft-Community/docker_bonita@c8d6cbb007b77a9ce5b22a7e874608962f863e99 7.2 6 | 7.3.3: git://github.com/Bonitasoft-Community/docker_bonita@19d78ec0f212891e97814b2db30891b9b280f7e5 7.3 7 | latest: git://github.com/Bonitasoft-Community/docker_bonita@19d78ec0f212891e97814b2db30891b9b280f7e5 7.3 8 | -------------------------------------------------------------------------------- /library/busybox: -------------------------------------------------------------------------------- 1 | # this file is generated via https://github.com/docker-library/busybox/blob/e9f53b4c228785d94b53d5aafe46eeb089fe52fe/generate-stackbrew-library.sh 2 | 3 | Maintainers: Tianon Gravi (@tianon), 4 | Joseph Ferguson (@yosifkit), 5 | Jérôme Petazzoni (@jpetazzo) 6 | GitRepo: https://github.com/docker-library/busybox.git 7 | GitFetch: refs/heads/dist 8 | 9 | Tags: 1.25.1-glibc, 1.25-glibc, 1-glibc, glibc 10 | GitCommit: ad6b0303b320f64e63fef9291fcac5a4742c0855 11 | Directory: glibc 12 | 13 | Tags: 1.25.1-musl, 1.25-musl, 1-musl, musl 14 | GitCommit: ad6b0303b320f64e63fef9291fcac5a4742c0855 15 | Directory: musl 16 | 17 | Tags: 1.25.1-uclibc, 1.25-uclibc, 1-uclibc, uclibc, 1.25.1, 1.25, 1, latest 18 | GitCommit: ad6b0303b320f64e63fef9291fcac5a4742c0855 19 | Directory: uclibc 20 | -------------------------------------------------------------------------------- /library/cassandra: -------------------------------------------------------------------------------- 1 | # this file is generated via https://github.com/docker-library/cassandra/blob/7832a56e4da025d9d87db6cab5c056564995958c/generate-stackbrew-library.sh 2 | 3 | Maintainers: Tianon Gravi (@tianon), 4 | Joseph Ferguson (@yosifkit) 5 | GitRepo: https://github.com/docker-library/cassandra.git 6 | 7 | Tags: 2.1.16, 2.1 8 | GitCommit: 4bb926527d4a9eb534508fe0bbae604dee81f40a 9 | Directory: 2.1 10 | 11 | Tags: 2.2.8, 2.2, 2 12 | GitCommit: 4bb926527d4a9eb534508fe0bbae604dee81f40a 13 | Directory: 2.2 14 | 15 | Tags: 3.0.10, 3.0 16 | GitCommit: d3a91560b21e73994235a72a4c3153e775e1654d 17 | Directory: 3.0 18 | 19 | Tags: 3.9, 3, latest 20 | GitCommit: 4bb926527d4a9eb534508fe0bbae604dee81f40a 21 | Directory: 3.9 22 | -------------------------------------------------------------------------------- /library/celery: -------------------------------------------------------------------------------- 1 | # this file is generated via https://github.com/docker-library/celery/blob/2b56f641be3c38c4367fa7501268b43398199922/generate-stackbrew-library.sh 2 | 3 | Maintainers: Tianon Gravi (@tianon), 4 | Joseph Ferguson (@yosifkit) 5 | GitRepo: https://github.com/docker-library/celery.git 6 | 7 | Tags: 4.0.1, 4.0, 4 8 | GitCommit: 5082d1515a4562d668eaaa3eb189ddb28b36fb85 9 | Directory: 4.0 10 | 11 | Tags: 3.1.25, 3.1, 3, latest 12 | GitCommit: e6b17d6339f3cf26a0bfd7083cd2ae926f6e5130 13 | Directory: 3.1 14 | -------------------------------------------------------------------------------- /library/centos: -------------------------------------------------------------------------------- 1 | Maintainers: The CentOS Project (@CentOS) 2 | GitRepo: https://github.com/CentOS/sig-cloud-instance-images.git 3 | Directory: docker 4 | Constraints: !aufs 5 | 6 | Tags: latest, centos7, 7 7 | GitFetch: refs/heads/CentOS-7 8 | GitCommit: 338acec5394e5200cfe613e4340cdda782673f6d 9 | 10 | Tags: centos6, 6 11 | GitFetch: refs/heads/CentOS-6 12 | GitCommit: 83a75fbb40f80935d91b876115704f6e12334575 13 | 14 | Tags: centos5, 5 15 | GitFetch: refs/heads/CentOS-5 16 | GitCommit: 4bf8330498e1c10cf365aff31d2a8a5c3254c2cf 17 | 18 | Tags: centos7.3.1611, 7.3.1611 19 | GitFetch: refs/heads/CentOS-7.3.1611 20 | GitCommit: 5bbaef9f60ab9e3eeb61acec631c2d91f8714fff 21 | 22 | Tags: centos7.2.1511, 7.2.1511 23 | GitFetch: refs/heads/CentOS-7.2.1511 24 | GitCommit: a3c59bd4e98a7f9c063d993955c8ec19c5b1ceff 25 | 26 | Tags: centos7.1.1503, 7.1.1503 27 | GitFetch: refs/heads/CentOS-7.1.1503 28 | GitCommit: bc561dfdd671d612dbb9f92e7e17dd8009befc44 29 | 30 | Tags: centos7.0.1406, 7.0.1406 31 | GitFetch: refs/heads/CentOS-7.0.1406 32 | GitCommit: f1d1e0bd83baef08e257da50e6fb446e4dd1b90c 33 | 34 | Tags: centos6.8, 6.8 35 | GitFetch: refs/heads/CentOS-6.8 36 | GitCommit: f32666d2af356ed6835942ed753a4970e18bca94 37 | 38 | Tags: centos6.7, 6.7 39 | GitFetch: refs/heads/CentOS-6.7 40 | GitCommit: d0b72df83f49da844f88aabebe3826372f675370 41 | 42 | Tags: centos6.6, 6.6 43 | GitFetch: refs/heads/CentOS-6.6 44 | GitCommit: 8911843d9a6cc71aadd81e491f94618aded94f30 45 | 46 | Tags: centos5.11, 5.11 47 | GitFetch: refs/heads/CentOS-5.11 48 | GitCommit: 2d0554464ae19f4fd70d1b540c8968dbe872797b 49 | -------------------------------------------------------------------------------- /library/chronograf: -------------------------------------------------------------------------------- 1 | Maintainers: Jonathan A. Sternberg (@jsternberg) 2 | 3 | Tags: 0.13, 0.13.0, latest 4 | GitRepo: git://github.com/influxdata/influxdata-docker 5 | GitCommit: 22b661b4c141d237669f94e4740f234b7be43a7b 6 | Directory: chronograf/0.13 7 | 8 | Tags: 1.0.0-rc1 9 | GitRepo: git://github.com/influxdata/influxdata-docker 10 | GitCommit: 22b661b4c141d237669f94e4740f234b7be43a7b 11 | Directory: chronograf/1.0 12 | -------------------------------------------------------------------------------- /library/cirros: -------------------------------------------------------------------------------- 1 | # maintainer: Eric Windisch (@ewindisch) 2 | # Supporting latest & -1 stable releases of CirrOS. 3 | 4 | latest: git://github.com/ewindisch/docker-cirros@fd9aa114c465237518535d3545d4f9c4bc1d0aa5 5 | 0.3.4: git://github.com/ewindisch/docker-cirros@fd9aa114c465237518535d3545d4f9c4bc1d0aa5 6 | 0.3.3: git://github.com/ewindisch/docker-cirros@5ef3f5024b0aa80553cc34be9eff6685cb31b458 7 | -------------------------------------------------------------------------------- /library/clearlinux: -------------------------------------------------------------------------------- 1 | # maintainer: William Douglas 2 | 3 | latest: git://github.com/clearlinux/docker-brew-clearlinux@4d594721b83c7db6b7031cde6d8e9e103640e549 4 | base: git://github.com/clearlinux/docker-brew-clearlinux@4d594721b83c7db6b7031cde6d8e9e103640e549 5 | -------------------------------------------------------------------------------- /library/clojure: -------------------------------------------------------------------------------- 1 | # maintainer: Paul Lam (@Quantisan) 2 | # maintainer: Wes Morgan (@cap10morgan) 3 | 4 | latest: git://github.com/Quantisan/docker-clojure@c77c13529de02183433da15e8227eba63cc96724 5 | onbuild: git://github.com/Quantisan/docker-clojure@c77c13529de02183433da15e8227eba63cc96724 onbuild 6 | alpine: git://github.com/Quantisan/docker-clojure@c77c13529de02183433da15e8227eba63cc96724 alpine 7 | alpine-onbuild: git://github.com/Quantisan/docker-clojure@c77c13529de02183433da15e8227eba63cc96724 alpine-onbuild 8 | 9 | lein-2.7.1: git://github.com/Quantisan/docker-clojure@c77c13529de02183433da15e8227eba63cc96724 10 | lein-2.7.1-onbuild: git://github.com/Quantisan/docker-clojure@c77c13529de02183433da15e8227eba63cc96724 onbuild 11 | lein-2.7.1-alpine: git://github.com/Quantisan/docker-clojure@c77c13529de02183433da15e8227eba63cc96724 alpine 12 | lein-2.7.1-alpine-onbuild: git://github.com/Quantisan/docker-clojure@c77c13529de02183433da15e8227eba63cc96724 alpine-onbuild 13 | -------------------------------------------------------------------------------- /library/composer: -------------------------------------------------------------------------------- 1 | # this file was generated using https://github.com/composer/docker/blob/4ff81ce2e854771f20205afeb474bbaf00a10363/generate-manifest.sh 2 | 3 | Maintainers: Composer (@composer), Rob Bast (@alcohol) 4 | GitRepo: https://github.com/composer/docker.git 5 | 6 | Tags: 1.2.4, 1.2, 1, latest 7 | GitCommit: 690f3d623ac1ba30be337a254b2126584e6e2aa5 8 | Directory: 1.2 9 | 10 | Tags: 1.1.3, 1.1 11 | GitCommit: be6ecf58913f704399d11a352818b22951832a60 12 | Directory: 1.1 13 | -------------------------------------------------------------------------------- /library/consul: -------------------------------------------------------------------------------- 1 | # maintainer: James Phillips (@slackpad) 2 | 3 | latest: git://github.com/hashicorp/docker-consul@2c2873f9d619220d1eef0bc46ec78443f55a10b5 0.X 4 | 0.7.1: git://github.com/hashicorp/docker-consul@2c2873f9d619220d1eef0bc46ec78443f55a10b5 0.X 5 | -------------------------------------------------------------------------------- /library/couchbase: -------------------------------------------------------------------------------- 1 | # maintainer: Couchbase Docker Team (@couchbase) 2 | 3 | latest: git://github.com/couchbase/docker@042e733f40487ee07c75413f10ce3c29b1d49181 enterprise/couchbase-server/4.5.1 4 | enterprise: git://github.com/couchbase/docker@042e733f40487ee07c75413f10ce3c29b1d49181 enterprise/couchbase-server/4.5.1 5 | 4.5.1: git://github.com/couchbase/docker@042e733f40487ee07c75413f10ce3c29b1d49181 enterprise/couchbase-server/4.5.1 6 | enterprise-4.5.1: git://github.com/couchbase/docker@042e733f40487ee07c75413f10ce3c29b1d49181 enterprise/couchbase-server/4.5.1 7 | 8 | community: git://github.com/couchbase/docker@042e733f40487ee07c75413f10ce3c29b1d49181 community/couchbase-server/4.5.0 9 | community-4.5.0: git://github.com/couchbase/docker@042e733f40487ee07c75413f10ce3c29b1d49181 community/couchbase-server/4.5.0 10 | 11 | 3.1.6: git://github.com/couchbase/docker@042e733f40487ee07c75413f10ce3c29b1d49181 enterprise/couchbase-server/3.1.6 12 | enterprise-3.1.6: git://github.com/couchbase/docker@042e733f40487ee07c75413f10ce3c29b1d49181 enterprise/couchbase-server/3.1.6 13 | 14 | community-3.1.3: git://github.com/couchbase/docker@042e733f40487ee07c75413f10ce3c29b1d49181 community/couchbase-server/3.1.3 15 | 16 | -------------------------------------------------------------------------------- /library/couchdb: -------------------------------------------------------------------------------- 1 | # maintainer: Clemens Stolle (@klaemo) 2 | 3 | latest: git://github.com/klaemo/docker-couchdb@29ed69965ed616a9d0df9a6ffa081773d86c78bc 1.6.1 4 | 1.6.1: git://github.com/klaemo/docker-couchdb@29ed69965ed616a9d0df9a6ffa081773d86c78bc 1.6.1 5 | 1.6: git://github.com/klaemo/docker-couchdb@29ed69965ed616a9d0df9a6ffa081773d86c78bc 1.6.1 6 | 1: git://github.com/klaemo/docker-couchdb@29ed69965ed616a9d0df9a6ffa081773d86c78bc 1.6.1 7 | 8 | 1.6.1-couchperuser: git://github.com/klaemo/docker-couchdb@29ed69965ed616a9d0df9a6ffa081773d86c78bc 1.6.1-couchperuser 9 | 1.6-couchperuser: git://github.com/klaemo/docker-couchdb@29ed69965ed616a9d0df9a6ffa081773d86c78bc 1.6.1-couchperuser 10 | 1-couchperuser: git://github.com/klaemo/docker-couchdb@29ed69965ed616a9d0df9a6ffa081773d86c78bc 1.6.1-couchperuser 11 | -------------------------------------------------------------------------------- /library/crate: -------------------------------------------------------------------------------- 1 | # maintainer: Bernd Dorn (@dobe) 2 | # maintainer: Mathias Fußenegger (@mfussenegger) 3 | # maintainer: Matthias Wahl (@mfelsche) 4 | # maintainer: Michael Beer (@mikethebeer) 5 | # maintainer: Christian Haudum (@chaudum) 6 | # maintainer: Ruslan Kovalov (@kovrus) 7 | # maintainer: Claus Matzinger (@celaus) 8 | 9 | # see also https://crate.io 10 | 11 | latest: git://github.com/crate/docker-crate@51d0d07e455bb6658341cbd7bf8a670c94fdd92c 12 | 0.57: git://github.com/crate/docker-crate@54ceb9d7065ee853faf3b050ddaeeee3580585b8 13 | 0.57.6: git://github.com/crate/docker-crate@54ceb9d7065ee853faf3b050ddaeeee3580585b8 14 | 1.0: git://github.com/crate/docker-crate@51d0d07e455bb6658341cbd7bf8a670c94fdd92c 15 | 1.0.1: git://github.com/crate/docker-crate@51d0d07e455bb6658341cbd7bf8a670c94fdd92c 16 | -------------------------------------------------------------------------------- /library/crux: -------------------------------------------------------------------------------- 1 | # maintainer: James Mills (@therealprologic) 2 | 3 | latest: git://github.com/prologic/docker-crux@c614d61c53c05c02a43a34187fa1370db2c61524 4 | 3.1: git://github.com/prologic/docker-crux@c614d61c53c05c02a43a34187fa1370db2c61524 5 | -------------------------------------------------------------------------------- /library/django: -------------------------------------------------------------------------------- 1 | # this file is generated via https://github.com/docker-library/django/blob/e73a3bd34657b3fb6c87c78e16036efc474ec468/generate-stackbrew-library.sh 2 | 3 | Maintainers: Tianon Gravi (@tianon), 4 | Joseph Ferguson (@yosifkit) 5 | GitRepo: https://github.com/docker-library/django.git 6 | 7 | Tags: 1.10.4-python3, 1.10-python3, 1-python3, python3, 1.10.4, 1.10, 1, latest 8 | GitCommit: d7f1d0e61cffe81d6ca9797c63fc25eba7e277db 9 | Directory: 3.4 10 | 11 | Tags: python3-onbuild, onbuild 12 | GitCommit: 4fe080675e4a85ef6ee25c811e9d3d3ef0905794 13 | Directory: 3.4/onbuild 14 | 15 | Tags: 1.10.4-python2, 1.10-python2, 1-python2, python2 16 | GitCommit: d7f1d0e61cffe81d6ca9797c63fc25eba7e277db 17 | Directory: 2.7 18 | 19 | Tags: python2-onbuild 20 | GitCommit: cecbb2bbbcb69d1b8358398eaf8d9638e3bdd447 21 | Directory: 2.7/onbuild 22 | -------------------------------------------------------------------------------- /library/docker: -------------------------------------------------------------------------------- 1 | # this file is generated via https://github.com/docker-library/docker/blob/a7fc73eef011c47cc2518149bc77a4b9bc7f9f41/generate-stackbrew-library.sh 2 | 3 | Maintainers: Tianon Gravi (@tianon), 4 | Joseph Ferguson (@yosifkit) 5 | GitRepo: https://github.com/docker-library/docker.git 6 | 7 | Tags: 1.13.0-rc3, 1.13-rc, rc 8 | GitCommit: e3d26cada8093a8a6814e7b341f03298d1b276fb 9 | Directory: 1.13-rc 10 | 11 | Tags: 1.13.0-rc3-dind, 1.13-rc-dind, rc-dind 12 | GitCommit: c1af76ec4c97ff24dcf6675b55b12105216dc711 13 | Directory: 1.13-rc/dind 14 | 15 | Tags: 1.13.0-rc3-git, 1.13-rc-git, rc-git 16 | GitCommit: 737f83092a47b012d09a0cbf0ed72759550301cb 17 | Directory: 1.13-rc/git 18 | 19 | Tags: 1.12.4, 1.12, 1, latest 20 | GitCommit: 1c73734649299a17d1472fb206b992a544bd1777 21 | Directory: 1.12 22 | 23 | Tags: 1.12.4-dind, 1.12-dind, 1-dind, dind 24 | GitCommit: c1af76ec4c97ff24dcf6675b55b12105216dc711 25 | Directory: 1.12/dind 26 | 27 | Tags: 1.12.4-git, 1.12-git, 1-git, git 28 | GitCommit: 746d9052066ccfbcb98df7d9ae71cf05d8877419 29 | Directory: 1.12/git 30 | 31 | Tags: 1.12.4-experimental, 1.12-experimental, 1-experimental, experimental 32 | GitCommit: 1c73734649299a17d1472fb206b992a544bd1777 33 | Directory: 1.12/experimental 34 | 35 | Tags: 1.12.4-experimental-dind, 1.12-experimental-dind, 1-experimental-dind, experimental-dind 36 | GitCommit: c1af76ec4c97ff24dcf6675b55b12105216dc711 37 | Directory: 1.12/experimental/dind 38 | 39 | Tags: 1.12.4-experimental-git, 1.12-experimental-git, 1-experimental-git, experimental-git 40 | GitCommit: eb714a73e7e3f87705f468c3c6e9f4e316136bf5 41 | Directory: 1.12/experimental/git 42 | 43 | Tags: 1.11.2, 1.11 44 | GitCommit: 0c44c1c6c25a34eb9abe320805e0f89bf5b0ace2 45 | Directory: 1.11 46 | 47 | Tags: 1.11.2-dind, 1.11-dind 48 | GitCommit: 5e30187978ad75d0f2ae5fc6c2a0b668bdf16885 49 | Directory: 1.11/dind 50 | 51 | Tags: 1.11.2-git, 1.11-git 52 | GitCommit: 866c3fbd87e8eeed524fdf19ba2d63288ad49cd2 53 | Directory: 1.11/git 54 | -------------------------------------------------------------------------------- /library/drupal: -------------------------------------------------------------------------------- 1 | # this file is generated via https://github.com/docker-library/drupal/blob/7f849190fd64db8d6b55c05bd52773e50c5f8326/generate-stackbrew-library.sh 2 | 3 | Maintainers: Tianon Gravi (@tianon), 4 | Joseph Ferguson (@yosifkit) 5 | GitRepo: https://github.com/docker-library/drupal.git 6 | 7 | Tags: 8.2.4-apache, 8.2-apache, 8-apache, apache, 8.2.4, 8.2, 8, latest 8 | GitCommit: aa623002a920a130a638b4b30d664aa59a662d2d 9 | Directory: 8.2/apache 10 | 11 | Tags: 8.2.4-fpm, 8.2-fpm, 8-fpm, fpm 12 | GitCommit: aa623002a920a130a638b4b30d664aa59a662d2d 13 | Directory: 8.2/fpm 14 | 15 | Tags: 7.53-apache, 7-apache, 7.53, 7 16 | GitCommit: 5dd56ed77e995f2cad08b6206d9e335c3a150168 17 | Directory: 7/apache 18 | 19 | Tags: 7.53-fpm, 7-fpm 20 | GitCommit: 5dd56ed77e995f2cad08b6206d9e335c3a150168 21 | Directory: 7/fpm 22 | -------------------------------------------------------------------------------- /library/eclipse-mosquitto: -------------------------------------------------------------------------------- 1 | Maintainers: David Audet (@daudetCA) 2 | GitRepo: https://github.com/eclipse/mosquitto.git 3 | 4 | Tags: 1.4.8, latest 5 | GitCommit: 5487395fb67ad2e2b6dac1ff67bd0ac289383f09 6 | Directory: docker/1.4.8 7 | 8 | Tags: 1.4.4 9 | GitCommit: 5487395fb67ad2e2b6dac1ff67bd0ac289383f09 10 | Directory: docker/1.4.4 11 | -------------------------------------------------------------------------------- /library/eggdrop: -------------------------------------------------------------------------------- 1 | Maintainers: Geo Van O (@vanosg) 2 | GitRepo: https://github.com/eggheads/eggdrop-docker.git 3 | 4 | Tags: develop 5 | GitCommit: b40c105f85fc9db680c9d12a547502e62c66bb3b 6 | Directory: develop 7 | 8 | Tags: 1.8, 1.8.0, stable, latest 9 | GitCommit: 98f9d9a8c56b7b88b249135ab6b87019efa82337 10 | Directory: 1.8 11 | 12 | Tags: 1.6, 1.6.21 13 | GitCommit: 87d717b0c05d4c43460a411c9871e9190c94f8bb 14 | Directory: 1.6 15 | -------------------------------------------------------------------------------- /library/elasticsearch: -------------------------------------------------------------------------------- 1 | # this file is generated via https://github.com/docker-library/elasticsearch/blob/4e4394f9563a109180289d8eb2ff3bc6c1e2dcb2/generate-stackbrew-library.sh 2 | 3 | Maintainers: Tianon Gravi (@tianon), 4 | Joseph Ferguson (@yosifkit) 5 | GitRepo: https://github.com/docker-library/elasticsearch.git 6 | 7 | Tags: 5.1.1, 5.1, 5, latest 8 | GitCommit: 4e4394f9563a109180289d8eb2ff3bc6c1e2dcb2 9 | Directory: 5 10 | 11 | Tags: 5.1.1-alpine, 5.1-alpine, 5-alpine, alpine 12 | GitCommit: e0d91f112e9b145a36bcaeff866e25853f5e965c 13 | Directory: 5/alpine 14 | 15 | Tags: 2.4.2, 2.4, 2 16 | GitCommit: 4e4394f9563a109180289d8eb2ff3bc6c1e2dcb2 17 | Directory: 2.4 18 | 19 | Tags: 2.4.2-alpine, 2.4-alpine, 2-alpine 20 | GitCommit: e0d91f112e9b145a36bcaeff866e25853f5e965c 21 | Directory: 2.4/alpine 22 | 23 | Tags: 1.7.6, 1.7, 1 24 | GitCommit: 4e4394f9563a109180289d8eb2ff3bc6c1e2dcb2 25 | Directory: 1.7 26 | 27 | Tags: 1.7.6-alpine, 1.7-alpine, 1-alpine 28 | GitCommit: e0d91f112e9b145a36bcaeff866e25853f5e965c 29 | Directory: 1.7/alpine 30 | -------------------------------------------------------------------------------- /library/elixir: -------------------------------------------------------------------------------- 1 | # this file is generated via https://github.com/c0b/docker-elixir/blob/d8d656d7c0dc9dd2956a22276c93cb97568ea6d4/generate-stackbrew-library.sh 2 | 3 | Maintainers: Mr C0B (@c0b) 4 | GitRepo: https://github.com/c0b/docker-elixir.git 5 | 6 | Tags: 1.3.4, 1.3, latest 7 | GitCommit: d8d656d7c0dc9dd2956a22276c93cb97568ea6d4 8 | Directory: 1.3 9 | 10 | Tags: 1.3.4-slim, 1.3-slim, slim 11 | GitCommit: d8d656d7c0dc9dd2956a22276c93cb97568ea6d4 12 | Directory: 1.3/slim 13 | 14 | Tags: 1.2.6, 1.2 15 | GitCommit: 77b9a3da43ce035327ae29083e567191d60a6ac8 16 | Directory: 1.2 17 | 18 | Tags: 1.2.6-slim, 1.2-slim 19 | GitCommit: 77b9a3da43ce035327ae29083e567191d60a6ac8 20 | Directory: 1.2/slim 21 | -------------------------------------------------------------------------------- /library/erlang: -------------------------------------------------------------------------------- 1 | # this file is generated via https://github.com/c0b/docker-erlang-otp/blob/65d3a1ff75dfe46467b2fc93a0fd6f5009ba02f4/generate-stackbrew-library.sh 2 | 3 | Maintainers: Mr C0B (@c0b) 4 | GitRepo: https://github.com/c0b/docker-erlang-otp.git 5 | 6 | Tags: 19.1.6, 19.1, 19, latest 7 | GitCommit: 02c1f6eaae350492bf74a9a261b9639b17ae524e 8 | Directory: 19 9 | 10 | Tags: 19.1.6-slim, 19.1-slim, 19-slim, slim 11 | GitCommit: 02c1f6eaae350492bf74a9a261b9639b17ae524e 12 | Directory: 19/slim 13 | 14 | Tags: 19.1.6-onbuild, 19.1-onbuild, 19-onbuild, onbuild 15 | GitCommit: 02c1f6eaae350492bf74a9a261b9639b17ae524e 16 | Directory: 19/onbuild 17 | 18 | Tags: 18.3.4.4, 18.3.4, 18.3, 18 19 | GitCommit: 7f5e7b4768136caa5f15e0b84d6b503fa430ef7b 20 | Directory: 18 21 | 22 | Tags: 18.3.4.4-slim, 18.3.4-slim, 18.3-slim, 18-slim 23 | GitCommit: 7f5e7b4768136caa5f15e0b84d6b503fa430ef7b 24 | Directory: 18/slim 25 | 26 | Tags: 18.3.4.4-onbuild, 18.3.4-onbuild, 18.3-onbuild, 18-onbuild 27 | GitCommit: 20e41464075dc0fc76709be77701530eddb6fe33 28 | Directory: 18/onbuild 29 | 30 | Tags: 17.5.6.9, 17.5.6, 17.5, 17 31 | GitCommit: ea32d5f6f1735f9f55bee04b112166da96eb9c73 32 | Directory: 17 33 | 34 | Tags: 17.5.6.9-slim, 17.5.6-slim, 17.5-slim, 17-slim 35 | GitCommit: ea32d5f6f1735f9f55bee04b112166da96eb9c73 36 | Directory: 17/slim 37 | -------------------------------------------------------------------------------- /library/fedora: -------------------------------------------------------------------------------- 1 | Maintainers: Adam Miller (@maxamillion), 2 | Patrick Uiterwijk (@puiterwijk) 3 | GitRepo: https://github.com/fedora-cloud/docker-brew-fedora.git 4 | Constraints: !aufs 5 | 6 | Tags: latest, 25 7 | GitFetch: refs/heads/25 8 | GitCommit: 235aaaed8104883ae8e582ab155691869be14f1a 9 | 10 | Tags: 24 11 | GitFetch: refs/heads/24 12 | GitCommit: f3726622b5012c1f374bf9f596616eab3cd4988c 13 | 14 | Tags: 23 15 | GitFetch: refs/heads/23 16 | GitCommit: ec63b8db44c2d8c97e29faeb55955ca25bd9076e 17 | 18 | Tags: 22 19 | GitFetch: refs/heads/22 20 | GitCommit: bccd42bf4e9102ef10eff372488167948fdd0430 21 | 22 | Tags: 21 23 | GitFetch: refs/heads/21 24 | GitCommit: e32493b9601c3535cd6e0d0a8ff61d8fa95afb83 25 | 26 | Tags: rawhide 27 | GitFetch: refs/heads/rawhide 28 | GitCommit: 2218da935dd31938254d5b096ba5a29a8e05b7ae 29 | 30 | Tags: 20, heisenbug 31 | GitFetch: refs/heads/20 32 | GitCommit: 10ada29063147fde9e39190f4c2344b6e6e659e6 33 | -------------------------------------------------------------------------------- /library/fsharp: -------------------------------------------------------------------------------- 1 | # maintainer: Henrik Feldt (@haf) 2 | 3 | 4.0.0.4: git://github.com/fsprojects/docker-fsharp@57b3ddadc85a63bf586ab89b523bb8326dad9c12 4.0.0.4 4 | 4.0.1.1: git://github.com/fsprojects/docker-fsharp@57b3ddadc85a63bf586ab89b523bb8326dad9c12 4.0.1.1 5 | latest: git://github.com/fsprojects/docker-fsharp@57b3ddadc85a63bf586ab89b523bb8326dad9c12 4.0.1.1 6 | -------------------------------------------------------------------------------- /library/gazebo: -------------------------------------------------------------------------------- 1 | # maintainer: Nate Koenig (@nkoenig) 2 | 3 | gzserver4: git://github.com/osrf/docker_images@32010a4955ccbfb2427063e67a75d13617749963 gazebo/gazebo4/gzserver4 4 | libgazebo4: git://github.com/osrf/docker_images@32010a4955ccbfb2427063e67a75d13617749963 gazebo/gazebo4/libgazebo4 5 | # Docker EOL: 2016-01-25 6 | 7 | gzserver5: git://github.com/osrf/docker_images@32010a4955ccbfb2427063e67a75d13617749963 gazebo/gazebo5/gzserver5 8 | libgazebo5: git://github.com/osrf/docker_images@32010a4955ccbfb2427063e67a75d13617749963 gazebo/gazebo5/libgazebo5 9 | # Docker EOL: 2017-01-25 10 | 11 | gzserver6: git://github.com/osrf/docker_images@32010a4955ccbfb2427063e67a75d13617749963 gazebo/gazebo6/gzserver6 12 | libgazebo6: git://github.com/osrf/docker_images@32010a4955ccbfb2427063e67a75d13617749963 gazebo/gazebo6/libgazebo6 13 | # Docker EOL: 2017-01-25 14 | 15 | gzserver7: git://github.com/osrf/docker_images@32010a4955ccbfb2427063e67a75d13617749963 gazebo/gazebo7/gzserver7 16 | libgazebo7: git://github.com/osrf/docker_images@32010a4955ccbfb2427063e67a75d13617749963 gazebo/gazebo7/libgazebo7 17 | latest: git://github.com/osrf/docker_images@32010a4955ccbfb2427063e67a75d13617749963 gazebo/gazebo7/libgazebo7 18 | # Docker EOL: 2021-01-25 19 | -------------------------------------------------------------------------------- /library/gcc: -------------------------------------------------------------------------------- 1 | # this file is generated via https://github.com/docker-library/gcc/blob/8c7687860cdd4ef9227c249ca4587984e2636a55/generate-stackbrew-library.sh 2 | 3 | Maintainers: Tianon Gravi (@tianon), 4 | Joseph Ferguson (@yosifkit) 5 | GitRepo: https://github.com/docker-library/gcc.git 6 | 7 | # Last Modified: 2016-08-03 8 | Tags: 4.9.4, 4.9, 4 9 | GitCommit: 8c7687860cdd4ef9227c249ca4587984e2636a55 10 | Directory: 4.9 11 | # Docker EOL: 2017-08-03 12 | 13 | # Last Modified: 2016-06-03 14 | Tags: 5.4.0, 5.4, 5 15 | GitCommit: 8c7687860cdd4ef9227c249ca4587984e2636a55 16 | Directory: 5 17 | # Docker EOL: 2017-06-03 18 | 19 | # Last Modified: 2016-08-22 20 | Tags: 6.2.0, 6.2, 6, latest 21 | GitCommit: 8c7687860cdd4ef9227c249ca4587984e2636a55 22 | Directory: 6 23 | # Docker EOL: 2017-08-22 24 | -------------------------------------------------------------------------------- /library/ghost: -------------------------------------------------------------------------------- 1 | # this file is generated via https://github.com/docker-library/ghost/blob/8652c806a1af1beef0f9c4ec146262e50f6a4875/generate-stackbrew-library.sh 2 | 3 | Maintainers: Tianon Gravi (@tianon), 4 | Joseph Ferguson (@yosifkit) 5 | GitRepo: https://github.com/docker-library/ghost.git 6 | 7 | Tags: 0.11.3, 0.11, 0, latest 8 | GitCommit: 3aae08aeeb4d14d681a36742a5ab5e46366a5fe1 9 | -------------------------------------------------------------------------------- /library/haproxy: -------------------------------------------------------------------------------- 1 | # this file is generated via https://github.com/docker-library/haproxy/blob/6c318716176795fcd2784b9996bae18a4fbd34e6/generate-stackbrew-library.sh 2 | 3 | Maintainers: Tianon Gravi (@tianon), 4 | Joseph Ferguson (@yosifkit) 5 | GitRepo: https://github.com/docker-library/haproxy.git 6 | 7 | Tags: 1.4.27, 1.4 8 | GitCommit: a11db1597f9be5365028673df4d05b2ea854b3ed 9 | Directory: 1.4 10 | 11 | Tags: 1.4.27-alpine, 1.4-alpine 12 | GitCommit: 667427cf0ac38b7ff7d9fcbd29493b54adf9d53d 13 | Directory: 1.4/alpine 14 | 15 | Tags: 1.5.18, 1.5 16 | GitCommit: e128fc85947f0de7213185c9f948150e39cbc766 17 | Directory: 1.5 18 | 19 | Tags: 1.5.18-alpine, 1.5-alpine 20 | GitCommit: 667427cf0ac38b7ff7d9fcbd29493b54adf9d53d 21 | Directory: 1.5/alpine 22 | 23 | Tags: 1.6.10, 1.6 24 | GitCommit: 3f825ac60d7af1739f65897f64241c5577dfc31e 25 | Directory: 1.6 26 | 27 | Tags: 1.6.10-alpine, 1.6-alpine 28 | GitCommit: 3f825ac60d7af1739f65897f64241c5577dfc31e 29 | Directory: 1.6/alpine 30 | 31 | Tags: 1.7.1, 1.7, 1, latest 32 | GitCommit: 84fa05e8980f556b0330d69f5c756633a5a85f8b 33 | Directory: 1.7 34 | 35 | Tags: 1.7.1-alpine, 1.7-alpine, 1-alpine, alpine 36 | GitCommit: 84fa05e8980f556b0330d69f5c756633a5a85f8b 37 | Directory: 1.7/alpine 38 | -------------------------------------------------------------------------------- /library/haskell: -------------------------------------------------------------------------------- 1 | # maintainer: Darin Morrison (@darinmorrison) 2 | # maintainer: Peter Salvatore (@psftw) 3 | # maintainer: Christopher Biscardi (@chrisbiscardi) 4 | 5 | 8.0.1: git://github.com/freebroccolo/docker-haskell@e0efde5504642864811a7697ab945067bb6a042e 8.0 6 | 8.0: git://github.com/freebroccolo/docker-haskell@e0efde5504642864811a7697ab945067bb6a042e 8.0 7 | 8: git://github.com/freebroccolo/docker-haskell@e0efde5504642864811a7697ab945067bb6a042e 8.0 8 | latest: git://github.com/freebroccolo/docker-haskell@e0efde5504642864811a7697ab945067bb6a042e 8.0 9 | -------------------------------------------------------------------------------- /library/hello-seattle: -------------------------------------------------------------------------------- 1 | # this file is generated via https://github.com/docker-library/hello-world/blob/7c185cc7371ef9404ef952b9c0d7f2ccdd5cbd92/generate-stackbrew-library.sh 2 | 3 | Maintainers: Tianon Gravi (@tianon), 4 | Joseph Ferguson (@yosifkit) 5 | GitRepo: https://github.com/docker-library/hello-world.git 6 | 7 | Tags: latest 8 | GitCommit: 85fd7ab65e079b08019032479a3f306964a28f4d 9 | Directory: hello-seattle 10 | 11 | Tags: nanoserver 12 | GitCommit: 0f30176f82bc9984e7a75f96205f86dc3758e2e8 13 | Directory: hello-seattle/nanoserver 14 | Constraints: nanoserver 15 | -------------------------------------------------------------------------------- /library/hello-world: -------------------------------------------------------------------------------- 1 | # this file is generated via https://github.com/docker-library/hello-world/blob/7c185cc7371ef9404ef952b9c0d7f2ccdd5cbd92/generate-stackbrew-library.sh 2 | 3 | Maintainers: Tianon Gravi (@tianon), 4 | Joseph Ferguson (@yosifkit) 5 | GitRepo: https://github.com/docker-library/hello-world.git 6 | 7 | Tags: latest 8 | GitCommit: 85fd7ab65e079b08019032479a3f306964a28f4d 9 | Directory: hello-world 10 | 11 | Tags: nanoserver 12 | GitCommit: 0f30176f82bc9984e7a75f96205f86dc3758e2e8 13 | Directory: hello-world/nanoserver 14 | Constraints: nanoserver 15 | -------------------------------------------------------------------------------- /library/hola-mundo: -------------------------------------------------------------------------------- 1 | # this file is generated via https://github.com/docker-library/hello-world/blob/7c185cc7371ef9404ef952b9c0d7f2ccdd5cbd92/generate-stackbrew-library.sh 2 | 3 | Maintainers: Tianon Gravi (@tianon), 4 | Joseph Ferguson (@yosifkit) 5 | GitRepo: https://github.com/docker-library/hello-world.git 6 | 7 | Tags: latest 8 | GitCommit: 85fd7ab65e079b08019032479a3f306964a28f4d 9 | Directory: hola-mundo 10 | 11 | Tags: nanoserver 12 | GitCommit: 0f30176f82bc9984e7a75f96205f86dc3758e2e8 13 | Directory: hola-mundo/nanoserver 14 | Constraints: nanoserver 15 | -------------------------------------------------------------------------------- /library/httpd: -------------------------------------------------------------------------------- 1 | # this file is generated via https://github.com/docker-library/httpd/blob/12bf8c8883340c98b3988a7bade8ef2d0d6dcf8a/generate-stackbrew-library.sh 2 | 3 | Maintainers: Tianon Gravi (@tianon), 4 | Joseph Ferguson (@yosifkit) 5 | GitRepo: https://github.com/docker-library/httpd.git 6 | 7 | Tags: 2.2.31, 2.2 8 | GitCommit: fa5223d83a5225aa3fd5b23229b785c7764142bf 9 | Directory: 2.2 10 | 11 | Tags: 2.2.31-alpine, 2.2-alpine 12 | GitCommit: fa5223d83a5225aa3fd5b23229b785c7764142bf 13 | Directory: 2.2/alpine 14 | 15 | Tags: 2.4.23, 2.4, 2, latest 16 | GitCommit: abcf2cd7064bd5b29347eb4b42c1530fb41f757f 17 | Directory: 2.4 18 | 19 | Tags: 2.4.23-alpine, 2.4-alpine, 2-alpine, alpine 20 | GitCommit: fa5223d83a5225aa3fd5b23229b785c7764142bf 21 | Directory: 2.4/alpine 22 | -------------------------------------------------------------------------------- /library/hylang: -------------------------------------------------------------------------------- 1 | Maintainers: Paul Tagliamonte (@paultag) 2 | 3 | # https://github.com/hylang/hy/tree/0.11.1 4 | Tags: 0.11.1, 0.11, 0, latest 5 | GitRepo: https://github.com/hylang/hy.git 6 | GitFetch: refs/tags/0.11.1 7 | GitCommit: 54b13955d1f98f8a7d835a4ed8f452bb9f1135bc 8 | -------------------------------------------------------------------------------- /library/ibmjava: -------------------------------------------------------------------------------- 1 | # maintainer: Dinakar Guniguntala (@dinogun) 2 | 3 | 8-jre: git://github.com/ibmruntimes/ci.docker@7c274b6fa570afae15d0ce900ea8a22f2d5365b4 ibmjava/8-jre/x86_64/ubuntu 4 | jre: git://github.com/ibmruntimes/ci.docker@7c274b6fa570afae15d0ce900ea8a22f2d5365b4 ibmjava/8-jre/x86_64/ubuntu 5 | 8: git://github.com/ibmruntimes/ci.docker@7c274b6fa570afae15d0ce900ea8a22f2d5365b4 ibmjava/8-jre/x86_64/ubuntu 6 | latest: git://github.com/ibmruntimes/ci.docker@7c274b6fa570afae15d0ce900ea8a22f2d5365b4 ibmjava/8-jre/x86_64/ubuntu 7 | 8-jre-alpine: git://github.com/ibmruntimes/ci.docker@7c274b6fa570afae15d0ce900ea8a22f2d5365b4 ibmjava/8-jre/x86_64/alpine 8 | jre-alpine: git://github.com/ibmruntimes/ci.docker@7c274b6fa570afae15d0ce900ea8a22f2d5365b4 ibmjava/8-jre/x86_64/alpine 9 | 8-sfj: git://github.com/ibmruntimes/ci.docker@7c274b6fa570afae15d0ce900ea8a22f2d5365b4 ibmjava/8-sfj/x86_64/ubuntu 10 | sfj: git://github.com/ibmruntimes/ci.docker@7c274b6fa570afae15d0ce900ea8a22f2d5365b4 ibmjava/8-sfj/x86_64/ubuntu 11 | 8-sfj-alpine: git://github.com/ibmruntimes/ci.docker@7c274b6fa570afae15d0ce900ea8a22f2d5365b4 ibmjava/8-sfj/x86_64/alpine 12 | sfj-alpine: git://github.com/ibmruntimes/ci.docker@7c274b6fa570afae15d0ce900ea8a22f2d5365b4 ibmjava/8-sfj/x86_64/alpine 13 | 8-sdk: git://github.com/ibmruntimes/ci.docker@7c274b6fa570afae15d0ce900ea8a22f2d5365b4 ibmjava/8-sdk/x86_64/ubuntu 14 | sdk: git://github.com/ibmruntimes/ci.docker@7c274b6fa570afae15d0ce900ea8a22f2d5365b4 ibmjava/8-sdk/x86_64/ubuntu 15 | -------------------------------------------------------------------------------- /library/influxdb: -------------------------------------------------------------------------------- 1 | Maintainers: Jonathan A. Sternberg (@jsternberg) 2 | 3 | Tags: 1.0, 1.0.2 4 | GitRepo: git://github.com/influxdata/influxdata-docker 5 | GitCommit: 21becafddfa32acce5bdcfd44d29709dd89f3d23 6 | Directory: influxdb/1.0 7 | 8 | Tags: 1.0-alpine, 1.0.2-alpine 9 | GitRepo: git://github.com/influxdata/influxdata-docker 10 | GitCommit: 21becafddfa32acce5bdcfd44d29709dd89f3d23 11 | Directory: influxdb/1.0/alpine 12 | 13 | Tags: 1.1, 1.1.1, latest 14 | GitRepo: git://github.com/influxdata/influxdata-docker 15 | GitCommit: fccddeace2827eb50d09bbd2a722d25fb707369f 16 | Directory: influxdb/1.1 17 | 18 | Tags: 1.1-alpine, 1.1.1-alpine, alpine 19 | GitRepo: git://github.com/influxdata/influxdata-docker 20 | GitCommit: fccddeace2827eb50d09bbd2a722d25fb707369f 21 | Directory: influxdb/1.1/alpine 22 | -------------------------------------------------------------------------------- /library/irssi: -------------------------------------------------------------------------------- 1 | # maintainer: Jessie Frazelle (@jessfraz) 2 | # maintainer: Tianon Gravi (@tianon) 3 | 4 | 0.8.20: git://github.com/jessfraz/irssi@af1a8245096671eed463d0108c0e786349c31710 debian 5 | 0.8: git://github.com/jessfraz/irssi@af1a8245096671eed463d0108c0e786349c31710 debian 6 | 0: git://github.com/jessfraz/irssi@af1a8245096671eed463d0108c0e786349c31710 debian 7 | latest: git://github.com/jessfraz/irssi@af1a8245096671eed463d0108c0e786349c31710 debian 8 | 0.8.20-debian: git://github.com/jessfraz/irssi@af1a8245096671eed463d0108c0e786349c31710 debian 9 | 0.8-debian: git://github.com/jessfraz/irssi@af1a8245096671eed463d0108c0e786349c31710 debian 10 | 0-debian: git://github.com/jessfraz/irssi@af1a8245096671eed463d0108c0e786349c31710 debian 11 | debian: git://github.com/jessfraz/irssi@af1a8245096671eed463d0108c0e786349c31710 debian 12 | 13 | 0.8.20-alpine: git://github.com/jessfraz/irssi@af1a8245096671eed463d0108c0e786349c31710 alpine 14 | 0.8-alpine: git://github.com/jessfraz/irssi@af1a8245096671eed463d0108c0e786349c31710 alpine 15 | 0-alpine: git://github.com/jessfraz/irssi@af1a8245096671eed463d0108c0e786349c31710 alpine 16 | alpine: git://github.com/jessfraz/irssi@af1a8245096671eed463d0108c0e786349c31710 alpine 17 | -------------------------------------------------------------------------------- /library/jenkins: -------------------------------------------------------------------------------- 1 | # maintainer: Nicolas De Loof (@ndeloof) 2 | # maintainer: Michael Neale (@michaelneale) 3 | # maintainer: Carlos Sanchez (@carlossg) 4 | 5 | latest: git://github.com/jenkinsci/jenkins-ci.org-docker@79e871d7ea9085cabb287dd53705b4432e36cf6f 6 | 2.19.4: git://github.com/jenkinsci/jenkins-ci.org-docker@79e871d7ea9085cabb287dd53705b4432e36cf6f 7 | 8 | alpine: git://github.com/jenkinsci/jenkins-ci.org-docker@41839c39bfcc00d8cbfcca607fdbb69cbfc58d5b 9 | 2.19.4-alpine: git://github.com/jenkinsci/jenkins-ci.org-docker@41839c39bfcc00d8cbfcca607fdbb69cbfc58d5b 10 | -------------------------------------------------------------------------------- /library/jetty: -------------------------------------------------------------------------------- 1 | Maintainers: Mike Dillon (@md5), 2 | Greg Wilkins (@gregw) 3 | GitRepo: https://github.com/appropriate/docker-jetty.git 4 | 5 | Tags: 9.3.12, 9.3, 9, 9.3.12-jre8, 9.3-jre8, 9-jre8, latest, jre8 6 | Directory: 9.3-jre8 7 | GitCommit: 09617a1ddc50bb080df9fa94ec5d636015449dbd 8 | 9 | Tags: 9.3.12-alpine, 9.3-alpine, 9-alpine, 9.3.12-jre8-alpine, 9.3-jre8-alpine, 9-jre8-alpine, alpine, jre8-alpine 10 | Directory: 9.3-jre8/alpine 11 | GitCommit: 09617a1ddc50bb080df9fa94ec5d636015449dbd 12 | 13 | Tags: 9.2.19, 9.2, 9.2.19-jre8, 9.2-jre8 14 | Directory: 9.2-jre8 15 | GitCommit: 422148d13cca3dfe4f4e6299185f7434725f9bd7 16 | 17 | Tags: 9.2.19-jre7, 9.2-jre7, 9-jre7, jre7 18 | Directory: 9.2-jre7 19 | GitCommit: 422148d13cca3dfe4f4e6299185f7434725f9bd7 20 | -------------------------------------------------------------------------------- /library/joomla: -------------------------------------------------------------------------------- 1 | # this file is generated via https://github.com/joomla/docker-joomla/blob/b365e4a9d8c017e1bdcd666d309a69eaea07dfeb/generate-stackbrew-library.sh 2 | 3 | Maintainers: Michael Babker (@mbabker) 4 | GitRepo: https://github.com/joomla/docker-joomla.git 5 | 6 | Tags: 3.6.4-apache, 3.6-apache, 3-apache, apache, 3.6.4, 3.6, 3, latest 7 | GitCommit: 332fe7ec8dc6c427452a6283d2cd8ede4b160c76 8 | Directory: apache 9 | 10 | Tags: 3.6.4-apache-php7, 3.6-apache-php7, 3-apache-php7, apache-php7 11 | GitCommit: 332fe7ec8dc6c427452a6283d2cd8ede4b160c76 12 | Directory: apache-php7 13 | 14 | Tags: 3.6.4-fpm, 3.6-fpm, 3-fpm, fpm 15 | GitCommit: 332fe7ec8dc6c427452a6283d2cd8ede4b160c76 16 | Directory: fpm 17 | 18 | Tags: 3.6.4-fpm-php7, 3.6-fpm-php7, 3-fpm-php7, fpm-php7 19 | GitCommit: 332fe7ec8dc6c427452a6283d2cd8ede4b160c76 20 | Directory: fpm-php7 21 | -------------------------------------------------------------------------------- /library/julia: -------------------------------------------------------------------------------- 1 | # this file is generated via https://github.com/docker-library/julia/blob/7cdd4477e389248fd42f9bf6a5d34324be1fbdc4/generate-stackbrew-library.sh 2 | 3 | Maintainers: Tianon Gravi (@tianon), 4 | Joseph Ferguson (@yosifkit) 5 | GitRepo: https://github.com/docker-library/julia.git 6 | 7 | Tags: 0.5.0, 0.5, 0, latest 8 | GitCommit: 0f29b23863e4ff1c99b13a30e845b66c7468f79b 9 | -------------------------------------------------------------------------------- /library/kaazing-gateway: -------------------------------------------------------------------------------- 1 | # maintainer: Kaazing Docker Maintainers 2 | 3 | latest: git://github.com/kaazing/gateway.docker@3aa0b519bbe7c9dcea139a6919fb41aa45f00c7b 4 | 5.2.5: git://github.com/kaazing/gateway.docker@3aa0b519bbe7c9dcea139a6919fb41aa45f00c7b 5 | -------------------------------------------------------------------------------- /library/kapacitor: -------------------------------------------------------------------------------- 1 | Maintainers: Jonathan A. Sternberg (@jsternberg) 2 | 3 | Tags: 1.0, 1.0.2 4 | GitRepo: git://github.com/influxdata/influxdata-docker 5 | GitCommit: dec27fb32f5d9696cd0627f3ac97d353f7557b31 6 | Directory: kapacitor/1.0 7 | 8 | Tags: 1.0-alpine, 1.0.2-alpine 9 | GitRepo: git://github.com/influxdata/influxdata-docker 10 | GitCommit: dec27fb32f5d9696cd0627f3ac97d353f7557b31 11 | Directory: kapacitor/1.0/alpine 12 | 13 | Tags: 1.1, 1.1.1, latest 14 | GitRepo: git://github.com/influxdata/influxdata-docker 15 | GitCommit: 9cb739374cf02d3b88ed1cfbaea98638a7a37850 16 | Directory: kapacitor/1.1 17 | 18 | Tags: 1.1-alpine, 1.1.1-alpine, alpine 19 | GitRepo: git://github.com/influxdata/influxdata-docker 20 | GitCommit: 9cb739374cf02d3b88ed1cfbaea98638a7a37850 21 | Directory: kapacitor/1.1/alpine 22 | -------------------------------------------------------------------------------- /library/kibana: -------------------------------------------------------------------------------- 1 | # this file is generated via https://github.com/docker-library/kibana/blob/03f657e02f2fc3f3487dfe98cc98f9870eaaa5c4/generate-stackbrew-library.sh 2 | 3 | Maintainers: Tianon Gravi (@tianon), 4 | Joseph Ferguson (@yosifkit) 5 | GitRepo: https://github.com/docker-library/kibana.git 6 | 7 | Tags: 5.1.1, 5.1, 5, latest 8 | GitCommit: 03f657e02f2fc3f3487dfe98cc98f9870eaaa5c4 9 | Directory: 5 10 | 11 | Tags: 4.6.3, 4.6, 4 12 | GitCommit: 43644e6ae40c53c05d94165506094035f0463ea6 13 | Directory: 4.6 14 | 15 | Tags: 4.1.11, 4.1 16 | GitCommit: 7ce21f8aa1e58443c3031fdbdf83a08ce34e49a4 17 | Directory: 4.1 18 | -------------------------------------------------------------------------------- /library/known: -------------------------------------------------------------------------------- 1 | # maintainer: hello@withknown.com 2 | 3 | 0.9.2: git://github.com/idno/Known-Docker@986a2618080f32bbbcb9af3c8e7c15297d9658ea 4 | 0.9: git://github.com/idno/Known-Docker@986a2618080f32bbbcb9af3c8e7c15297d9658ea 5 | 0: git://github.com/idno/Known-Docker@986a2618080f32bbbcb9af3c8e7c15297d9658ea 6 | latest: git://github.com/idno/Known-Docker@986a2618080f32bbbcb9af3c8e7c15297d9658ea 7 | -------------------------------------------------------------------------------- /library/kong: -------------------------------------------------------------------------------- 1 | Maintainers: Mashape Docker Maintainers (@mashape) 2 | GitRepo: https://github.com/Mashape/docker-kong.git 3 | # needs "Constraints" to match "centos" (which this image is "FROM") 4 | Constraints: !aufs 5 | 6 | Tags: 0.9, 0.9.5, latest 7 | GitCommit: a4c4792273d9c0d00e83701bcd43f7ba36c391b2 8 | -------------------------------------------------------------------------------- /library/lightstreamer: -------------------------------------------------------------------------------- 1 | # maintainer: Lightstreamer Server Development Team (@lightstreamer) 2 | 3 | 6.0.3: git://github.com/Lightstreamer/Docker@784b417d4415e12f1bb1b15f7f697273de3a7ded 6.0 4 | 6.0: git://github.com/Lightstreamer/Docker@784b417d4415e12f1bb1b15f7f697273de3a7ded 6.0 5 | 6: git://github.com/Lightstreamer/Docker@784b417d4415e12f1bb1b15f7f697273de3a7ded 6.0 6 | latest: git://github.com/Lightstreamer/Docker@784b417d4415e12f1bb1b15f7f697273de3a7ded 6.0 7 | -------------------------------------------------------------------------------- /library/logstash: -------------------------------------------------------------------------------- 1 | # this file is generated via https://github.com/docker-library/logstash/blob/aa556fc3ae9d6cadc26390d8c57bc94710122b7d/generate-stackbrew-library.sh 2 | 3 | Maintainers: Tianon Gravi (@tianon), 4 | Joseph Ferguson (@yosifkit) 5 | GitRepo: https://github.com/docker-library/logstash.git 6 | 7 | Tags: 5.1.1, 5.1, 5, latest 8 | GitCommit: aa556fc3ae9d6cadc26390d8c57bc94710122b7d 9 | Directory: 5 10 | 11 | Tags: 5.1.1-alpine, 5.1-alpine, 5-alpine, alpine 12 | GitCommit: aa556fc3ae9d6cadc26390d8c57bc94710122b7d 13 | Directory: 5/alpine 14 | 15 | Tags: 2.4.1, 2.4, 2 16 | GitCommit: 93d338f878f4adb1e4e8fa31407d9b4263c41932 17 | Directory: 2.4 18 | 19 | Tags: 2.4.1-alpine, 2.4-alpine, 2-alpine 20 | GitCommit: 93d338f878f4adb1e4e8fa31407d9b4263c41932 21 | Directory: 2.4/alpine 22 | 23 | Tags: 1.5.6, 1.5, 1 24 | GitCommit: 93d338f878f4adb1e4e8fa31407d9b4263c41932 25 | Directory: 1.5 26 | 27 | Tags: 1.5.6-alpine, 1.5-alpine, 1-alpine 28 | GitCommit: 93d338f878f4adb1e4e8fa31407d9b4263c41932 29 | Directory: 1.5/alpine 30 | -------------------------------------------------------------------------------- /library/mageia: -------------------------------------------------------------------------------- 1 | # maintainer: Juan Luis Baptiste (@juanluisbaptiste) 2 | 3 | latest: git://github.com/juanluisbaptiste/docker-brew-mageia@85a4253a175cde455b9926b4a83fb8d5ceea096f 5 4 | 5: git://github.com/juanluisbaptiste/docker-brew-mageia@85a4253a175cde455b9926b4a83fb8d5ceea096f 5 5 | -------------------------------------------------------------------------------- /library/mariadb: -------------------------------------------------------------------------------- 1 | # this file is generated via https://github.com/docker-library/mariadb/blob/a09ad0056e1b95de7d448187770f6264d9e25fe2/generate-stackbrew-library.sh 2 | 3 | Maintainers: Tianon Gravi (@tianon), 4 | Joseph Ferguson (@yosifkit) 5 | GitRepo: https://github.com/docker-library/mariadb.git 6 | 7 | Tags: 10.1.19, 10.1, 10, latest 8 | GitCommit: 2b065acb53b18eb44e1d78a1a41f0a46f829c291 9 | Directory: 10.1 10 | 11 | Tags: 10.0.28, 10.0 12 | GitCommit: 2b065acb53b18eb44e1d78a1a41f0a46f829c291 13 | Directory: 10.0 14 | 15 | Tags: 5.5.53, 5.5, 5 16 | GitCommit: 2b065acb53b18eb44e1d78a1a41f0a46f829c291 17 | Directory: 5.5 18 | -------------------------------------------------------------------------------- /library/memcached: -------------------------------------------------------------------------------- 1 | # this file is generated via https://github.com/docker-library/memcached/blob/f824f7200908afa68fe4b93a2455ab8872d4402c/generate-stackbrew-library.sh 2 | 3 | Maintainers: Tianon Gravi (@tianon), 4 | Joseph Ferguson (@yosifkit) 5 | GitRepo: https://github.com/docker-library/memcached.git 6 | 7 | Tags: 1.4.33, 1.4, 1, latest 8 | GitCommit: 137391b8166fd61c12bc54098350181d7da378f0 9 | Directory: debian 10 | 11 | Tags: 1.4.33-alpine, 1.4-alpine, 1-alpine, alpine 12 | GitCommit: 137391b8166fd61c12bc54098350181d7da378f0 13 | Directory: alpine 14 | -------------------------------------------------------------------------------- /library/mongo: -------------------------------------------------------------------------------- 1 | # this file is generated via https://github.com/docker-library/mongo/blob/5f4bcf4bec163ef05b4fc67d5c92762989dbde06/generate-stackbrew-library.sh 2 | 3 | Maintainers: Tianon Gravi (@tianon), 4 | Joseph Ferguson (@yosifkit) 5 | GitRepo: https://github.com/docker-library/mongo.git 6 | 7 | Tags: 3.0.14, 3.0 8 | GitCommit: b37a4891feffeafb77febd2833d96b59cf28d6a8 9 | Directory: 3.0 10 | 11 | Tags: 3.0.14-windowsservercore, 3.0-windowsservercore 12 | GitCommit: a51b641c84e1a8d543b6a234a090f8263188139a 13 | Directory: 3.0/windows/windowsservercore 14 | Constraints: windowsservercore 15 | 16 | Tags: 3.2.11, 3.2 17 | GitCommit: 21a6f6cf3eff13a39b20c86224730a29823370ca 18 | Directory: 3.2 19 | 20 | Tags: 3.2.11-windowsservercore, 3.2-windowsservercore 21 | GitCommit: 21a6f6cf3eff13a39b20c86224730a29823370ca 22 | Directory: 3.2/windows/windowsservercore 23 | Constraints: windowsservercore 24 | 25 | Tags: 3.4.0, 3.4, 3, latest 26 | GitCommit: 5f4bcf4bec163ef05b4fc67d5c92762989dbde06 27 | Directory: 3.4 28 | 29 | Tags: 3.4.0-windowsservercore, 3.4-windowsservercore, 3-windowsservercore, windowsservercore 30 | GitCommit: 5f4bcf4bec163ef05b4fc67d5c92762989dbde06 31 | Directory: 3.4/windows/windowsservercore 32 | Constraints: windowsservercore 33 | -------------------------------------------------------------------------------- /library/mongo-express: -------------------------------------------------------------------------------- 1 | # maintainer: Nick Cox (@knickers) 2 | 3 | 0.32.0: git://github.com/mongo-express/mongo-express-docker@b080000a8c03ef81455fa6aca8c0c8d1a35ef365 4 | 0.32: git://github.com/mongo-express/mongo-express-docker@b080000a8c03ef81455fa6aca8c0c8d1a35ef365 5 | latest: git://github.com/mongo-express/mongo-express-docker@b080000a8c03ef81455fa6aca8c0c8d1a35ef365 6 | -------------------------------------------------------------------------------- /library/mysql: -------------------------------------------------------------------------------- 1 | # this file is generated via https://github.com/docker-library/mysql/blob/00fe6e767ad74cfcc0d2ea16b84e37e8f8c33146/generate-stackbrew-library.sh 2 | 3 | Maintainers: Tianon Gravi (@tianon), 4 | Joseph Ferguson (@yosifkit) 5 | GitRepo: https://github.com/docker-library/mysql.git 6 | 7 | Tags: 8.0.0, 8.0, 8 8 | GitCommit: 4dd33136c4739667a223d39b6f829beb27b235cf 9 | Directory: 8.0 10 | 11 | Tags: 5.7.17, 5.7, 5, latest 12 | GitCommit: c207cc19a272a6bfe1916c964ed8df47f18479e7 13 | Directory: 5.7 14 | 15 | Tags: 5.6.35, 5.6 16 | GitCommit: fd3bdabe513643b62fc379f365b2b5dd10886311 17 | Directory: 5.6 18 | 19 | Tags: 5.5.54, 5.5 20 | GitCommit: ee989d0666458d08dd79c55f7abb62be29a9cb3d 21 | Directory: 5.5 22 | -------------------------------------------------------------------------------- /library/nats: -------------------------------------------------------------------------------- 1 | Maintainers: Derek Collison (@derekcollison), 2 | Ivan Kozlovic (@kozlovic), 3 | Waldemar Salinas (@wallyqs) 4 | 5 | Tags: 0.9.4, latest 6 | GitRepo: https://github.com/nats-io/nats-docker.git 7 | GitCommit: d37917c2830bfe3b54de8d92ac36b62cc1309cfc 8 | 9 | -------------------------------------------------------------------------------- /library/nats-streaming: -------------------------------------------------------------------------------- 1 | Maintainers: Ivan Kozlovic (@kozlovic) 2 | 3 | Tags: 0.3.4, latest 4 | GitRepo: https://github.com/nats-io/nats-streaming-docker.git 5 | GitCommit: 5ba3680f2232ea7ef652aaaab8992e891894e7d3 6 | 7 | -------------------------------------------------------------------------------- /library/neurodebian: -------------------------------------------------------------------------------- 1 | # maintainer: Yaroslav Halchenko (@yarikoptic) 2 | 3 | precise: git://github.com/neurodebian/dockerfiles@336c4d3566c3c8311960c001e6032dab6d59c3b3 dockerfiles/precise 4 | nd12.04: git://github.com/neurodebian/dockerfiles@336c4d3566c3c8311960c001e6032dab6d59c3b3 dockerfiles/precise 5 | 6 | trusty: git://github.com/neurodebian/dockerfiles@336c4d3566c3c8311960c001e6032dab6d59c3b3 dockerfiles/trusty 7 | nd14.04: git://github.com/neurodebian/dockerfiles@336c4d3566c3c8311960c001e6032dab6d59c3b3 dockerfiles/trusty 8 | 9 | xenial: git://github.com/neurodebian/dockerfiles@336c4d3566c3c8311960c001e6032dab6d59c3b3 dockerfiles/xenial 10 | nd16.04: git://github.com/neurodebian/dockerfiles@336c4d3566c3c8311960c001e6032dab6d59c3b3 dockerfiles/xenial 11 | 12 | yakkety: git://github.com/neurodebian/dockerfiles@336c4d3566c3c8311960c001e6032dab6d59c3b3 dockerfiles/yakkety 13 | nd16.10: git://github.com/neurodebian/dockerfiles@336c4d3566c3c8311960c001e6032dab6d59c3b3 dockerfiles/yakkety 14 | 15 | wheezy: git://github.com/neurodebian/dockerfiles@336c4d3566c3c8311960c001e6032dab6d59c3b3 dockerfiles/wheezy 16 | nd70: git://github.com/neurodebian/dockerfiles@336c4d3566c3c8311960c001e6032dab6d59c3b3 dockerfiles/wheezy 17 | 18 | jessie: git://github.com/neurodebian/dockerfiles@336c4d3566c3c8311960c001e6032dab6d59c3b3 dockerfiles/jessie 19 | nd80: git://github.com/neurodebian/dockerfiles@336c4d3566c3c8311960c001e6032dab6d59c3b3 dockerfiles/jessie 20 | 21 | stretch: git://github.com/neurodebian/dockerfiles@336c4d3566c3c8311960c001e6032dab6d59c3b3 dockerfiles/stretch 22 | nd90: git://github.com/neurodebian/dockerfiles@336c4d3566c3c8311960c001e6032dab6d59c3b3 dockerfiles/stretch 23 | 24 | sid: git://github.com/neurodebian/dockerfiles@336c4d3566c3c8311960c001e6032dab6d59c3b3 dockerfiles/sid 25 | nd: git://github.com/neurodebian/dockerfiles@336c4d3566c3c8311960c001e6032dab6d59c3b3 dockerfiles/sid 26 | -------------------------------------------------------------------------------- /library/nginx: -------------------------------------------------------------------------------- 1 | # this file is generated via https://github.com/nginxinc/docker-nginx/blob/933bd40ea71c32072826194272bb77bd35e9a04c/generate-stackbrew-library.sh 2 | 3 | Maintainers: NGINX Docker Maintainers (@nginxinc) 4 | GitRepo: https://github.com/nginxinc/docker-nginx.git 5 | 6 | Tags: 1.11.6, mainline, 1, 1.11, latest 7 | GitCommit: de8822d8d91ff0802989bc0a12f8ab55596a513c 8 | Directory: mainline/jessie 9 | 10 | Tags: 1.11.6-alpine, mainline-alpine, 1-alpine, 1.11-alpine, alpine 11 | GitCommit: de8822d8d91ff0802989bc0a12f8ab55596a513c 12 | Directory: mainline/alpine 13 | 14 | Tags: 1.10.2, stable, 1.10 15 | GitCommit: 25a3fc7343c6916fce1fba32caa1e8de8409d79f 16 | Directory: stable/jessie 17 | 18 | Tags: 1.10.2-alpine, stable-alpine, 1.10-alpine 19 | GitCommit: 25a3fc7343c6916fce1fba32caa1e8de8409d79f 20 | Directory: stable/alpine 21 | -------------------------------------------------------------------------------- /library/notary: -------------------------------------------------------------------------------- 1 | # maintainer: David Lawrence (@endophage) 2 | 3 | server: git://github.com/docker/notary-official-images@v0.5.0 notary-server 4 | server-0.5.0: git://github.com/docker/notary-official-images@v0.5.0 notary-server 5 | signer: git://github.com/docker/notary-official-images@v0.5.0 notary-signer 6 | signer-0.5.0: git://github.com/docker/notary-official-images@v0.5.0 notary-signer 7 | server-0.4.2: git://github.com/docker/notary-official-images@v0.4.2 notary-server 8 | signer-0.4.2: git://github.com/docker/notary-official-images@v0.4.2 notary-signer 9 | server-0.3.0: git://github.com/docker/notary-official-images@5fbf22ada9e5167fe4e9340ac947e8b3110aceba notary-server 10 | signer-0.3.0: git://github.com/docker/notary-official-images@5fbf22ada9e5167fe4e9340ac947e8b3110aceba notary-signer 11 | server-0.2.0: git://github.com/docker/notary-official-images@3ea5b74928929415f2faaa5df574c4745bf6d286 notary-server 12 | signer-0.2.0: git://github.com/docker/notary-official-images@3ea5b74928929415f2faaa5df574c4745bf6d286 notary-signer 13 | -------------------------------------------------------------------------------- /library/nuxeo: -------------------------------------------------------------------------------- 1 | Maintainers: Damien Metzler (@dmetzler), 2 | Arnaud Kervern (@arnaudke) 3 | 4 | Tags: latest, LTS, LTS-2016, 8, 8.10, FT 5 | GitRepo: https://github.com/nuxeo/docker-nuxeo.git 6 | GitCommit: 4c45ac6f74a5571dd23ee86a00fb85aadbece05c 7 | Directory: 8.10 8 | 9 | Tags: 8.3 10 | GitRepo: https://github.com/nuxeo/docker-nuxeo.git 11 | GitCommit: a02183111045dadb357e68e11e93c5551c570c43 12 | Directory: 8.3 13 | 14 | Tags: 8.2 15 | GitRepo: https://github.com/nuxeo/docker-nuxeo.git 16 | GitCommit: a02183111045dadb357e68e11e93c5551c570c43 17 | Directory: 8.2 18 | 19 | Tags: LTS-2015, 7, 7.10 20 | GitRepo: https://github.com/nuxeo/docker-nuxeo.git 21 | GitCommit: a02183111045dadb357e68e11e93c5551c570c43 22 | Directory: 7.10 23 | 24 | Tags: LTS-2014, 6, 6.0 25 | GitRepo: https://github.com/nuxeo/docker-nuxeo.git 26 | GitCommit: 8535464e476b39e10001242ad7c885519fadc2a6 27 | Directory: 6.0 28 | -------------------------------------------------------------------------------- /library/odoo: -------------------------------------------------------------------------------- 1 | # maintainer: Aaron Bohy (@aab-odoo) 2 | 3 | 8.0: git://github.com/odoo/docker@d780e6fe363a65856dc1a36955fec6becdd2f41e 8.0 4 | 8: git://github.com/odoo/docker@d780e6fe363a65856dc1a36955fec6becdd2f41e 8.0 5 | 6 | 9.0: git://github.com/odoo/docker@d780e6fe363a65856dc1a36955fec6becdd2f41e 9.0 7 | 9: git://github.com/odoo/docker@d780e6fe363a65856dc1a36955fec6becdd2f41e 9.0 8 | 9 | 10.0: git://github.com/odoo/docker@d780e6fe363a65856dc1a36955fec6becdd2f41e 10.0 10 | 10: git://github.com/odoo/docker@d780e6fe363a65856dc1a36955fec6becdd2f41e 10.0 11 | latest: git://github.com/odoo/docker@d780e6fe363a65856dc1a36955fec6becdd2f41e 10.0 12 | -------------------------------------------------------------------------------- /library/openjdk: -------------------------------------------------------------------------------- 1 | # this file is generated via https://github.com/docker-library/openjdk/blob/43559ea288a48664a58cbeaac025a030fedde8c4/generate-stackbrew-library.sh 2 | 3 | Maintainers: Tianon Gravi (@tianon), 4 | Joseph Ferguson (@yosifkit) 5 | GitRepo: https://github.com/docker-library/openjdk.git 6 | 7 | Tags: 6b38-jdk, 6b38, 6-jdk, 6 8 | GitCommit: 89851f0abc3a83cfad5248102f379d6a0bd3951a 9 | Directory: 6-jdk 10 | 11 | Tags: 6b38-jre, 6-jre 12 | GitCommit: 89851f0abc3a83cfad5248102f379d6a0bd3951a 13 | Directory: 6-jre 14 | 15 | Tags: 7u111-jdk, 7u111, 7-jdk, 7 16 | GitCommit: 054cea7585e6c0e4e98d133378ea38061a2ae3ac 17 | Directory: 7-jdk 18 | 19 | Tags: 7u121-jdk-alpine, 7u121-alpine, 7-jdk-alpine, 7-alpine 20 | GitCommit: 5257acb51a1230a2dc46b1c349d674a725562f9d 21 | Directory: 7-jdk/alpine 22 | 23 | Tags: 7u111-jre, 7-jre 24 | GitCommit: 054cea7585e6c0e4e98d133378ea38061a2ae3ac 25 | Directory: 7-jre 26 | 27 | Tags: 7u121-jre-alpine, 7-jre-alpine 28 | GitCommit: 5257acb51a1230a2dc46b1c349d674a725562f9d 29 | Directory: 7-jre/alpine 30 | 31 | Tags: 8u111-jdk, 8u111, 8-jdk, 8, jdk, latest 32 | GitCommit: e6e9cf8b21516ba764189916d35be57486203c95 33 | Directory: 8-jdk 34 | 35 | Tags: 8u111-jdk-alpine, 8u111-alpine, 8-jdk-alpine, 8-alpine, jdk-alpine, alpine 36 | GitCommit: 9a0822673dffd3e5ba66f18a8547aa60faed6d08 37 | Directory: 8-jdk/alpine 38 | 39 | Tags: 8u111-jre, 8-jre, jre 40 | GitCommit: e6e9cf8b21516ba764189916d35be57486203c95 41 | Directory: 8-jre 42 | 43 | Tags: 8u111-jre-alpine, 8-jre-alpine, jre-alpine 44 | GitCommit: 9a0822673dffd3e5ba66f18a8547aa60faed6d08 45 | Directory: 8-jre/alpine 46 | 47 | Tags: 9-b148-jdk, 9-b148, 9-jdk, 9 48 | GitCommit: e1981fe71526d3c568cdad28fe7607a5d258fcd3 49 | Directory: 9-jdk 50 | 51 | Tags: 9-b148-jre, 9-jre 52 | GitCommit: e1981fe71526d3c568cdad28fe7607a5d258fcd3 53 | Directory: 9-jre 54 | -------------------------------------------------------------------------------- /library/opensuse: -------------------------------------------------------------------------------- 1 | Maintainers: Flavio Castelli (@flavio), 2 | Aleksa Sarai (@cyphar), 3 | Jordi Massaguer Pla (@jordimassaguerpla) 4 | GitRepo: https://github.com/openSUSE/docker-containers-build.git 5 | Directory: docker 6 | Constraints: !aufs 7 | 8 | Tags: 42.2, leap, latest 9 | GitFetch: refs/heads/openSUSE-42.2 10 | GitCommit: b61d3d4383a1b3553ffeb27a13d6c487e0684e1d 11 | 12 | Tags: 42.1 13 | GitFetch: refs/heads/openSUSE-42.1 14 | GitCommit: cd6bdb1aeb527499387c4153c58aa05e68bba428 15 | 16 | Tags: 13.2, harlequin 17 | GitFetch: refs/heads/openSUSE-13.2 18 | GitCommit: 1c1bf2b38c4757f5d1e8c4cdefb4fdc0104ea7cc 19 | 20 | Tags: tumbleweed 21 | GitFetch: refs/heads/openSUSE-Tumbleweed 22 | GitCommit: 512ffef9e22be7f5069352574053abd9836ca742 23 | -------------------------------------------------------------------------------- /library/oraclelinux: -------------------------------------------------------------------------------- 1 | # maintainer: Oracle Linux Product Team (@Djelibeybi) 2 | 3 | # Oracle Linux 7 4 | latest: git://github.com/oracle/docker-images.git@f84cba841527a9371d92c854c3b8c73125a76173 OracleLinux/7.3 5 | 7: git://github.com/oracle/docker-images.git@f84cba841527a9371d92c854c3b8c73125a76173 OracleLinux/7.3 6 | 7.3: git://github.com/oracle/docker-images.git@f84cba841527a9371d92c854c3b8c73125a76173 OracleLinux/7.3 7 | 7.2: git://github.com/oracle/docker-images.git@f84cba841527a9371d92c854c3b8c73125a76173 OracleLinux/7.2 8 | 7.1: git://github.com/oracle/docker-images.git@f84cba841527a9371d92c854c3b8c73125a76173 OracleLinux/7.1 9 | 7.0: git://github.com/oracle/docker-images.git@f84cba841527a9371d92c854c3b8c73125a76173 OracleLinux/7.0 10 | 11 | # Oracle Linux 6 12 | 6: git://github.com/oracle/docker-images.git@f84cba841527a9371d92c854c3b8c73125a76173 OracleLinux/6.8 13 | 6.8: git://github.com/oracle/docker-images.git@f84cba841527a9371d92c854c3b8c73125a76173 OracleLinux/6.8 14 | 6.7: git://github.com/oracle/docker-images.git@f84cba841527a9371d92c854c3b8c73125a76173 OracleLinux/6.7 15 | 6.6: git://github.com/oracle/docker-images.git@f84cba841527a9371d92c854c3b8c73125a76173 OracleLinux/6.6 16 | 17 | # Oracle Linux 5 18 | 5: git://github.com/oracle/docker-images.git@f84cba841527a9371d92c854c3b8c73125a76173 OracleLinux/5.11 19 | 5.11: git://github.com/oracle/docker-images.git@f84cba841527a9371d92c854c3b8c73125a76173 OracleLinux/5.11 20 | -------------------------------------------------------------------------------- /library/orientdb: -------------------------------------------------------------------------------- 1 | # maintainer: Roberto Franchini (@robfrank) 2 | 3 | 2.0.18: git://github.com/orientechnologies/orientdb-docker@a43637b03a105ceb1104cbf5e42e93e1ffed0944 2.0 4 | 5 | 2.1.25: git://github.com/orientechnologies/orientdb-docker@eb9c688528d4ce7d50eec34391a3cbb4fea88868 2.1 6 | 7 | 2.2.13: git://github.com/orientechnologies/orientdb-docker@eb9c688528d4ce7d50eec34391a3cbb4fea88868 2.2/x86_64/alpine 8 | 9 | latest: git://github.com/orientechnologies/orientdb-docker@eb9c688528d4ce7d50eec34391a3cbb4fea88868 2.2/x86_64/alpine 10 | -------------------------------------------------------------------------------- /library/owncloud: -------------------------------------------------------------------------------- 1 | # this file is generated via https://github.com/docker-library/owncloud/blob/37fb493d8bdd4e0d65285b0474d91bce5a8260b5/generate-stackbrew-library.sh 2 | 3 | Maintainers: Tianon Gravi (@tianon), 4 | Joseph Ferguson (@yosifkit) 5 | GitRepo: https://github.com/docker-library/owncloud.git 6 | 7 | Tags: 8.0.16-apache, 8.0-apache, 8.0.16, 8.0 8 | GitCommit: 2c9fddfe6a17a2c1d631dd7a6f1c7f87763f7d10 9 | Directory: 8.0/apache 10 | 11 | Tags: 8.0.16-fpm, 8.0-fpm 12 | GitCommit: 2c9fddfe6a17a2c1d631dd7a6f1c7f87763f7d10 13 | Directory: 8.0/fpm 14 | 15 | Tags: 8.1.11-apache, 8.1-apache, 8.1.11, 8.1 16 | GitCommit: 11331ee6c9af343e4b25efd62135742fe4a48259 17 | Directory: 8.1/apache 18 | 19 | Tags: 8.1.11-fpm, 8.1-fpm 20 | GitCommit: 11331ee6c9af343e4b25efd62135742fe4a48259 21 | Directory: 8.1/fpm 22 | 23 | Tags: 8.2.9-apache, 8.2-apache, 8-apache, 8.2.9, 8.2, 8 24 | GitCommit: ff9352a1c798b21f93fdca4b31165be91e879665 25 | Directory: 8.2/apache 26 | 27 | Tags: 8.2.9-fpm, 8.2-fpm, 8-fpm 28 | GitCommit: ff9352a1c798b21f93fdca4b31165be91e879665 29 | Directory: 8.2/fpm 30 | 31 | Tags: 9.0.6-apache, 9.0-apache, 9.0.6, 9.0 32 | GitCommit: 375db22095df9a8d5b27f9f656eff92fcfad3b2e 33 | Directory: 9.0/apache 34 | 35 | Tags: 9.0.6-fpm, 9.0-fpm 36 | GitCommit: 375db22095df9a8d5b27f9f656eff92fcfad3b2e 37 | Directory: 9.0/fpm 38 | 39 | Tags: 9.1.2-apache, 9.1-apache, 9-apache, apache, 9.1.2, 9.1, 9, latest 40 | GitCommit: 373a10dfe09623b32510f64912d2188c6395f64e 41 | Directory: 9.1/apache 42 | 43 | Tags: 9.1.2-fpm, 9.1-fpm, 9-fpm, fpm 44 | GitCommit: 373a10dfe09623b32510f64912d2188c6395f64e 45 | Directory: 9.1/fpm 46 | -------------------------------------------------------------------------------- /library/percona: -------------------------------------------------------------------------------- 1 | # this file is generated via https://github.com/docker-library/percona/blob/11b6067c39e69db2c71f6c43edb902690dc5a132/generate-stackbrew-library.sh 2 | 3 | Maintainers: Tianon Gravi (@tianon), 4 | Joseph Ferguson (@yosifkit) 5 | GitRepo: https://github.com/docker-library/percona.git 6 | 7 | Tags: 5.7.16, 5.7, 5, latest 8 | GitCommit: 4f8e829e7d0f8929225a3b042177dbe604c75755 9 | Directory: 5.7 10 | 11 | Tags: 5.6.34, 5.6 12 | GitCommit: 4f8e829e7d0f8929225a3b042177dbe604c75755 13 | Directory: 5.6 14 | 15 | Tags: 5.5.53, 5.5 16 | GitCommit: 4f8e829e7d0f8929225a3b042177dbe604c75755 17 | Directory: 5.5 18 | -------------------------------------------------------------------------------- /library/perl: -------------------------------------------------------------------------------- 1 | # maintainer: Peter Martini (@PeterMartini) 2 | 3 | latest: git://github.com/perl/docker-perl@r20160517.0 5.024.000-64bit 4 | 5 | 5: git://github.com/perl/docker-perl@r20160517.0 5.024.000-64bit 6 | 7 | 5.24: git://github.com/perl/docker-perl@r20160517.0 5.024.000-64bit 8 | 5.24.0: git://github.com/perl/docker-perl@r20160517.0 5.024.000-64bit 9 | 10 | 5.22: git://github.com/perl/docker-perl@r20160517.0 5.022.002-64bit 11 | 5.22.2: git://github.com/perl/docker-perl@r20160517.0 5.022.002-64bit 12 | 13 | threaded: git://github.com/perl/docker-perl@r20160517.0 5.024.000-64bit,threaded 14 | 15 | 5-threaded: git://github.com/perl/docker-perl@r20160517.0 5.024.000-64bit,threaded 16 | 17 | 5.24-threaded: git://github.com/perl/docker-perl@r20160517.0 5.024.000-64bit,threaded 18 | 5.24.0-threaded: git://github.com/perl/docker-perl@r20160517.0 5.024.000-64bit,threaded 19 | 20 | 5.22-threaded: git://github.com/perl/docker-perl@r20160517.0 5.022.002-64bit,threaded 21 | 5.22.2-threaded: git://github.com/perl/docker-perl@r20160517.0 5.022.002-64bit,threaded 22 | -------------------------------------------------------------------------------- /library/photon: -------------------------------------------------------------------------------- 1 | # maintainer: Fabio Rapposelli (@frapposelli) 2 | 3 | # commits: (master..dist) 4 | # - 39c3c62 Update tarballs 5 | 6 | # release-dockerfiles/1.0 7 | 1.0: git://github.com/vmware/photon-docker-image@39c3c62cd649b1d64178b24cd23d9196461dc818 1.0 8 | latest: git://github.com/vmware/photon-docker-image@39c3c62cd649b1d64178b24cd23d9196461dc818 1.0 9 | -------------------------------------------------------------------------------- /library/php-zendserver: -------------------------------------------------------------------------------- 1 | # maintainer: David Lowes (@davidl-zend) 2 | 3 | 5.5: git://github.com/zendtech/php-zendserver-docker@b9f59920986c0471fee9c0cb7e83f0f894413454 8.5/5.5 4 | 8.5-php5.5: git://github.com/zendtech/php-zendserver-docker@b9f59920986c0471fee9c0cb7e83f0f894413454 8.5/5.5 5 | 6 | 5.6: git://github.com/zendtech/php-zendserver-docker@b9f59920986c0471fee9c0cb7e83f0f894413454 8.5/5.6 7 | 8.5-php5.6: git://github.com/zendtech/php-zendserver-docker@b9f59920986c0471fee9c0cb7e83f0f894413454 8.5/5.6 8 | 8.5: git://github.com/zendtech/php-zendserver-docker@b9f59920986c0471fee9c0cb7e83f0f894413454 8.5/5.6 9 | 10 | 5.4: git://github.com/zendtech/php-zendserver-docker@b9f59920986c0471fee9c0cb7e83f0f894413454 7.0/5.4 11 | 7.0-php5.4: git://github.com/zendtech/php-zendserver-docker@b9f59920986c0471fee9c0cb7e83f0f894413454 7.0/5.4 12 | 13 | 9.0: git://github.com/zendtech/php-zendserver-docker@b9f59920986c0471fee9c0cb7e83f0f894413454 9.0/7.0 14 | 9.0-php7: git://github.com/zendtech/php-zendserver-docker@b9f59920986c0471fee9c0cb7e83f0f894413454 9.0/7.0 15 | 16 | latest: git://github.com/zendtech/php-zendserver-docker@b9f59920986c0471fee9c0cb7e83f0f894413454 9.0/7.0 17 | -------------------------------------------------------------------------------- /library/piwik: -------------------------------------------------------------------------------- 1 | Maintainers: Pierre Ozoux (@pierreozoux) 2 | GitRepo: https://github.com/piwik/docker-piwik.git 3 | 4 | Tags: 2.17.1, 2.17, 2, latest 5 | GitCommit: b511e57a17ab57d9f2e947fc391f004990d7f1d3 6 | -------------------------------------------------------------------------------- /library/plone: -------------------------------------------------------------------------------- 1 | Maintainers: Alin Voinea (@avoinea), 2 | Sven Strack (@svx), 3 | Antonio De Marinis (@demarant) 4 | GitRepo: https://github.com/plone/plone.docker.git 5 | 6 | Tags: 5.0.6, 5.0, 5, latest 7 | GitCommit: 72ef7b021f167329d055ea9744b6b85e21496624 8 | Directory: 5.0/5.0.6/debian 9 | 10 | Tags: 4.3.11, 4.3, 4 11 | GitCommit: 72ef7b021f167329d055ea9744b6b85e21496624 12 | Directory: 4.3/4.3.11/debian 13 | -------------------------------------------------------------------------------- /library/postgres: -------------------------------------------------------------------------------- 1 | # this file is generated via https://github.com/docker-library/postgres/blob/a9c1b15a7adf7cb2bc42fac776656aff7dd7994e/generate-stackbrew-library.sh 2 | 3 | Maintainers: Tianon Gravi (@tianon), 4 | Joseph Ferguson (@yosifkit) 5 | GitRepo: https://github.com/docker-library/postgres.git 6 | 7 | Tags: 9.6.1, 9.6, 9, latest 8 | GitCommit: a00e979002aaa80840d58a5f8cc541342e06788f 9 | Directory: 9.6 10 | 11 | Tags: 9.6.1-alpine, 9.6-alpine, 9-alpine, alpine 12 | GitCommit: 4f3238cf60b514d5c20e86096817718474f53d73 13 | Directory: 9.6/alpine 14 | 15 | Tags: 9.5.5, 9.5 16 | GitCommit: 4f3238cf60b514d5c20e86096817718474f53d73 17 | Directory: 9.5 18 | 19 | Tags: 9.5.5-alpine, 9.5-alpine 20 | GitCommit: 4f3238cf60b514d5c20e86096817718474f53d73 21 | Directory: 9.5/alpine 22 | 23 | Tags: 9.4.10, 9.4 24 | GitCommit: 4f3238cf60b514d5c20e86096817718474f53d73 25 | Directory: 9.4 26 | 27 | Tags: 9.4.10-alpine, 9.4-alpine 28 | GitCommit: 4f3238cf60b514d5c20e86096817718474f53d73 29 | Directory: 9.4/alpine 30 | 31 | Tags: 9.3.15, 9.3 32 | GitCommit: 4f3238cf60b514d5c20e86096817718474f53d73 33 | Directory: 9.3 34 | 35 | Tags: 9.3.15-alpine, 9.3-alpine 36 | GitCommit: 4f3238cf60b514d5c20e86096817718474f53d73 37 | Directory: 9.3/alpine 38 | 39 | Tags: 9.2.19, 9.2 40 | GitCommit: 4f3238cf60b514d5c20e86096817718474f53d73 41 | Directory: 9.2 42 | 43 | Tags: 9.2.19-alpine, 9.2-alpine 44 | GitCommit: 4f3238cf60b514d5c20e86096817718474f53d73 45 | Directory: 9.2/alpine 46 | -------------------------------------------------------------------------------- /library/pypy: -------------------------------------------------------------------------------- 1 | # this file is generated via https://github.com/docker-library/pypy/blob/089d2c270aeab809000d301b409d200914eb5aa9/generate-stackbrew-library.sh 2 | 3 | Maintainers: Tianon Gravi (@tianon), 4 | Joseph Ferguson (@yosifkit) 5 | GitRepo: https://github.com/docker-library/pypy.git 6 | 7 | Tags: 2-5.6.0, 2-5.6, 2-5, 2 8 | GitCommit: 491b6dc82d4275a452d48b800ee7a91e48ef9991 9 | Directory: 2 10 | 11 | Tags: 2-5.6.0-slim, 2-5.6-slim, 2-5-slim, 2-slim 12 | GitCommit: 491b6dc82d4275a452d48b800ee7a91e48ef9991 13 | Directory: 2/slim 14 | 15 | Tags: 2-5.6.0-onbuild, 2-5.6-onbuild, 2-5-onbuild, 2-onbuild 16 | GitCommit: b48e8489ab794a2bacfd396c2f8e1a5b06d6ae48 17 | Directory: 2/onbuild 18 | 19 | Tags: 3-5.5.0-alpha, 3-5.5.0, 3-5.5, 3-5, 3, latest 20 | GitCommit: d280acb013c2248452caf98117334eab9da5a8f6 21 | Directory: 3 22 | 23 | Tags: 3-5.5.0-alpha-slim, 3-5.5.0-slim, 3-5.5-slim, 3-5-slim, 3-slim, slim 24 | GitCommit: 95f6702ded19c44f5dc872ff5ea0374138804829 25 | Directory: 3/slim 26 | 27 | Tags: 3-5.5.0-alpha-onbuild, 3-5.5.0-onbuild, 3-5.5-onbuild, 3-5-onbuild, 3-onbuild, onbuild 28 | GitCommit: b48e8489ab794a2bacfd396c2f8e1a5b06d6ae48 29 | Directory: 3/onbuild 30 | -------------------------------------------------------------------------------- /library/r-base: -------------------------------------------------------------------------------- 1 | # maintainer: "Carl Boettiger" (@cboettig) 2 | # maintainer: "Dirk Eddelbuettel" (@eddelbuettel) 3 | 4 | 3.3.2: git://github.com/rocker-org/rocker@b2cdaad0026645c6cb3ed78f460042ed2197449a r-base 5 | latest: git://github.com/rocker-org/rocker@b2cdaad0026645c6cb3ed78f460042ed2197449a r-base 6 | -------------------------------------------------------------------------------- /library/rabbitmq: -------------------------------------------------------------------------------- 1 | # this file is generated via https://github.com/docker-library/rabbitmq/blob/6d3777cae4ac310b4801b954413692ee4d853927/generate-stackbrew-library.sh 2 | 3 | Maintainers: Tianon Gravi (@tianon), 4 | Joseph Ferguson (@yosifkit) 5 | GitRepo: https://github.com/docker-library/rabbitmq.git 6 | 7 | Tags: 3.6.6, 3.6, 3, latest 8 | GitCommit: c766dd4dad64dd1c5550febff7e19ab763b7c5a4 9 | 10 | Tags: 3.6.6-management, 3.6-management, 3-management, management 11 | GitCommit: dc712681dcaeadb0371be66be5e96563be364e5d 12 | Directory: management 13 | -------------------------------------------------------------------------------- /library/rails: -------------------------------------------------------------------------------- 1 | # this file is generated via https://github.com/docker-library/rails/blob/bd6822c973c76fbf84f891a42a5d3a68bf66fa08/generate-stackbrew-library.sh 2 | 3 | Maintainers: Tianon Gravi (@tianon), 4 | Joseph Ferguson (@yosifkit) 5 | GitRepo: https://github.com/docker-library/rails.git 6 | 7 | Tags: 5.0.0.1, 5.0.0, 5.0, 5, latest 8 | GitCommit: 74262f5482517f779681590b0194758ff75cf77c 9 | 10 | Tags: onbuild 11 | GitCommit: 9df9b5e6b1519faf22e1565c2caaebf7cc1c665b 12 | Directory: onbuild 13 | -------------------------------------------------------------------------------- /library/rakudo-star: -------------------------------------------------------------------------------- 1 | # maintainer: Rob Hoelz (@hoelzro) 2 | 3 | 2016.11: git://github.com/perl6/docker@a7548f14c69b9dd3cd75f3359b74c930bc0a16b2 4 | 5 | latest: git://github.com/perl6/docker@a7548f14c69b9dd3cd75f3359b74c930bc0a16b2 6 | -------------------------------------------------------------------------------- /library/redis: -------------------------------------------------------------------------------- 1 | # this file is generated via https://github.com/docker-library/redis/blob/5169c4beff205f6523b16aaa17d8297f5ebcf9f9/generate-stackbrew-library.sh 2 | 3 | Maintainers: Tianon Gravi (@tianon), 4 | Joseph Ferguson (@yosifkit) 5 | GitRepo: https://github.com/docker-library/redis.git 6 | 7 | Tags: 3.0.7, 3.0 8 | GitCommit: 6cb8a8015f126e2a7251c5d011b86b657e9febd6 9 | Directory: 3.0 10 | 11 | Tags: 3.0.7-32bit, 3.0-32bit 12 | GitCommit: 6cb8a8015f126e2a7251c5d011b86b657e9febd6 13 | Directory: 3.0/32bit 14 | 15 | Tags: 3.0.7-alpine, 3.0-alpine 16 | GitCommit: c49a42f6efcd2b971e43e93116a976b058035544 17 | Directory: 3.0/alpine 18 | 19 | Tags: 3.2.6, 3.2, 3, latest 20 | GitCommit: 2e14b84ea86939438834a453090966a9bd4367fb 21 | Directory: 3.2 22 | 23 | Tags: 3.2.6-32bit, 3.2-32bit, 3-32bit, 32bit 24 | GitCommit: 2e14b84ea86939438834a453090966a9bd4367fb 25 | Directory: 3.2/32bit 26 | 27 | Tags: 3.2.6-alpine, 3.2-alpine, 3-alpine, alpine 28 | GitCommit: 2e14b84ea86939438834a453090966a9bd4367fb 29 | Directory: 3.2/alpine 30 | -------------------------------------------------------------------------------- /library/redmine: -------------------------------------------------------------------------------- 1 | # this file is generated via https://github.com/docker-library/redmine/blob/c070428e8c4c43b2d0608a1e77ae44f78220967e/generate-stackbrew-library.sh 2 | 3 | Maintainers: Tianon Gravi (@tianon), 4 | Joseph Ferguson (@yosifkit) 5 | GitRepo: https://github.com/docker-library/redmine.git 6 | 7 | Tags: 3.1.7, 3.1 8 | GitCommit: e75fd00870dcd47a848532abf999f7ec13bb0262 9 | Directory: 3.1 10 | 11 | Tags: 3.1.7-passenger, 3.1-passenger 12 | GitCommit: 31ec3c8963424bbc1730806a65d9914c84df17de 13 | Directory: 3.1/passenger 14 | 15 | Tags: 3.2.4, 3.2 16 | GitCommit: e75fd00870dcd47a848532abf999f7ec13bb0262 17 | Directory: 3.2 18 | 19 | Tags: 3.2.4-passenger, 3.2-passenger 20 | GitCommit: 31ec3c8963424bbc1730806a65d9914c84df17de 21 | Directory: 3.2/passenger 22 | 23 | Tags: 3.3.1, 3.3, 3, latest 24 | GitCommit: e75fd00870dcd47a848532abf999f7ec13bb0262 25 | Directory: 3.3 26 | 27 | Tags: 3.3.1-passenger, 3.3-passenger, 3-passenger, passenger 28 | GitCommit: 31ec3c8963424bbc1730806a65d9914c84df17de 29 | Directory: 3.3/passenger 30 | -------------------------------------------------------------------------------- /library/registry: -------------------------------------------------------------------------------- 1 | # maintainer: Stephen Day (@stevvooe) 2 | # maintainer: Olivier Gambier (@dmp42) 3 | # maintainer: Richard Scothern (@RichardScothern) 4 | # maintainer: Aaron Lehmann (@aaronlehmann) 5 | 6 | 2: git://github.com/docker/distribution-library-image@3b4a84c1f152b60688e99d2efadf305479541482 7 | 2.5: git://github.com/docker/distribution-library-image@3b4a84c1f152b60688e99d2efadf305479541482 8 | 2.5.1: git://github.com/docker/distribution-library-image@3b4a84c1f152b60688e99d2efadf305479541482 9 | 2.6.0-rc.1: git://github.com/docker/distribution-library-image@badae459fc79845d0ca889e9002261a35738de87 10 | latest: git://github.com/docker/distribution-library-image@3b4a84c1f152b60688e99d2efadf305479541482 11 | 12 | -------------------------------------------------------------------------------- /library/rethinkdb: -------------------------------------------------------------------------------- 1 | # maintainer: Daniel Alan Miller (@dalanmiller) 2 | 3 | 2.0.4: git://github.com/rethinkdb/rethinkdb-dockerfiles@da98484fc73485fe7780546903d01dcbcd931673 jessie/2.0.4 4 | 2.0: git://github.com/rethinkdb/rethinkdb-dockerfiles@da98484fc73485fe7780546903d01dcbcd931673 jessie/2.0.4 5 | 6 | 2.1.6: git://github.com/rethinkdb/rethinkdb-dockerfiles@da98484fc73485fe7780546903d01dcbcd931673 jessie/2.1.6 7 | 2.1: git://github.com/rethinkdb/rethinkdb-dockerfiles@da98484fc73485fe7780546903d01dcbcd931673 jessie/2.1.6 8 | 9 | 2.2.6: git://github.com/rethinkdb/rethinkdb-dockerfiles@da98484fc73485fe7780546903d01dcbcd931673 jessie/2.2.6 10 | 2.2: git://github.com/rethinkdb/rethinkdb-dockerfiles@da98484fc73485fe7780546903d01dcbcd931673 jessie/2.2.6 11 | 12 | 2.3.4: git://github.com/rethinkdb/rethinkdb-dockerfiles@da98484fc73485fe7780546903d01dcbcd931673 jessie/2.3.4 13 | 2.3.5: git://github.com/rethinkdb/rethinkdb-dockerfiles@da98484fc73485fe7780546903d01dcbcd931673 jessie/2.3.5 14 | 2.3: git://github.com/rethinkdb/rethinkdb-dockerfiles@da98484fc73485fe7780546903d01dcbcd931673 jessie/2.3.5 15 | 2: git://github.com/rethinkdb/rethinkdb-dockerfiles@da98484fc73485fe7780546903d01dcbcd931673 jessie/2.3.5 16 | latest: git://github.com/rethinkdb/rethinkdb-dockerfiles@da98484fc73485fe7780546903d01dcbcd931673 jessie/2.3.5 17 | -------------------------------------------------------------------------------- /library/rocket.chat: -------------------------------------------------------------------------------- 1 | Maintainers: Rocket.Chat Image Team (@RocketChat) 2 | GitRepo: https://github.com/RocketChat/Docker.Official.Image.git 3 | 4 | Tags: 0.48.1, 0.48, 0, latest 5 | GitCommit: 02f32774437d9f621652e6b87320af7c4ac6c54a 6 | -------------------------------------------------------------------------------- /library/sentry: -------------------------------------------------------------------------------- 1 | # this file is generated via https://github.com/getsentry/docker-sentry/blob/60d4b0e5ad293ceabfd0d00ec4bc08c5d353ca2c/generate-stackbrew-library.sh 2 | 3 | Maintainers: Matt Robenolt (@mattrobenolt) 4 | GitRepo: https://github.com/getsentry/docker-sentry.git 5 | 6 | Tags: 8.10.0, 8.10 7 | GitCommit: 71597dc5f0532721a3bd24405021e273df471866 8 | Directory: 8.10 9 | 10 | Tags: 8.10.0-onbuild, 8.10-onbuild 11 | GitCommit: 8e4ec0e019a9cfc653f09b16531cef507e015af1 12 | Directory: 8.10/onbuild 13 | 14 | Tags: 8.11.0, 8.11, 8, latest 15 | GitCommit: 60d4b0e5ad293ceabfd0d00ec4bc08c5d353ca2c 16 | Directory: 8.11 17 | 18 | Tags: 8.11.0-onbuild, 8.11-onbuild, 8-onbuild, onbuild 19 | GitCommit: 60d4b0e5ad293ceabfd0d00ec4bc08c5d353ca2c 20 | Directory: 8.11/onbuild 21 | -------------------------------------------------------------------------------- /library/sonarqube: -------------------------------------------------------------------------------- 1 | # maintainer: David Gageot (@dgageot) 2 | 3 | 4 | latest: git://github.com/SonarSource/docker-sonarqube@f63921d773162fde17179f9cc5e78640c88b2ae6 6.2 5 | 6.2: git://github.com/SonarSource/docker-sonarqube@f63921d773162fde17179f9cc5e78640c88b2ae6 6.2 6 | lts: git://github.com/SonarSource/docker-sonarqube@f63921d773162fde17179f9cc5e78640c88b2ae6 5.6.4 7 | 5.6.4: git://github.com/SonarSource/docker-sonarqube@f63921d773162fde17179f9cc5e78640c88b2ae6 5.6.4 8 | alpine: git://github.com/SonarSource/docker-sonarqube@f63921d773162fde17179f9cc5e78640c88b2ae6 6.2-alpine 9 | 6.2-alpine: git://github.com/SonarSource/docker-sonarqube@f63921d773162fde17179f9cc5e78640c88b2ae6 6.2-alpine 10 | lts-alpine: git://github.com/SonarSource/docker-sonarqube@f63921d773162fde17179f9cc5e78640c88b2ae6 5.6.4-alpine 11 | 5.6.4-alpine: git://github.com/SonarSource/docker-sonarqube@f63921d773162fde17179f9cc5e78640c88b2ae6 5.6.4-alpine 12 | -------------------------------------------------------------------------------- /library/sourcemage: -------------------------------------------------------------------------------- 1 | # maintainer: Vlad Glagolev (@vaygr) 2 | 3 | latest: git://github.com/vaygr/docker-sourcemage@a03bbe3ae7bbb839c3c69afd4504ca336f7b9cb9 stable 4 | 0.62: git://github.com/vaygr/docker-sourcemage@a03bbe3ae7bbb839c3c69afd4504ca336f7b9cb9 stable 5 | -------------------------------------------------------------------------------- /library/spiped: -------------------------------------------------------------------------------- 1 | # maintainer: Tim Düsterhus (@TimWolla) 2 | 3 | 1.5.0: git://github.com/TimWolla/docker-spiped@04b9fa8c5b8ea5ca75f656ce1104e93096f09d02 1.5 4 | 1.5: git://github.com/TimWolla/docker-spiped@04b9fa8c5b8ea5ca75f656ce1104e93096f09d02 1.5 5 | 1: git://github.com/TimWolla/docker-spiped@04b9fa8c5b8ea5ca75f656ce1104e93096f09d02 1.5 6 | latest: git://github.com/TimWolla/docker-spiped@04b9fa8c5b8ea5ca75f656ce1104e93096f09d02 1.5 7 | 8 | 1.5.0-alpine: git://github.com/TimWolla/docker-spiped@04b9fa8c5b8ea5ca75f656ce1104e93096f09d02 1.5/alpine 9 | 1.5-alpine: git://github.com/TimWolla/docker-spiped@04b9fa8c5b8ea5ca75f656ce1104e93096f09d02 1.5/alpine 10 | 1-alpine: git://github.com/TimWolla/docker-spiped@04b9fa8c5b8ea5ca75f656ce1104e93096f09d02 1.5/alpine 11 | alpine: git://github.com/TimWolla/docker-spiped@04b9fa8c5b8ea5ca75f656ce1104e93096f09d02 1.5/alpine 12 | -------------------------------------------------------------------------------- /library/storm: -------------------------------------------------------------------------------- 1 | Maintainers: Elisey Zanko (@31z4) 2 | GitRepo: https://github.com/31z4/storm-docker.git 3 | 4 | Tags: 0.9.7, 0.9 5 | GitCommit: 93746fa3936afb3751565860632d3e49d53e9b0e 6 | Directory: 0.9.7 7 | 8 | Tags: 0.10.2, 0.10 9 | GitCommit: 93746fa3936afb3751565860632d3e49d53e9b0e 10 | Directory: 0.10.2 11 | 12 | Tags: 1.0.2, 1.0, latest 13 | GitCommit: 93746fa3936afb3751565860632d3e49d53e9b0e 14 | Directory: 1.0.2 15 | -------------------------------------------------------------------------------- /library/swarm: -------------------------------------------------------------------------------- 1 | Maintainers: Alexandre Beslic (@abronan), 2 | Andrea Luzzardi (@aluzzardi), 3 | Dong Chen (@dongluochen), 4 | Nishant Totla (@nishanttotla), 5 | Victor Vieux (@vieux) 6 | GitRepo: https://github.com/docker/swarm-library-image.git 7 | 8 | Tags: 1.2.5, latest 9 | GitCommit: 67e6cf4171fcabd2e3b8b809105e7dfb15114ce1 10 | -------------------------------------------------------------------------------- /library/telegraf: -------------------------------------------------------------------------------- 1 | Maintainers: Jonathan A. Sternberg (@jsternberg) 2 | 3 | Tags: 1.0, 1.0.1 4 | GitRepo: git://github.com/influxdata/influxdata-docker 5 | GitCommit: a86d1ecbaa12a696c10ed66bf4390c42fe733582 6 | Directory: telegraf/1.0 7 | 8 | Tags: 1.0-alpine, 1.0.1-alpine 9 | GitRepo: git://github.com/influxdata/influxdata-docker 10 | GitCommit: a86d1ecbaa12a696c10ed66bf4390c42fe733582 11 | Directory: telegraf/1.0/alpine 12 | 13 | Tags: 1.1, 1.1.2, latest 14 | GitRepo: git://github.com/influxdata/influxdata-docker 15 | GitCommit: 9bfe5c39d1fcf1dfdaa1732cb98311a40fbf6a57 16 | Directory: telegraf/1.1 17 | 18 | Tags: 1.1-alpine, 1.1.2-alpine, alpine 19 | GitRepo: git://github.com/influxdata/influxdata-docker 20 | GitCommit: 9bfe5c39d1fcf1dfdaa1732cb98311a40fbf6a57 21 | Directory: telegraf/1.1/alpine 22 | -------------------------------------------------------------------------------- /library/thrift: -------------------------------------------------------------------------------- 1 | # maintainer: Adam Hawkins (@ahawkins) 2 | 3 | 0.9: git://github.com/ahawkins/docker-thrift@d322572f7dd6ea468a14a4d832fbec26f152c71e 0.9 4 | 0.9.3: git://github.com/ahawkins/docker-thrift@d322572f7dd6ea468a14a4d832fbec26f152c71e 0.9 5 | latest: git://github.com/ahawkins/docker-thrift@d322572f7dd6ea468a14a4d832fbec26f152c71e 0.9 6 | -------------------------------------------------------------------------------- /library/tomee: -------------------------------------------------------------------------------- 1 | # maintainer: Alex Soto (@lordofthejars) 2 | 3 | 6-jre-1.7.4-jaxrs: git://github.com/tomitribe/docker-tomee@592da5738fd23d6c8a483efce1710cf03ee508c6 6-jre-1.7.4-jaxrs 4 | 6-jre-1.7.4-plume: git://github.com/tomitribe/docker-tomee@592da5738fd23d6c8a483efce1710cf03ee508c6 6-jre-1.7.4-plume 5 | 6-jre-1.7.4-plus: git://github.com/tomitribe/docker-tomee@592da5738fd23d6c8a483efce1710cf03ee508c6 6-jre-1.7.4-plus 6 | 6-jre-1.7.4-webprofile: git://github.com/tomitribe/docker-tomee@592da5738fd23d6c8a483efce1710cf03ee508c6 6-jre-1.7.4-webprofile 7 | 8 | 7-jre-1.7.4-jaxrs: git://github.com/tomitribe/docker-tomee@592da5738fd23d6c8a483efce1710cf03ee508c6 7-jre-1.7.4-jaxrs 9 | 7-jre-1.7.4-plume: git://github.com/tomitribe/docker-tomee@592da5738fd23d6c8a483efce1710cf03ee508c6 7-jre-1.7.4-plume 10 | 7-jre-1.7.4-plus: git://github.com/tomitribe/docker-tomee@592da5738fd23d6c8a483efce1710cf03ee508c6 7-jre-1.7.4-plus 11 | 7-jre-1.7.4-webprofile: git://github.com/tomitribe/docker-tomee@592da5738fd23d6c8a483efce1710cf03ee508c6 7-jre-1.7.4-webprofile 12 | 13 | 8-jre-1.7.4-jaxrs: git://github.com/tomitribe/docker-tomee@592da5738fd23d6c8a483efce1710cf03ee508c6 8-jre-1.7.4-jaxrs 14 | 8-jre-1.7.4-plume: git://github.com/tomitribe/docker-tomee@592da5738fd23d6c8a483efce1710cf03ee508c6 8-jre-1.7.4-plume 15 | 8-jre-1.7.4-plus: git://github.com/tomitribe/docker-tomee@592da5738fd23d6c8a483efce1710cf03ee508c6 8-jre-1.7.4-plus 16 | 8-jre-1.7.4-webprofile: git://github.com/tomitribe/docker-tomee@592da5738fd23d6c8a483efce1710cf03ee508c6 8-jre-1.7.4-webprofile 17 | 18 | 8-jdk-7.0.1-plume: git://github.com/tomitribe/docker-tomee@8c5b5a96305a9b935d304789fcf3707938a175d6 8-jdk-7.0.1-plume 19 | 8-jdk-7.0.1-plus: git://github.com/tomitribe/docker-tomee@8c5b5a96305a9b935d304789fcf3707938a175d6 8-jdk-7.0.1-plus 20 | 8-jdk-7.0.1-webprofile: git://github.com/tomitribe/docker-tomee@8c5b5a96305a9b935d304789fcf3707938a175d6 8-jdk-7.0.1-webprofile 21 | 22 | latest: git://github.com/tomitribe/docker-tomee@8c5b5a96305a9b935d304789fcf3707938a175d6 8-jdk-7.0.1-webprofile 23 | -------------------------------------------------------------------------------- /library/traefik: -------------------------------------------------------------------------------- 1 | Maintainers: Emile Vauge (@emilevauge), 2 | Vincent Demeester (@vdemeester) 3 | GitRepo: https://github.com/containous/traefik-library-image.git 4 | 5 | Tags: v1.1.1, camembert, latest 6 | GitCommit: 90136036ac847c7920452ee0c21668abc836ea25 7 | 8 | Tags: v1.1.1-alpine, camembert-alpine 9 | GitCommit: 90136036ac847c7920452ee0c21668abc836ea25 10 | Directory: alpine 11 | 12 | Tags: v1.0.3, reblochon 13 | GitCommit: 9d877ca7171211aabc2955ab1a301a685f6852fe 14 | -------------------------------------------------------------------------------- /library/ubuntu: -------------------------------------------------------------------------------- 1 | # Maintained by Tianon as proxy for upstream's offical builds. 2 | 3 | Maintainers: Tianon Gravi (@tianon) 4 | GitRepo: https://github.com/tianon/docker-brew-ubuntu-core.git 5 | GitFetch: refs/heads/dist 6 | 7 | # see https://partner-images.canonical.com/core/ 8 | # see also https://wiki.ubuntu.com/Releases#Current 9 | 10 | # commits: (master..dist) 11 | # - cf9d7a2 Update tarballs 12 | # - `ubuntu:precise`: 20161123 13 | # - `ubuntu:trusty`: 20161123 14 | # - `ubuntu:xenial`: 20161121 15 | # - `ubuntu:yakkety`: 20161121 16 | # - `ubuntu:zesty`: 20161129.1 17 | 18 | # 20161123 19 | Tags: 12.04.5, 12.04, precise-20161123, precise 20 | GitCommit: cf9d7a2ee20c8a4706a05d1d7f1a1e25ae32ed39 21 | Directory: precise 22 | 23 | # 20161123 24 | Tags: 14.04.5, 14.04, trusty-20161123, trusty 25 | GitCommit: cf9d7a2ee20c8a4706a05d1d7f1a1e25ae32ed39 26 | Directory: trusty 27 | 28 | # 20161121 29 | Tags: 16.04, xenial-20161121, xenial, latest 30 | GitCommit: cf9d7a2ee20c8a4706a05d1d7f1a1e25ae32ed39 31 | Directory: xenial 32 | 33 | # 20161121 34 | Tags: 16.10, yakkety-20161121, yakkety 35 | GitCommit: cf9d7a2ee20c8a4706a05d1d7f1a1e25ae32ed39 36 | Directory: yakkety 37 | 38 | # 20161129.1 39 | Tags: 17.04, zesty-20161129.1, zesty, devel 40 | GitCommit: cf9d7a2ee20c8a4706a05d1d7f1a1e25ae32ed39 41 | Directory: zesty 42 | -------------------------------------------------------------------------------- /library/vault: -------------------------------------------------------------------------------- 1 | # maintainer: Jeff Mitchell (@jefferai) 2 | 3 | 0.6.0: git://github.com/hashicorp/docker-vault@3d12aa78cdbdce22b3d3e30f1093843f21b0a8fa 0.6 4 | 0.6: git://github.com/hashicorp/docker-vault@3d3957180d689ecddb537aa799a878171280e8a3 0.6.2 5 | 0.6.1: git://github.com/hashicorp/docker-vault@3d12aa78cdbdce22b3d3e30f1093843f21b0a8fa 0.6.1 6 | 0.6.2: git://github.com/hashicorp/docker-vault@3d3957180d689ecddb537aa799a878171280e8a3 0.6.2 7 | latest: git://github.com/hashicorp/docker-vault@3d3957180d689ecddb537aa799a878171280e8a3 0.6.2 8 | -------------------------------------------------------------------------------- /library/websphere-liberty: -------------------------------------------------------------------------------- 1 | # maintainer: David Currie (@davidcurrie) 2 | # maintainer: Jamie Coleman (@jamiecoleman92) 3 | 4 | kernel: git://github.com/WASdev/ci.docker@b946ebd7c0a7d3953419723bc8a3c3041943439e ga/developer/kernel 5 | microProfile: git://github.com/WASdev/ci.docker@b946ebd7c0a7d3953419723bc8a3c3041943439e ga/developer/microProfile 6 | webProfile6: git://github.com/WASdev/ci.docker@b946ebd7c0a7d3953419723bc8a3c3041943439e ga/developer/webProfile6 7 | webProfile7: git://github.com/WASdev/ci.docker@b946ebd7c0a7d3953419723bc8a3c3041943439e ga/developer/webProfile7 8 | javaee7: git://github.com/WASdev/ci.docker@b946ebd7c0a7d3953419723bc8a3c3041943439e ga/developer/javaee7 9 | latest: git://github.com/WASdev/ci.docker@b946ebd7c0a7d3953419723bc8a3c3041943439e ga/developer/javaee7 10 | beta: git://github.com/WASdev/ci.docker@c63e151757a992fd5eb9da11d8bbf9501468b39b beta 11 | -------------------------------------------------------------------------------- /library/wordpress: -------------------------------------------------------------------------------- 1 | # this file is generated via https://github.com/docker-library/wordpress/blob/637afb53dc03b4af19149a0880e796346f97c137/generate-stackbrew-library.sh 2 | 3 | Maintainers: Tianon Gravi (@tianon), 4 | Joseph Ferguson (@yosifkit) 5 | GitRepo: https://github.com/docker-library/wordpress.git 6 | 7 | Tags: 4.7.0-apache, 4.7-apache, 4-apache, apache, 4.7.0, 4.7, 4, latest, 4.7.0-php5.6-apache, 4.7-php5.6-apache, 4-php5.6-apache, php5.6-apache, 4.7.0-php5.6, 4.7-php5.6, 4-php5.6, php5.6 8 | GitCommit: 637afb53dc03b4af19149a0880e796346f97c137 9 | Directory: php5.6/apache 10 | 11 | Tags: 4.7.0-fpm, 4.7-fpm, 4-fpm, fpm, 4.7.0-php5.6-fpm, 4.7-php5.6-fpm, 4-php5.6-fpm, php5.6-fpm 12 | GitCommit: 637afb53dc03b4af19149a0880e796346f97c137 13 | Directory: php5.6/fpm 14 | 15 | Tags: 4.7.0-fpm-alpine, 4.7-fpm-alpine, 4-fpm-alpine, fpm-alpine, 4.7.0-php5.6-fpm-alpine, 4.7-php5.6-fpm-alpine, 4-php5.6-fpm-alpine, php5.6-fpm-alpine 16 | GitCommit: 637afb53dc03b4af19149a0880e796346f97c137 17 | Directory: php5.6/fpm-alpine 18 | 19 | Tags: 4.7.0-php7.0-apache, 4.7-php7.0-apache, 4-php7.0-apache, php7.0-apache, 4.7.0-php7.0, 4.7-php7.0, 4-php7.0, php7.0 20 | GitCommit: 637afb53dc03b4af19149a0880e796346f97c137 21 | Directory: php7.0/apache 22 | 23 | Tags: 4.7.0-php7.0-fpm, 4.7-php7.0-fpm, 4-php7.0-fpm, php7.0-fpm 24 | GitCommit: 637afb53dc03b4af19149a0880e796346f97c137 25 | Directory: php7.0/fpm 26 | 27 | Tags: 4.7.0-php7.0-fpm-alpine, 4.7-php7.0-fpm-alpine, 4-php7.0-fpm-alpine, php7.0-fpm-alpine 28 | GitCommit: 637afb53dc03b4af19149a0880e796346f97c137 29 | Directory: php7.0/fpm-alpine 30 | -------------------------------------------------------------------------------- /library/zookeeper: -------------------------------------------------------------------------------- 1 | Maintainers: Elisey Zanko (@31z4) 2 | GitRepo: https://github.com/31z4/zookeeper-docker.git 3 | 4 | Tags: 3.3.6, 3.3 5 | GitCommit: 7e7eac6d6c11428849ec13bb7d240e4cfa21b2e7 6 | Directory: 3.3.6 7 | 8 | Tags: 3.4.9, 3.4, latest 9 | GitCommit: 7e7eac6d6c11428849ec13bb7d240e4cfa21b2e7 10 | Directory: 3.4.9 11 | -------------------------------------------------------------------------------- /test/clean.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | docker images 'librarytest/*' | awk 'NR>1 { print $1":"$2 }' | xargs -r docker rmi 5 | -------------------------------------------------------------------------------- /test/retry.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | opts="$(getopt -o 'i:c:t:s:' --long 'image:,cid:,tries:,sleep:' -- "$@")" 6 | eval set -- "$opts" 7 | while true; do 8 | flag=$1 9 | shift 10 | case "$flag" in 11 | --image|-i) image="$1" && shift ;; 12 | --cid|-c) cid="$1" && shift ;; 13 | --tries|-t) tries="$1" && shift ;; 14 | --sleep|-s) sleep="$1" && shift ;; 15 | --) break;; 16 | esac 17 | done 18 | 19 | if [ $# -eq 0 ]; then 20 | echo >&2 'retry.sh requires a command to run' 21 | false 22 | fi 23 | 24 | : ${tries:=10} 25 | : ${sleep:=2} 26 | 27 | while ! eval "$@" &> /dev/null; do 28 | (( tries-- )) 29 | if [ $tries -le 0 ]; then 30 | echo >&2 "${image:-the container} failed to accept connections in a reasonable amount of time!" 31 | [ "$cid" ] && ( set -x && docker logs "$cid" ) >&2 || true 32 | eval "$@" # to hopefully get a useful error message 33 | false 34 | fi 35 | if [ "$cid" ] && [ "$(docker inspect -f '{{.State.Running}}' "$cid" 2>/dev/null)" != 'true' ]; then 36 | echo >&2 "${image:-the container} stopped unexpectedly!" 37 | ( set -x && docker logs "$cid" ) >&2 || true 38 | false 39 | fi 40 | echo >&2 -n . 41 | sleep "$sleep" 42 | done 43 | -------------------------------------------------------------------------------- /test/tests/composer/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "require": { 3 | "composer/composer": "^1.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /test/tests/composer/container.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | dir="$(mktemp -d)" 4 | 5 | trap "rm -rf '$dir'" EXIT 6 | 7 | cp composer.json "$dir" 8 | 9 | cd "$dir" 10 | 11 | composer --version 12 | composer install 13 | -------------------------------------------------------------------------------- /test/tests/composer/run.sh: -------------------------------------------------------------------------------- 1 | ../run-sh-in-container.sh -------------------------------------------------------------------------------- /test/tests/cve-2014--shellshock/container.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | # https://github.com/wreiske/shellshocker/blob/754798cd9a14903997faf3eacdfcf91044033719/shellshock_test.sh 5 | source shellshock_test.sh 6 | -------------------------------------------------------------------------------- /test/tests/cve-2014--shellshock/really-run.sh: -------------------------------------------------------------------------------- 1 | ../run-bash-in-container.sh -------------------------------------------------------------------------------- /test/tests/cve-2014--shellshock/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | if ! docker run --rm --entrypoint bash "$1" -c 'true' &> /dev/null; then 5 | # die quietly and gracefully if this image doesn't have bash at all 6 | exit 0 7 | fi 8 | 9 | dir="$(readlink -f "$(dirname "$BASH_SOURCE")")" 10 | source "$dir/really-run.sh" "$@" 11 | -------------------------------------------------------------------------------- /test/tests/debian-apt-get/container.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | # We have to eat stderr here because of: 5 | # W: Conflicting distribution: http://http.debian.net rc-buggy InRelease (expected rc-buggy but got experimental) 6 | # W: Conflicting distribution: http://archive.ubuntu.com devel Release (expected devel but got vivid) 7 | # W: Conflicting distribution: http://archive.ubuntu.com devel-updates Release (expected devel-updates but got vivid) 8 | # W: Conflicting distribution: http://archive.ubuntu.com devel-security Release (expected devel-security but got vivid) 9 | apt-get update &> /dev/null 10 | 11 | # We have to eat stderr here because of: 12 | # debconf: delaying package configuration, since apt-utils is not installed 13 | apt-get install -y hello &> /dev/null 14 | 15 | exec hello 16 | -------------------------------------------------------------------------------- /test/tests/debian-apt-get/expected-std-out.txt: -------------------------------------------------------------------------------- 1 | Hello, world! 2 | -------------------------------------------------------------------------------- /test/tests/debian-apt-get/run.sh: -------------------------------------------------------------------------------- 1 | ../run-bash-in-container.sh -------------------------------------------------------------------------------- /test/tests/docker-build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | # wrapper around "docker build" that creates a temporary directory and copies files into it first so that arbitrary host directories can be copied into containers without bind mounts, but accepts a Dockerfile on stdin 5 | 6 | # usage: ./docker-build.sh some-host-directory some-new-image:some-tag < "$tmp/Dockerfile" 25 | 26 | from="$(awk -F '[ \t]+' 'toupper($1) == "FROM" { print $2; exit }' "$tmp/Dockerfile")" 27 | if ! docker inspect "$from" &> /dev/null; then 28 | docker pull "$from" > /dev/null 29 | fi 30 | 31 | onbuilds="$(docker inspect -f '{{len .Config.OnBuild}}' "$from")" 32 | if [ "$onbuilds" -gt 0 ]; then 33 | # crap, the image we want to build has some ONBUILD instructions 34 | # those are kind of going to ruin our day 35 | # let's do some hacks to strip those bad boys out in a new fake layer 36 | "$(dirname "$(readlink -f "$BASH_SOURCE")")/remove-onbuild.sh" "$from" "$imageTag" 37 | awk -F '[ \t]+' 'toupper($1) == "FROM" { $2 = "'"$imageTag"'" } { print }' "$tmp/Dockerfile" > "$tmp/Dockerfile.new" 38 | mv "$tmp/Dockerfile.new" "$tmp/Dockerfile" 39 | fi 40 | 41 | cp -RL "$dir" "$tmp/dir" 42 | 43 | docker build -t "$imageTag" "$tmp" > /dev/null 44 | -------------------------------------------------------------------------------- /test/tests/docker-dind/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -eo pipefail 3 | 4 | dir="$(dirname "$(readlink -f "$BASH_SOURCE")")" 5 | 6 | image="$1" 7 | 8 | cname="docker-daemon-container-$RANDOM-$RANDOM" 9 | cid="$( 10 | docker run -d -it \ 11 | --privileged \ 12 | --name "$cname" \ 13 | "$image" 14 | )" 15 | trap "docker rm -vf $cid > /dev/null" EXIT 16 | 17 | docker_() { 18 | docker run --rm -i \ 19 | --link "$cname":docker \ 20 | --entrypoint docker-entrypoint.sh \ 21 | "$image" \ 22 | "$@" 23 | } 24 | 25 | . "$dir/../../retry.sh" 'docker_ version' 26 | 27 | [ "$(docker_ images -q | wc -l)" = '0' ] 28 | docker_ pull busybox 29 | [ "$(docker_ images -q | wc -l)" = '1' ] 30 | 31 | [ "$(docker_ ps -aq | wc -l)" = '0' ] 32 | 33 | docker_ run --rm busybox true 34 | docker_ run --rm busybox true 35 | docker_ run --rm busybox true 36 | 37 | [ "$(docker_ ps -aq | wc -l)" = '0' ] 38 | docker_ create -i --name test1 busybox cat 39 | [ "$(docker_ ps -aq | wc -l)" = '1' ] 40 | 41 | [ "$(docker_ inspect -f '{{.State.Running}}' test1)" = 'false' ] 42 | docker_ start test1 43 | [ "$(docker_ inspect -f '{{.State.Running}}' test1)" = 'true' ] 44 | docker_ stop test1 45 | [ "$(docker_ inspect -f '{{.State.Running}}' test1)" = 'false' ] 46 | docker_ rm test1 47 | 48 | [ "$(docker_ ps -aq | wc -l)" = '0' ] 49 | -------------------------------------------------------------------------------- /test/tests/elixir-hello-world/container.exs: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env elixir 2 | 3 | IO.puts "Hello World!" -------------------------------------------------------------------------------- /test/tests/elixir-hello-world/expected-std-out.txt: -------------------------------------------------------------------------------- 1 | Hello World! 2 | -------------------------------------------------------------------------------- /test/tests/elixir-hello-world/run.sh: -------------------------------------------------------------------------------- 1 | ../run-elixir-in-container.sh -------------------------------------------------------------------------------- /test/tests/erlang-hello-world/container.erl: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env escript 2 | 3 | -module('hello-world'). 4 | 5 | main(_) -> 6 | io:format("Hello World!~n"). 7 | -------------------------------------------------------------------------------- /test/tests/erlang-hello-world/expected-std-out.txt: -------------------------------------------------------------------------------- 1 | Hello World! 2 | -------------------------------------------------------------------------------- /test/tests/erlang-hello-world/run.sh: -------------------------------------------------------------------------------- 1 | ../run-erlang-in-container.sh -------------------------------------------------------------------------------- /test/tests/fsharp-hello-world/container.fsx: -------------------------------------------------------------------------------- 1 | printfn "Hello World!" 2 | -------------------------------------------------------------------------------- /test/tests/fsharp-hello-world/expected-std-out.txt: -------------------------------------------------------------------------------- 1 | Hello World! 2 | -------------------------------------------------------------------------------- /test/tests/fsharp-hello-world/run.sh: -------------------------------------------------------------------------------- 1 | ../run-fsharp-in-container.sh -------------------------------------------------------------------------------- /test/tests/gcc-c-hello-world/container.c: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | int main() { 4 | printf("Hello World!\n"); 5 | return 0; 6 | } 7 | -------------------------------------------------------------------------------- /test/tests/gcc-c-hello-world/expected-std-out.txt: -------------------------------------------------------------------------------- 1 | Hello World! 2 | -------------------------------------------------------------------------------- /test/tests/gcc-c-hello-world/run.sh: -------------------------------------------------------------------------------- 1 | ../run-gcc-in-container.sh -------------------------------------------------------------------------------- /test/tests/gcc-cpp-hello-world/container.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | int main() { 4 | std::cout << "Hello World!\n"; 5 | return 0; 6 | } 7 | -------------------------------------------------------------------------------- /test/tests/gcc-cpp-hello-world/expected-std-out.txt: -------------------------------------------------------------------------------- 1 | Hello World! 2 | -------------------------------------------------------------------------------- /test/tests/gcc-cpp-hello-world/run.sh: -------------------------------------------------------------------------------- 1 | ../run-g++-in-container.sh -------------------------------------------------------------------------------- /test/tests/golang-hello-world/container.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import "fmt" 4 | 5 | func main() { 6 | fmt.Printf("Hello World!\n") 7 | } 8 | -------------------------------------------------------------------------------- /test/tests/golang-hello-world/expected-std-out.txt: -------------------------------------------------------------------------------- 1 | Hello World! 2 | -------------------------------------------------------------------------------- /test/tests/golang-hello-world/real-run.sh: -------------------------------------------------------------------------------- 1 | ../run-go-in-container.sh -------------------------------------------------------------------------------- /test/tests/golang-hello-world/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -eo pipefail 3 | 4 | dir="$(dirname "$(readlink -f "$BASH_SOURCE")")" 5 | 6 | image="$1" 7 | 8 | if [[ "$image" == gcc:4* ]]; then 9 | echo >&2 'warning: gcc 4.x does not support Go' 10 | cat "$dir/expected-std-out.txt" # cheaters gunna chea 11 | exit 12 | fi 13 | 14 | exec "$dir/real-run.sh" "$@" 15 | -------------------------------------------------------------------------------- /test/tests/haproxy-basics/haproxy.cfg: -------------------------------------------------------------------------------- 1 | defaults 2 | mode http 3 | timeout connect 5000ms 4 | timeout client 50000ms 5 | timeout server 50000ms 6 | frontend http-in 7 | bind *:80 8 | default_backend google 9 | backend google 10 | server google0 www.google.com 11 | # this doesn't work on HAProxy 1.4 :( 12 | #http-request replace-header Host .* www.google.com 13 | -------------------------------------------------------------------------------- /test/tests/haproxy-basics/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | [ "$DEBUG" ] && set -x 4 | 5 | set -eo pipefail 6 | 7 | dir="$(dirname "$(readlink -f "$BASH_SOURCE")")" 8 | 9 | image="$1" 10 | 11 | clientImage='buildpack-deps:jessie-curl' 12 | 13 | # Create an instance of the container-under-test 14 | serverImage="$("$dir/../image-name.sh" librarytest/haproxy-basics "$image")" 15 | "$dir/../docker-build.sh" "$dir" "$serverImage" < /dev/null" EXIT 21 | 22 | _request() { 23 | local method="$1" 24 | shift 25 | 26 | local url="${1#/}" 27 | shift 28 | 29 | if [ "$(docker inspect -f '{{.State.Running}}' "$cid" 2>/dev/null)" != 'true' ]; then 30 | echo >&2 "$image stopped unexpectedly!" 31 | ( set -x && docker logs "$cid" ) >&2 || true 32 | false 33 | fi 34 | 35 | docker run --rm --link "$cid":haproxy "$clientImage" \ 36 | curl -fs -X"$method" --header 'Host: www.google.com' "$@" "http://haproxy/$url" 37 | } 38 | 39 | . "$dir/../../retry.sh" '[ "$(_request GET / --output /dev/null || echo $?)" != 7 ]' 40 | 41 | # Check that we can request / (which is proxying google.com) 42 | [[ "$(_request GET '/')" == *Google* ]] 43 | -------------------------------------------------------------------------------- /test/tests/haskell-cabal/container.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | cabal update 5 | -------------------------------------------------------------------------------- /test/tests/haskell-cabal/run.sh: -------------------------------------------------------------------------------- 1 | ../run-bash-in-container.sh -------------------------------------------------------------------------------- /test/tests/haskell-ghci/container.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | # Test that the REPL exists and 'works'. 5 | echo | ghci 6 | -------------------------------------------------------------------------------- /test/tests/haskell-ghci/run.sh: -------------------------------------------------------------------------------- 1 | ../run-bash-in-container.sh -------------------------------------------------------------------------------- /test/tests/haskell-runhaskell/container.hs: -------------------------------------------------------------------------------- 1 | main = putStrLn "Hello, World" 2 | -------------------------------------------------------------------------------- /test/tests/haskell-runhaskell/expected-std-out.txt: -------------------------------------------------------------------------------- 1 | Hello, World 2 | -------------------------------------------------------------------------------- /test/tests/haskell-runhaskell/run.sh: -------------------------------------------------------------------------------- 1 | ../run-haskell-in-container.sh -------------------------------------------------------------------------------- /test/tests/hylang-hello-world/container.hy: -------------------------------------------------------------------------------- 1 | (print "Hello World!") 2 | -------------------------------------------------------------------------------- /test/tests/hylang-hello-world/expected-std-out.txt: -------------------------------------------------------------------------------- 1 | Hello World! 2 | -------------------------------------------------------------------------------- /test/tests/hylang-hello-world/run.sh: -------------------------------------------------------------------------------- 1 | ../run-hy-in-container.sh -------------------------------------------------------------------------------- /test/tests/hylang-sh/container.hy: -------------------------------------------------------------------------------- 1 | (-> 2 | (+ 2 2) 3 | (print)) 4 | 5 | (import [pip]) 6 | (pip.main ["install" "-q" "sh"]) 7 | 8 | (import [sh [echo]]) 9 | (-> 10 | (+ 11 | (int (echo "-n" 21)) 12 | (int (echo "-n" 21))) 13 | (print)) 14 | -------------------------------------------------------------------------------- /test/tests/hylang-sh/expected-std-out.txt: -------------------------------------------------------------------------------- 1 | 4 2 | 42 3 | -------------------------------------------------------------------------------- /test/tests/hylang-sh/run.sh: -------------------------------------------------------------------------------- 1 | ../run-hy-in-container.sh -------------------------------------------------------------------------------- /test/tests/image-name.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | # usage: ./image-name.sh librarytest/something some/image:some-tag 5 | # output: librarytest/something:some-image-some-tag 6 | 7 | base="$1"; shift 8 | tag="$1"; shift 9 | 10 | echo "$base:$(echo "$tag" | sed 's![:/]!-!g')" 11 | -------------------------------------------------------------------------------- /test/tests/jetty-hello-web/index.jsp: -------------------------------------------------------------------------------- 1 | <%= request.getParameter("hello") %> 2 | -------------------------------------------------------------------------------- /test/tests/jetty-hello-web/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | [ "$DEBUG" ] && set -x 4 | 5 | set -eo pipefail 6 | 7 | dir="$(dirname "$(readlink -f "$BASH_SOURCE")")" 8 | 9 | image="$1" 10 | 11 | # Use a client image with curl for testing 12 | clientImage="buildpack-deps:curl" 13 | 14 | # Create an instance of the container-under-test 15 | serverImage="$("$dir/../image-name.sh" librarytest/jetty-hello-web "$image")" 16 | "$dir/../docker-build.sh" "$dir" "$serverImage" < /dev/null" EXIT 22 | 23 | _request() { 24 | local method="$1" 25 | shift 26 | 27 | local url="${1#/}" 28 | shift 29 | 30 | docker run --rm --link "$cid":jetty "$clientImage" \ 31 | curl -fs -X"$method" "$@" "http://jetty:8080/$url" 32 | } 33 | 34 | # Make sure that Jetty is listening on port 8080 35 | . "$dir/../../retry.sh" --tries 40 --sleep 0.25 '[ "$(_request GET / --output /dev/null || echo $?)" != 7 ]' 36 | 37 | # Check that we can request /index.jsp with no params 38 | [ "$(_request GET "/" | tail -1)" = "null" ] 39 | 40 | # Check that our index.jsp echoes the value of the "hello" param 41 | hello="world-$RANDOM-$RANDOM" 42 | [ "$(_request GET "/?hello=$hello" | tail -1)" = "$hello" ] 43 | -------------------------------------------------------------------------------- /test/tests/julia-hello-world/container.jl: -------------------------------------------------------------------------------- 1 | println("Hello World!"); 2 | 3 | # https://github.com/docker-library/julia/pull/6 4 | download("https://google.com"); 5 | 6 | # https://github.com/docker-library/julia/pull/9 7 | Pkg.add("JSON"); 8 | -------------------------------------------------------------------------------- /test/tests/julia-hello-world/expected-std-out.txt: -------------------------------------------------------------------------------- 1 | Hello World! 2 | -------------------------------------------------------------------------------- /test/tests/julia-hello-world/run.sh: -------------------------------------------------------------------------------- 1 | ../run-julia-in-container.sh -------------------------------------------------------------------------------- /test/tests/logstash-basics/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | [ "$DEBUG" ] && set -x 4 | 5 | set -eo pipefail 6 | 7 | dir="$(dirname "$(readlink -f "$BASH_SOURCE")")" 8 | 9 | image="$1" 10 | 11 | # our image may not have "curl" (Alpine variants, for example) 12 | clientImage='buildpack-deps:jessie-curl' 13 | 14 | # input via HTTP (default port 0.0.0.0:8080) 15 | # output via stdout, newline-delimited nothing-but-the-message 16 | config=' 17 | input { 18 | http { 19 | } 20 | } 21 | output { 22 | stdout { 23 | codec => line { 24 | format => "%{message}" 25 | } 26 | } 27 | } 28 | ' 29 | 30 | # Create an instance of the container-under-test 31 | cid="$(docker run -d "$image" -e "$config")" 32 | trap "docker rm -vf $cid > /dev/null" EXIT 33 | 34 | _request() { 35 | # https://github.com/docker/docker/issues/14203#issuecomment-129865960 (DOCKER_FIX) 36 | docker run --rm --link "$cid":logstash \ 37 | -e DOCKER_FIX=' ' \ 38 | "$clientImage" curl -fs "$@" "http://logstash:8080" 39 | } 40 | 41 | _trimmed() { 42 | _request "$@" | sed -r 's/^[[:space:]]+|[[:space:]]+$//g' 43 | } 44 | 45 | _req-comp() { 46 | local expected="$1"; shift 47 | response="$(_trimmed "$@")" 48 | [ "$response" = "$expected" ] 49 | } 50 | 51 | _req-exit() { 52 | local expectedRet="$1"; shift 53 | [ "$(_request "$@" --output /dev/null || echo "$?")" = "$expectedRet" ] 54 | } 55 | 56 | _req-msg() { 57 | local msg="$1"; shift 58 | _req-comp 'ok' --data "$msg" 59 | # use "retry.sh" to give logstash just a tiny bit of time to actually print the message to stdout 60 | . "$dir/../../retry.sh" --tries 3 --sleep 0.5 ' 61 | logLine="$(docker logs --tail=1 "$cid")"; 62 | [ "$logLine" = "$msg" ]; 63 | ' 64 | } 65 | 66 | # Make sure our container is listening 67 | . "$dir/../../retry.sh" --tries 20 '! _req-exit 7' # "Failed to connect to host." 68 | 69 | for msg in \ 70 | 'hi' \ 71 | "hello $RANDOM world" \ 72 | "hello $RANDOM world" \ 73 | "hello $RANDOM world" \ 74 | 'bye' \ 75 | ; do 76 | _req-msg "$msg" 77 | done 78 | -------------------------------------------------------------------------------- /test/tests/mongo-basics/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | image="$1" 5 | 6 | cname="mongo-container-$RANDOM-$RANDOM" 7 | cid="$(docker run -d --name "$cname" "$image")" 8 | trap "docker rm -vf $cid > /dev/null" EXIT 9 | 10 | mongo() { 11 | docker run --rm -i --link "$cname":mongo --entrypoint mongo "$image" --host mongo "$@" 12 | } 13 | 14 | mongo_eval() { 15 | mongo --quiet --eval "$@" 16 | } 17 | 18 | tries=10 19 | while ! mongo_eval 'quit(db.stats().ok ? 0 : 1);' &> /dev/null; do 20 | (( tries-- )) 21 | if [ $tries -le 0 ]; then 22 | echo >&2 'mongod failed to accept connections in a reasonable amount of time!' 23 | ( set -x && docker logs "$cid" ) >&2 || true 24 | mongo --eval 'db.stats();' # to hopefully get a useful error message 25 | false 26 | fi 27 | echo >&2 -n . 28 | sleep 2 29 | done 30 | 31 | [ "$(mongo_eval 'db.test.count();')" = 0 ] 32 | mongo_eval 'db.test.save({ _id: 1, a: 2, b: 3, c: "hello" });' > /dev/null 33 | [ "$(mongo_eval 'db.test.count();')" = 1 ] 34 | mongo_eval 'db.test.save({ _id: 1, a: 3, b: 4, c: "hello" });' > /dev/null 35 | [ "$(mongo_eval 'db.test.count();')" = 1 ] 36 | [ "$(mongo_eval 'db.test.findOne().a;')" = 3 ] 37 | 38 | [ "$(mongo_eval 'db.test2.count();')" = 0 ] 39 | mongo_eval 'db.test2.save({ _id: "abc" });' > /dev/null 40 | [ "$(mongo_eval 'db.test2.count();')" = 1 ] 41 | [ "$(mongo_eval 'db.test.count();')" = 1 ] 42 | mongo_eval 'db.test2.drop();' > /dev/null 43 | [ "$(mongo_eval 'db.test2.count();')" = 0 ] 44 | [ "$(mongo_eval 'db.test.count();')" = 1 ] 45 | [ "$(mongo_eval 'db.test.count();' database-that-does-not-exist)" = 0 ] 46 | 47 | mongo_eval 'db.dropDatabase();' > /dev/null 48 | [ "$(mongo_eval 'db.test.count();')" = 0 ] 49 | -------------------------------------------------------------------------------- /test/tests/mysql-basics/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -eo pipefail 3 | 4 | dir="$(dirname "$(readlink -f "$BASH_SOURCE")")" 5 | 6 | image="$1" 7 | 8 | export MYSQL_ROOT_PASSWORD='this is an example test password' 9 | export MYSQL_USER='0123456789012345' # "ERROR: 1470 String 'my cool mysql user' is too long for user name (should be no longer than 16)" 10 | export MYSQL_PASSWORD='my cool mysql password' 11 | export MYSQL_DATABASE='my cool mysql database' 12 | 13 | cname="mysql-container-$RANDOM-$RANDOM" 14 | cid="$( 15 | docker run -d \ 16 | -e MYSQL_ROOT_PASSWORD \ 17 | -e MYSQL_USER \ 18 | -e MYSQL_PASSWORD \ 19 | -e MYSQL_DATABASE \ 20 | --name "$cname" \ 21 | "$image" 22 | )" 23 | trap "docker rm -vf $cid > /dev/null" EXIT 24 | 25 | mysql() { 26 | docker run --rm -i \ 27 | --link "$cname":mysql \ 28 | --entrypoint mysql \ 29 | -e MYSQL_PWD="$MYSQL_PASSWORD" \ 30 | "$image" \ 31 | -hmysql \ 32 | -u"$MYSQL_USER" \ 33 | --silent \ 34 | "$@" \ 35 | "$MYSQL_DATABASE" 36 | } 37 | 38 | . "$dir/../../retry.sh" --tries 20 "echo 'SELECT 1' | mysql" 39 | 40 | echo 'CREATE TABLE test (a INT, b INT, c VARCHAR(255))' | mysql 41 | [ "$(echo 'SELECT COUNT(*) FROM test' | mysql)" = 0 ] 42 | echo 'INSERT INTO test VALUES (1, 2, "hello")' | mysql 43 | [ "$(echo 'SELECT COUNT(*) FROM test' | mysql)" = 1 ] 44 | echo 'INSERT INTO test VALUES (2, 3, "goodbye!")' | mysql 45 | [ "$(echo 'SELECT COUNT(*) FROM test' | mysql)" = 2 ] 46 | echo 'DELETE FROM test WHERE a = 1' | mysql 47 | [ "$(echo 'SELECT COUNT(*) FROM test' | mysql)" = 1 ] 48 | [ "$(echo 'SELECT c FROM test' | mysql)" = 'goodbye!' ] 49 | echo 'DROP TABLE test' | mysql 50 | -------------------------------------------------------------------------------- /test/tests/mysql-initdb/initdb.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE test (a INT, b INT, c VARCHAR(255)); 2 | INSERT INTO test VALUES (1, 2, 'hello'); 3 | INSERT INTO test VALUES (2, 3, 'goodbye!'); 4 | DELETE FROM test WHERE a = 1; 5 | -------------------------------------------------------------------------------- /test/tests/mysql-initdb/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -eo pipefail 3 | 4 | dir="$(dirname "$(readlink -f "$BASH_SOURCE")")" 5 | 6 | image="$1" 7 | 8 | serverImage="$("$dir/../image-name.sh" librarytest/mysql-initdb "$image")" 9 | "$dir/../docker-build.sh" "$dir" "$serverImage" < /dev/null" EXIT 30 | 31 | mysql() { 32 | docker run --rm -i \ 33 | --link "$cname":mysql \ 34 | --entrypoint mysql \ 35 | -e MYSQL_PWD="$MYSQL_PASSWORD" \ 36 | "$image" \ 37 | -hmysql \ 38 | -u"$MYSQL_USER" \ 39 | --silent \ 40 | "$@" \ 41 | "$MYSQL_DATABASE" 42 | } 43 | 44 | . "$dir/../../retry.sh" --tries 20 "echo 'SELECT 1' | mysql" 45 | 46 | [ "$(echo 'SELECT COUNT(*) FROM test' | mysql)" = 1 ] 47 | [ "$(echo 'SELECT c FROM test' | mysql)" = 'goodbye!' ] 48 | -------------------------------------------------------------------------------- /test/tests/mysql-log-bin/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -eo pipefail 3 | 4 | dir="$(dirname "$(readlink -f "$BASH_SOURCE")")" 5 | 6 | image="$1" 7 | 8 | cname="mysql-container-$RANDOM-$RANDOM" 9 | cid="$( 10 | docker run -d \ 11 | -e MYSQL_ALLOW_EMPTY_PASSWORD=1 \ 12 | --name "$cname" \ 13 | "$image" \ 14 | --log-bin="foo-$RANDOM" \ 15 | --server-id="$RANDOM" 16 | )" 17 | trap "docker rm -vf $cid > /dev/null" EXIT 18 | 19 | mysql() { 20 | docker run --rm -i \ 21 | --link "$cname":mysql \ 22 | --entrypoint mysql \ 23 | "$image" \ 24 | -hmysql \ 25 | --silent \ 26 | "$@" 27 | } 28 | 29 | . "$dir/../../retry.sh" --tries 20 "echo 'SELECT 1' | mysql" 30 | 31 | # yay, must be OK 32 | -------------------------------------------------------------------------------- /test/tests/no-hard-coded-passwords/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | IFS=$'\n' 5 | userPasswds=( $(docker run --rm --user 0:0 --entrypoint cut "$1" -d: -f1-2 /etc/passwd) ) 6 | userShadows=() 7 | if echo "${userPasswds[*]}" | grep -qE ':x$'; then 8 | userShadows=( $(docker run --rm --user 0:0 --entrypoint cut "$1" -d: -f1-2 /etc/shadow || true) ) 9 | fi 10 | unset IFS 11 | 12 | declare -A passwds=() 13 | for userPasswd in "${userPasswds[@]}"; do 14 | user="${userPasswd%%:*}" 15 | pass="${userPasswd#*:}" 16 | passwds[$user]="$pass" 17 | done 18 | for userShadow in "${userShadows[@]}"; do 19 | user="${userShadow%%:*}" 20 | if [ "${passwds[$user]}" = 'x' ]; then 21 | pass="${userShadow#*:}" 22 | passwds[$user]="$pass" 23 | fi 24 | done 25 | 26 | ret=0 27 | for user in "${!passwds[@]}"; do 28 | pass="${passwds[$user]}" 29 | 30 | if [ -z "$pass" -o '*' = "$pass" ]; then 31 | # '*' and '' mean no password 32 | continue 33 | fi 34 | 35 | if [ "${pass:0:1}" = '!' ]; then 36 | # '!anything' means "locked" password 37 | #echo >&2 "warning: locked password detected for '$user': '$pass'" 38 | continue 39 | fi 40 | 41 | if [ "${pass:0:1}" = '$' ]; then 42 | # gotta be crypt ($id$salt$encrypted), must be a fail 43 | echo >&2 "error: crypt password detected for '$user': '$pass'" 44 | ret=1 45 | continue 46 | fi 47 | 48 | echo >&2 "warning: garbage password detected for '$user': '$pass'" 49 | done 50 | 51 | exit "$ret" 52 | -------------------------------------------------------------------------------- /test/tests/node-hello-world/container.js: -------------------------------------------------------------------------------- 1 | console.log("Hello World!"); 2 | -------------------------------------------------------------------------------- /test/tests/node-hello-world/expected-std-out.txt: -------------------------------------------------------------------------------- 1 | Hello World! 2 | -------------------------------------------------------------------------------- /test/tests/node-hello-world/run.sh: -------------------------------------------------------------------------------- 1 | ../run-node-in-container.sh -------------------------------------------------------------------------------- /test/tests/nuxeo-basics/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -eo pipefail 3 | 4 | dir="$(dirname "$(readlink -f "$BASH_SOURCE")")" 5 | 6 | image="$1" 7 | 8 | NUXEO_TEST_SLEEP=5 9 | NUXEO_TEST_TRIES=10 10 | 11 | cname="nuxeo-container-$RANDOM-$RANDOM" 12 | cid="$(docker run -d --name "$cname" "$image")" 13 | trap "docker rm -vf $cid > /dev/null" EXIT 14 | 15 | get() { 16 | docker run --rm -i \ 17 | --link "$cname":nuxeo \ 18 | --entrypoint curl \ 19 | "$image" \ 20 | -fs \ 21 | -H "Content-Type:application/json" \ 22 | -u Administrator:Administrator \ 23 | "http://nuxeo:8080/nuxeo/api/v1/$1" 24 | } 25 | 26 | python3() { 27 | docker run --rm -i \ 28 | --entrypoint python3 \ 29 | "$image" \ 30 | "$@" 31 | } 32 | 33 | PATH1='default-domain/workspaces' 34 | 35 | . "$dir/../../retry.sh" \ 36 | --tries "$NUXEO_TEST_TRIES" \ 37 | --sleep "$NUXEO_TEST_SLEEP" \ 38 | "get 'path/$PATH1'" 39 | 40 | # First get a document by its path to get its id 41 | DUID="$(get "path/$PATH1" | python3 -c 'import json, sys; obj = json.load(sys.stdin); print(obj["uid"]);')" 42 | 43 | # Then get the same document by its id 44 | PATH2="$(get "id/$DUID" | python3 -c 'import json, sys; obj = json.load(sys.stdin); print(obj["path"]);')" 45 | 46 | # Compare both path 47 | [ "/$PATH1" = "$PATH2" ] 48 | -------------------------------------------------------------------------------- /test/tests/nuxeo-conf/expected-std-out.txt: -------------------------------------------------------------------------------- 1 | org.nuxeo.automation.trace=true 2 | org.nuxeo.dev=true 3 | -------------------------------------------------------------------------------- /test/tests/nuxeo-conf/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -eo pipefail 3 | 4 | image="$1" 5 | 6 | export NUXEO_DEV_MODE='true' 7 | export NUXEO_AUTOMATION_TRACE='true' 8 | 9 | docker run --rm -i \ 10 | -e NUXEO_DEV_MODE \ 11 | -e NUXEO_AUTOMATION_TRACE \ 12 | "$image" \ 13 | nuxeoctl showconf | grep ^org.nuxeo | sort 14 | -------------------------------------------------------------------------------- /test/tests/override-cmd/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -eo pipefail 3 | 4 | image="$1" 5 | 6 | # test that we can override the CMD with echo 7 | # https://github.com/docker-library/official-images/blob/d28cb89e79417cac50c2a8ae163a9b3b79167f79/README.md#consistency 8 | 9 | hello="world-$RANDOM-$RANDOM" 10 | 11 | # test first with --entrypoint to verify that we even have echo (tests for single-binary images FROM scratch, essentially) 12 | if ! testOutput="$(docker run --rm --entrypoint echo "$image" "Hello $hello" 2>/dev/null)"; then 13 | echo >&2 'image does not appear to contain "echo" -- assuming single-binary image' 14 | exit 15 | fi 16 | [ "$testOutput" = "Hello $hello" ] 17 | 18 | # now test with normal command to verify the default entrypoint is OK 19 | output="$(docker run --rm "$image" echo "Hello $hello")" 20 | [ "$output" = "Hello $hello" ] 21 | -------------------------------------------------------------------------------- /test/tests/perl-hello-world/container.pl: -------------------------------------------------------------------------------- 1 | #!/usr/bin/perl 2 | print "Hello World!\n"; 3 | -------------------------------------------------------------------------------- /test/tests/perl-hello-world/expected-std-out.txt: -------------------------------------------------------------------------------- 1 | Hello World! 2 | -------------------------------------------------------------------------------- /test/tests/perl-hello-world/run.sh: -------------------------------------------------------------------------------- 1 | ../run-perl-in-container.sh -------------------------------------------------------------------------------- /test/tests/php-apache-hello-web/index.php: -------------------------------------------------------------------------------- 1 | ../php-fpm-hello-web/index.php -------------------------------------------------------------------------------- /test/tests/php-apache-hello-web/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -eo pipefail 3 | 4 | dir="$(dirname "$(readlink -f "$BASH_SOURCE")")" 5 | 6 | image="$1" 7 | 8 | # since we have curl in the php image, we'll use that 9 | clientImage="$1" 10 | 11 | serverImage="$("$dir/../image-name.sh" librarytest/php-apache-hello-web "$image")" 12 | "$dir/../docker-build.sh" "$dir" "$serverImage" < /dev/null" EXIT 20 | 21 | _request() { 22 | local method="$1" 23 | shift 24 | 25 | local url="${1#/}" 26 | shift 27 | 28 | docker run --rm --link "$cid":apache "$clientImage" \ 29 | curl -fs -X"$method" "$@" "http://apache/$url" 30 | } 31 | 32 | # Make sure that Apache is listening 33 | . "$dir/../../retry.sh" '[ "$(_request GET / --output /dev/null || echo $?)" != 7 ]' 34 | 35 | # Check that we can request /index.php with no params 36 | [ -n "$(_request GET "/index.php")" ] 37 | 38 | # Check that our index.php echoes the value of the "hello" param 39 | hello="world-$RANDOM-$RANDOM" 40 | [ "$(_request GET "/index.php?hello=$hello" | tail -1)" = "$hello" ] 41 | -------------------------------------------------------------------------------- /test/tests/php-ext-install/container.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | 4 | docker-php-ext-install pdo_mysql 2>&1 5 | php -r 'exit(extension_loaded("pdo_mysql") ? 0 : 1);' 6 | -------------------------------------------------------------------------------- /test/tests/php-ext-install/run.sh: -------------------------------------------------------------------------------- 1 | ../run-sh-in-container.sh -------------------------------------------------------------------------------- /test/tests/php-fpm-hello-web/index.php: -------------------------------------------------------------------------------- 1 | /dev/null <<'EOF' 11 | FROM debian:jessie 12 | 13 | RUN set -x && apt-get update && apt-get install -y libfcgi0ldbl && rm -rf /var/lib/apt/lists/* 14 | 15 | ENTRYPOINT ["cgi-fcgi"] 16 | EOF 17 | 18 | serverImage="$("$dir/../image-name.sh" librarytest/php-fpm-hello-web "$image")" 19 | "$dir/../docker-build.sh" "$dir" "$serverImage" < /dev/null" EXIT 27 | 28 | # RACY TESTS ARE RACY 29 | sleep 1 30 | # TODO find a cleaner solution to this, similar to what we do in mysql-basics 31 | 32 | fcgi-request() { 33 | local method="$1" 34 | 35 | local url="$2" 36 | local queryString= 37 | if [[ "$url" == *\?* ]]; then 38 | queryString="${url#*\?}" 39 | url="${url%%\?*}" 40 | fi 41 | 42 | docker run --rm -i --link "$cid":fpm \ 43 | -e REQUEST_METHOD="$method" \ 44 | -e SCRIPT_NAME="$url" \ 45 | -e SCRIPT_FILENAME=/var/www/html/"${url#/}" \ 46 | -e QUERY_STRING="$queryString" \ 47 | "$clientImage" \ 48 | -bind -connect fpm:9000 49 | } 50 | 51 | # Check that we can request /index.php with no params 52 | [ -n "$(fcgi-request GET "/index.php")" ] 53 | 54 | # Check that our index.php echoes the value of the "hello" param 55 | hello="world-$RANDOM-$RANDOM" 56 | [ "$(fcgi-request GET "/index.php?hello=$hello" | tail -1)" = "$hello" ] 57 | -------------------------------------------------------------------------------- /test/tests/php-hello-world/container.php: -------------------------------------------------------------------------------- 1 | /dev/null" EXIT 14 | 15 | get() { 16 | docker run --rm -i \ 17 | --link "$cname":plone \ 18 | --entrypoint python \ 19 | "$image" \ 20 | -c "import urllib2; con = urllib2.urlopen('$1'); print con.read()" 21 | } 22 | 23 | get_auth() { 24 | docker run --rm -i \ 25 | --link "$cname":plone \ 26 | --entrypoint python \ 27 | "$image" \ 28 | -c "import urllib2; request = urllib2.Request('$1'); request.add_header('Authorization', 'Basic $2'); print urllib2.urlopen(request).read()" 29 | } 30 | 31 | 32 | . "$dir/../../retry.sh" --tries "$PLONE_TEST_TRIES" --sleep "$PLONE_TEST_SLEEP" get "http://plone:8080" 33 | 34 | # Plone is up and running 35 | [[ "$(get 'http://plone:8080')" == *"Plone is up and running"* ]] 36 | 37 | # Create a Plone site 38 | [[ "$(get_auth 'http://plone:8080/@@plone-addsite' "$(echo -n 'admin:admin' | base64)")" == *"Create a Plone site"* ]] -------------------------------------------------------------------------------- /test/tests/plone-zeoclient/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -eo pipefail 3 | 4 | dir="$(dirname "$(readlink -f "$BASH_SOURCE")")" 5 | 6 | image="$1" 7 | 8 | PLONE_TEST_SLEEP=3 9 | PLONE_TEST_TRIES=5 10 | 11 | # Start ZEO server 12 | zname="zeo-container-$RANDOM-$RANDOM" 13 | zid="$(docker run -d --name "$zname" "$image" zeoserver)" 14 | 15 | # Start Plone as ZEO Client 16 | pname="plone-container-$RANDOM-$RANDOM" 17 | pid="$(docker run -d --name "$pname" --link=$zname:zeo -e ZEO_ADDRESS=zeo:8100 "$image")" 18 | 19 | # Tear down 20 | trap "docker rm -vf $pid $zid > /dev/null" EXIT 21 | 22 | get() { 23 | docker run --rm -i \ 24 | --link "$pname":plone \ 25 | --entrypoint python \ 26 | "$image" \ 27 | -c "import urllib2; con = urllib2.urlopen('$1'); print con.read()" 28 | } 29 | 30 | get_auth() { 31 | docker run --rm -i \ 32 | --link "$pname":plone \ 33 | --entrypoint python \ 34 | "$image" \ 35 | -c "import urllib2; request = urllib2.Request('$1'); request.add_header('Authorization', 'Basic $2'); print urllib2.urlopen(request).read()" 36 | } 37 | 38 | . "$dir/../../retry.sh" --tries "$PLONE_TEST_TRIES" --sleep "$PLONE_TEST_SLEEP" get "http://plone:8080" 39 | 40 | # Plone is up and running 41 | [[ "$(get 'http://plone:8080')" == *"Plone is up and running"* ]] 42 | 43 | # Create a Plone site 44 | [[ "$(get_auth 'http://plone:8080/@@plone-addsite' "$(echo -n 'admin:admin' | base64)")" == *"Create a Plone site"* ]] -------------------------------------------------------------------------------- /test/tests/postgres-basics/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -eo pipefail 3 | 4 | dir="$(dirname "$(readlink -f "$BASH_SOURCE")")" 5 | 6 | image="$1" 7 | 8 | export POSTGRES_USER='my cool postgres user' 9 | export POSTGRES_PASSWORD='my cool postgres password' 10 | export POSTGRES_DB='my cool postgres database' 11 | 12 | cname="postgres-container-$RANDOM-$RANDOM" 13 | cid="$(docker run -d -e POSTGRES_USER -e POSTGRES_PASSWORD -e POSTGRES_DB --name "$cname" "$image")" 14 | trap "docker rm -vf $cid > /dev/null" EXIT 15 | 16 | psql() { 17 | docker run --rm -i \ 18 | --link "$cname":postgres \ 19 | --entrypoint psql \ 20 | -e PGPASSWORD="$POSTGRES_PASSWORD" \ 21 | "$image" \ 22 | --host postgres \ 23 | --username "$POSTGRES_USER" \ 24 | --dbname "$POSTGRES_DB" \ 25 | --quiet --no-align --tuples-only \ 26 | "$@" 27 | } 28 | 29 | . "$dir/../../retry.sh" --tries "$POSTGRES_TEST_TRIES" --sleep "$POSTGRES_TEST_SLEEP" "echo 'SELECT 1' | psql" 30 | 31 | echo 'CREATE TABLE test (a INT, b INT, c VARCHAR(255))' | psql 32 | [ "$(echo 'SELECT COUNT(*) FROM test' | psql)" = 0 ] 33 | psql <<'EOSQL' 34 | INSERT INTO test VALUES (1, 2, 'hello') 35 | EOSQL 36 | [ "$(echo 'SELECT COUNT(*) FROM test' | psql)" = 1 ] 37 | psql <<'EOSQL' 38 | INSERT INTO test VALUES (2, 3, 'goodbye!') 39 | EOSQL 40 | [ "$(echo 'SELECT COUNT(*) FROM test' | psql)" = 2 ] 41 | echo 'DELETE FROM test WHERE a = 1' | psql 42 | [ "$(echo 'SELECT COUNT(*) FROM test' | psql)" = 1 ] 43 | [ "$(echo 'SELECT c FROM test' | psql)" = 'goodbye!' ] 44 | echo 'DROP TABLE test' | psql 45 | -------------------------------------------------------------------------------- /test/tests/postgres-initdb/initdb.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE test (a INT, b INT, c VARCHAR(255)); 2 | INSERT INTO test VALUES (1, 2, 'hello'); 3 | INSERT INTO test VALUES (2, 3, 'goodbye!'); 4 | DELETE FROM test WHERE a = 1; 5 | -------------------------------------------------------------------------------- /test/tests/postgres-initdb/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -eo pipefail 3 | 4 | dir="$(dirname "$(readlink -f "$BASH_SOURCE")")" 5 | 6 | image="$1" 7 | 8 | serverImage="$("$dir/../image-name.sh" librarytest/postgres-initdb "$image")" 9 | "$dir/../docker-build.sh" "$dir" "$serverImage" < /dev/null" EXIT 28 | 29 | psql() { 30 | docker run --rm -i \ 31 | --link "$cname":postgres \ 32 | --entrypoint psql \ 33 | -e PGPASSWORD="$POSTGRES_PASSWORD" \ 34 | "$image" \ 35 | --host postgres \ 36 | --username "$POSTGRES_USER" \ 37 | --dbname "$POSTGRES_DB" \ 38 | --quiet --no-align --tuples-only \ 39 | "$@" 40 | } 41 | 42 | . "$dir/../../retry.sh" --tries "$POSTGRES_TEST_TRIES" --sleep "$POSTGRES_TEST_SLEEP" "echo 'SELECT 1' | psql" 43 | 44 | [ "$(echo 'SELECT COUNT(*) FROM test' | psql)" = 1 ] 45 | [ "$(echo 'SELECT c FROM test' | psql)" = 'goodbye!' ] 46 | -------------------------------------------------------------------------------- /test/tests/python-hy/container.hy: -------------------------------------------------------------------------------- 1 | ../hylang-sh/container.hy -------------------------------------------------------------------------------- /test/tests/python-hy/container.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | 4 | # Hy doesn't work on 3.6+ :( 5 | if ! python -c 'import sys; exit((sys.version_info[0] == 3 and sys.version_info[1] >= 6) or sys.version_info[0] > 3)'; then 6 | # TypeError: required field "is_async" missing from comprehension 7 | echo >&2 'skipping Hy test -- no workie on Python 3.6+' 8 | cat expected-std-out.txt # cheaters gunna cheat 9 | exit 10 | fi 11 | 12 | pip install -q hy 13 | hy ./container.hy 14 | -------------------------------------------------------------------------------- /test/tests/python-hy/expected-std-out.txt: -------------------------------------------------------------------------------- 1 | ../hylang-sh/expected-std-out.txt -------------------------------------------------------------------------------- /test/tests/python-hy/run.sh: -------------------------------------------------------------------------------- 1 | ../run-sh-in-container.sh -------------------------------------------------------------------------------- /test/tests/python-imports/container.py: -------------------------------------------------------------------------------- 1 | import curses 2 | import readline 3 | 4 | import bz2 5 | assert(bz2.decompress(bz2.compress(b'IT WORKS IT WORKS IT WORKS')) == b'IT WORKS IT WORKS IT WORKS') 6 | 7 | import platform 8 | 9 | isNotPypy = platform.python_implementation() != 'PyPy' 10 | isCaveman = platform.python_version_tuple()[0] == '2' 11 | 12 | if isCaveman: 13 | import gdbm 14 | else: 15 | import dbm.gnu 16 | 17 | if isNotPypy: 18 | # PyPy and Python 2 don't support lzma 19 | import lzma 20 | assert(lzma.decompress(lzma.compress(b'IT WORKS IT WORKS IT WORKS')) == b'IT WORKS IT WORKS IT WORKS') 21 | 22 | import zlib 23 | assert(zlib.decompress(zlib.compress(b'IT WORKS IT WORKS IT WORKS')) == b'IT WORKS IT WORKS IT WORKS') 24 | -------------------------------------------------------------------------------- /test/tests/python-imports/run.sh: -------------------------------------------------------------------------------- 1 | ../run-python-in-container.sh -------------------------------------------------------------------------------- /test/tests/python-pip-requests-ssl/container.py: -------------------------------------------------------------------------------- 1 | import pip 2 | 3 | pip.main(['install', '-q', 'requests']) 4 | 5 | import requests 6 | 7 | r = requests.get('https://google.com') 8 | assert(r.status_code == 200) 9 | -------------------------------------------------------------------------------- /test/tests/python-pip-requests-ssl/run.sh: -------------------------------------------------------------------------------- 1 | ../run-python-in-container.sh -------------------------------------------------------------------------------- /test/tests/python-sqlite3/container.py: -------------------------------------------------------------------------------- 1 | import sqlite3 2 | 3 | ver = sqlite3.sqlite_version 4 | 5 | con = sqlite3.connect(':memory:', 1, sqlite3.PARSE_DECLTYPES, None) 6 | cur = con.cursor() 7 | cur.execute('CREATE TABLE test (id INT, txt TEXT)') 8 | cur.execute('INSERT INTO test VALUES (?, ?)', (42, 'wut')) 9 | cur.execute('SELECT * FROM test') 10 | assert(cur.fetchall() == [(42, 'wut')]) 11 | cur.execute('DROP TABLE test') 12 | con.close() 13 | -------------------------------------------------------------------------------- /test/tests/python-sqlite3/run.sh: -------------------------------------------------------------------------------- 1 | ../run-python-in-container.sh -------------------------------------------------------------------------------- /test/tests/redis-basics-config/real-run.sh: -------------------------------------------------------------------------------- 1 | ../redis-basics/run.sh -------------------------------------------------------------------------------- /test/tests/redis-basics-config/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -eo pipefail 3 | 4 | dir="$(dirname "$(readlink -f "$BASH_SOURCE")")" 5 | 6 | image="$1" 7 | 8 | newImage="$("$dir/../image-name.sh" librarytest/redis-basics-persistent "$image")" 9 | "$dir/../docker-build.sh" "$dir" "$newImage" < ../test.conf 12 | CMD ["../test.conf", "--appendonly", "yes"] 13 | EOD 14 | 15 | exec "$dir/real-run.sh" "$newImage" 16 | -------------------------------------------------------------------------------- /test/tests/redis-basics-persistent/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -eo pipefail 3 | 4 | dir="$(dirname "$(readlink -f "$BASH_SOURCE")")" 5 | 6 | image="$1" 7 | 8 | cname="redis-container-$RANDOM-$RANDOM" 9 | cid="$(docker run -d --name "$cname" "$image")" 10 | trap "docker rm -vf $cid > /dev/null" EXIT 11 | 12 | redis-cli() { 13 | docker run --rm -i \ 14 | --link "$cname":redis \ 15 | --entrypoint redis-cli \ 16 | "$image" \ 17 | -h redis \ 18 | "$@" 19 | } 20 | 21 | # http://redis.io/topics/quickstart#check-if-redis-is-working 22 | 23 | . "$dir/../../retry.sh" --tries 20 '[ "$(redis-cli ping)" = "PONG" ]' 24 | 25 | [ "$(redis-cli set mykey somevalue)" = 'OK' ] 26 | [ "$(redis-cli get mykey)" = 'somevalue' ] 27 | 28 | docker stop "$cname" 29 | docker start "$cname" 30 | 31 | . "$dir/../../retry.sh" --tries 20 '[ "$(redis-cli ping)" = "PONG" ]' 32 | 33 | [ "$(redis-cli get mykey)" = 'somevalue' ] 34 | -------------------------------------------------------------------------------- /test/tests/redis-basics/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -eo pipefail 3 | 4 | dir="$(dirname "$(readlink -f "$BASH_SOURCE")")" 5 | 6 | image="$1" 7 | 8 | cname="redis-container-$RANDOM-$RANDOM" 9 | cid="$(docker run -d --name "$cname" "$image")" 10 | trap "docker rm -vf $cid > /dev/null" EXIT 11 | 12 | redis-cli() { 13 | docker run --rm -i \ 14 | --link "$cname":redis \ 15 | --entrypoint redis-cli \ 16 | "$image" \ 17 | -h redis \ 18 | "$@" 19 | } 20 | 21 | # http://redis.io/topics/quickstart#check-if-redis-is-working 22 | 23 | . "$dir/../../retry.sh" --tries 20 '[ "$(redis-cli ping)" = "PONG" ]' 24 | 25 | [ "$(redis-cli set mykey somevalue)" = 'OK' ] 26 | [ "$(redis-cli get mykey)" = 'somevalue' ] 27 | -------------------------------------------------------------------------------- /test/tests/remove-onbuild.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | # do some hacks to strip out onbuilds in a new faked layer 5 | # usage: ./remove-onbuild.sh input-image output-image 6 | # ie: ./remove-onbuild.sh rails:onbuild librarytest/rails-onbuild-without-onbuild 7 | 8 | in="$1"; shift 9 | out="$1"; shift 10 | 11 | outImage="${out%%:*}" 12 | outTag="${out#*:}" 13 | [ "$outImage" != "$outTag" ] || outTag='latest' 14 | 15 | tmp="$(mktemp -t -d docker-library-test-remove-onbuild-XXXXXXXXXX)" 16 | trap "rm -rf '$tmp'" EXIT 17 | 18 | declare -A json=( 19 | [Size]=0 20 | ) 21 | declare -A mappings=( 22 | [parent]='.Id' 23 | [created]='.Created' 24 | [container]='.Container' 25 | [container_config]='.ContainerConfig' 26 | [config]='.Config' 27 | [docker_version]='.DockerVersion' 28 | [architecture]='.Architecture' 29 | [os]='.Os' 30 | ) 31 | for key in "${!mappings[@]}"; do 32 | val="$(docker inspect -f '{{json '"${mappings[$key]}"'}}' "$in")" 33 | json["$key"]="$val" 34 | done 35 | onbuildConfig="$(docker inspect -f '{{json .Config.OnBuild}}' "$in" | sed 's/[]\/$*.^|[]/\\&/g')" # pre-escaped for use within "sed" 36 | json[config]="$(echo "${json[config]}" | sed -r "s/$onbuildConfig/null/g")" # grab the image config, but scrub the onbuilds 37 | jsonString='{' 38 | first=1 39 | for key in "${!json[@]}"; do 40 | [ "$first" ] || jsonString+=',' 41 | first= 42 | jsonString+='"'"$key"'":'"${json[$key]}" 43 | done 44 | newId="$(echo "$jsonString" | sha256sum | cut -d' ' -f1)" # lol, this is hacky 45 | jsonString+=',"id":"'"$newId"'"}' 46 | mkdir -p "$tmp/$newId" 47 | echo "$jsonString" > "$tmp/$newId/json" 48 | echo -n '1.0' > "$tmp/$newId/VERSION" 49 | dd if=/dev/zero of="$tmp/$newId/layer.tar" bs=1k count=1 &> /dev/null # empty tar file 50 | 51 | cat > "$tmp/repositories" < /dev/null || true # avoid "already exists, renaming the old one" from "docker load" 56 | tar -cC "$tmp" . | docker load 57 | -------------------------------------------------------------------------------- /test/tests/ruby-bundler/Gemfile: -------------------------------------------------------------------------------- 1 | source 'https://rubygems.org' 2 | gem 'nokogiri' 3 | gem 'rack', '~>1.1' 4 | gem 'rspec', :require => 'spec' 5 | -------------------------------------------------------------------------------- /test/tests/ruby-bundler/container.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | 4 | dir="$(mktemp -d)" 5 | trap "rm -rf '$dir'" EXIT 6 | 7 | cp Gemfile "$dir" 8 | 9 | # make sure that running "bundle" twice doesn't change Gemfile.lock the second time 10 | cd "$dir" 11 | BUNDLE_FROZEN=0 bundle install 12 | cp Gemfile.lock Gemfile.lock.orig 13 | BUNDLE_FROZEN=1 bundle install 14 | diff -u Gemfile.lock.orig Gemfile.lock >&2 15 | -------------------------------------------------------------------------------- /test/tests/ruby-bundler/run.sh: -------------------------------------------------------------------------------- 1 | ../run-sh-in-container.sh -------------------------------------------------------------------------------- /test/tests/ruby-gems/container.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | 4 | # ruby 2.2.2+: rack activesupport 5 | # ruby 2.0+: mime-types 6 | # (jruby 1.7 is ruby 1.9) 7 | extras="$(ruby -e ' 8 | rubyVersion = Gem::Version.new(RUBY_VERSION) 9 | puts ( 10 | ( 11 | rubyVersion >= Gem::Version.new("2.2.2") ? [ 12 | "rack", 13 | "activesupport", 14 | ] : [] 15 | ) + ( 16 | rubyVersion >= Gem::Version.new("2.0") ? [ 17 | "mime-types", 18 | ] : [] 19 | ) 20 | ).join(" ") 21 | ')" 22 | 23 | # list taken from https://rubygems.org/stats 24 | for gem in \ 25 | $extras \ 26 | rake \ 27 | multi_json \ 28 | bundler \ 29 | json \ 30 | thor \ 31 | i18n \ 32 | builder \ 33 | ; do 34 | gem install "$gem" 35 | done 36 | -------------------------------------------------------------------------------- /test/tests/ruby-gems/run.sh: -------------------------------------------------------------------------------- 1 | ../run-sh-in-container.sh -------------------------------------------------------------------------------- /test/tests/ruby-hello-world/container.rb: -------------------------------------------------------------------------------- 1 | print 'Hello World!' 2 | -------------------------------------------------------------------------------- /test/tests/ruby-hello-world/expected-std-out.txt: -------------------------------------------------------------------------------- 1 | Hello World! 2 | -------------------------------------------------------------------------------- /test/tests/ruby-hello-world/run.sh: -------------------------------------------------------------------------------- 1 | ../run-ruby-in-container.sh -------------------------------------------------------------------------------- /test/tests/ruby-nonroot/Gemfile: -------------------------------------------------------------------------------- 1 | source 'https://rubygems.org' 2 | gem 'advanced_math' 3 | -------------------------------------------------------------------------------- /test/tests/ruby-nonroot/container.sh: -------------------------------------------------------------------------------- 1 | ../ruby-bundler/container.sh -------------------------------------------------------------------------------- /test/tests/ruby-nonroot/real-run.sh: -------------------------------------------------------------------------------- 1 | ../ruby-bundler/run.sh -------------------------------------------------------------------------------- /test/tests/ruby-nonroot/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -eo pipefail 3 | 4 | dir="$(dirname "$(readlink -f "$BASH_SOURCE")")" 5 | 6 | image="$1" 7 | 8 | newImage="$("$dir/../image-name.sh" librarytest/ruby-nonroot "$image")" 9 | "$dir/../docker-build.sh" "$dir" "$newImage" < /dev/null; then 10 | exec "$c" "$@" 11 | fi 12 | done 13 | echo >&2 "error: unable to determine how to run python" 14 | exit 1 15 | ' -- ./container.py 16 | -------------------------------------------------------------------------------- /test/tests/run-ruby-in-container.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | testDir="$(readlink -f "$(dirname "$BASH_SOURCE")")" 5 | runDir="$(dirname "$(readlink -f "$BASH_SOURCE")")" 6 | 7 | source "$runDir/run-in-container.sh" "$testDir" "$1" ruby ./container.rb 8 | -------------------------------------------------------------------------------- /test/tests/run-sh-in-container.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | testDir="$(readlink -f "$(dirname "$BASH_SOURCE")")" 5 | runDir="$(dirname "$(readlink -f "$BASH_SOURCE")")" 6 | 7 | source "$runDir/run-in-container.sh" "$testDir" "$1" sh ./container.sh 8 | -------------------------------------------------------------------------------- /test/tests/tomcat-hello-world/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -eo pipefail 3 | 4 | dir="$(dirname "$(readlink -f "$BASH_SOURCE")")" 5 | 6 | image="$1" 7 | 8 | # since we have curl in the tomcat image, we'll use that 9 | clientImage="$1" 10 | 11 | serverImage="$1" 12 | 13 | # Create an instance of the container-under-test 14 | cid="$(docker run -d "$serverImage")" 15 | trap "docker rm -vf $cid > /dev/null" EXIT 16 | 17 | _request() { 18 | local url="${1#/}" 19 | shift 20 | 21 | docker run --rm --link "$cid":tomcat "$clientImage" \ 22 | wget -q -O - "$@" "http://tomcat:8080/$url" 23 | } 24 | 25 | # Make sure that Tomcat is listening 26 | . "$dir/../../retry.sh" '_request / &> /dev/null' 27 | 28 | # Check that we can request / 29 | [ -n "$(_request '/')" ] 30 | 31 | # Check that the example "Hello World" servlet works 32 | helloWorld="$(_request '/examples/servlets/servlet/HelloWorldExample')" 33 | [[ "$helloWorld" == *'Hello World!'* ]] 34 | -------------------------------------------------------------------------------- /test/tests/utc/expected-std-out.txt: -------------------------------------------------------------------------------- 1 | UTC 2 | -------------------------------------------------------------------------------- /test/tests/utc/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | docker run --rm --entrypoint date "$1" +%Z 5 | -------------------------------------------------------------------------------- /test/tests/wordpress-apache-run/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -eo pipefail 3 | 4 | dir="$(dirname "$(readlink -f "$BASH_SOURCE")")" 5 | 6 | # since we have curl in the php image, we'll use that 7 | clientImage="$1" 8 | 9 | mysqlImage='mysql:5.7' 10 | serverImage="$1" 11 | 12 | # Create an instance of the container-under-test 13 | mysqlCid="$(docker run -d -e MYSQL_ROOT_PASSWORD="test-$RANDOM-password-$RANDOM-$$" "$mysqlImage")" 14 | trap "docker rm -vf $mysqlCid > /dev/null" EXIT 15 | cid="$(docker run -d --link "$mysqlCid":mysql "$serverImage")" 16 | trap "docker rm -vf $cid $mysqlCid > /dev/null" EXIT 17 | 18 | _request() { 19 | local method="$1" 20 | shift 21 | 22 | local url="${1#/}" 23 | shift 24 | 25 | docker run --rm --link "$cid":apache "$clientImage" \ 26 | curl -fsL -X"$method" "$@" "http://apache/$url" 27 | } 28 | 29 | # Make sure that Apache is listening and ready 30 | . "$dir/../../retry.sh" --tries 30 '_request GET / --output /dev/null' 31 | # (give it a bit long since it won't start until MySQL is started and ready) 32 | 33 | # Check that we can request / and that it contains the word "setup" somewhere 34 | #
35 | _request GET '/' |tac|tac| grep -iq setup 36 | # (without "|tac|tac|" we get "broken pipe" since "grep" closes the pipe before "curl" is done reading it) 37 | -------------------------------------------------------------------------------- /test/tests/wordpress-fpm-run/nginx-default.conf: -------------------------------------------------------------------------------- 1 | # adapted from https://gist.github.com/md5/d9206eacb5a0ff5d6be0#file-wordpress-fpm-conf 2 | 3 | server { 4 | listen 80; 5 | root /var/www/html; 6 | 7 | client_max_body_size 0; 8 | 9 | index index.php; 10 | 11 | location / { 12 | try_files $uri $uri/ /index.php?$args; 13 | } 14 | 15 | rewrite /wp-admin$ $scheme://$host$uri/ permanent; 16 | 17 | location ~ [^/]\.php(/|$) { 18 | fastcgi_split_path_info ^(.+?\.php)(/.*)$; 19 | if (!-f $document_root$fastcgi_script_name) { 20 | return 404; 21 | } 22 | 23 | include fastcgi_params; 24 | fastcgi_param SCRIPT_FILENAME /var/www/html/$fastcgi_script_name; 25 | #fastcgi_param PATH_INFO $fastcgi_path_info; 26 | #fastcgi_param PATH_TRANSLATED /var/www/html/$fastcgi_path_info; 27 | 28 | fastcgi_pass fpm:9000; 29 | fastcgi_index index.php; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /test/tests/wordpress-fpm-run/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -eo pipefail 3 | 4 | dir="$(dirname "$(readlink -f "$BASH_SOURCE")")" 5 | 6 | # since we have curl in the php image, we'll use that 7 | clientImage="$1" 8 | 9 | # Build a client image with cgi-fcgi for testing 10 | nginxImage="$("$dir/../image-name.sh" librarytest/wordpress-fpm-run-nginx "$1")" 11 | "$dir/../docker-build.sh" "$dir" "$nginxImage" < /dev/null" EXIT 22 | cid="$(docker run -d --link "$mysqlCid":mysql "$serverImage")" 23 | trap "docker rm -vf $cid $mysqlCid > /dev/null" EXIT 24 | nginxCid="$(docker run -d --link "$cid":fpm --volumes-from "$cid" "$nginxImage")" 25 | trap "docker rm -vf $nginxCid $cid $mysqlCid > /dev/null" EXIT 26 | 27 | _request() { 28 | local method="$1" 29 | shift 30 | 31 | local url="${1#/}" 32 | shift 33 | 34 | docker run --rm --link "$nginxCid":nginx "$clientImage" \ 35 | curl -fsL -X"$method" "$@" "http://nginx/$url" 36 | } 37 | 38 | # Make sure that PHP-FPM is listening and ready 39 | . "$dir/../../retry.sh" --tries 30 '_request GET / --output /dev/null' 40 | # (give it a bit long since it won't start until MySQL is started and ready) 41 | 42 | # Check that we can request / and that it contains the word "setup" somewhere 43 | # 44 | _request GET '/' |tac|tac| grep -iq setup 45 | # (without "|tac|tac|" we get "broken pipe" since "grep" closes the pipe before "curl" is done reading it) 46 | --------------------------------------------------------------------------------