├── .circleci
└── config.yml
├── .gitignore
├── LICENSE
├── README-short.txt
├── README.md
├── build
├── builder
├── Dockerfile
├── README.md
└── scripts
│ ├── apk-install
│ └── mkimage-alpine.bash
├── docs
├── about.md
├── build.md
├── caveats.md
├── index.md
└── usage.md
├── logo.png
├── logo_fastly.png
├── test
├── test_alpine-3.1.bats
├── test_alpine-3.2.bats
├── test_alpine-3.3.bats
├── test_alpine-3.4.bats
├── test_alpine-3.5.bats
├── test_alpine-3.6.bats
├── test_alpine-3.7.bats
├── test_alpine-3.8.bats
├── test_alpine-3.9.bats
├── test_alpine-edge.bats
├── test_gliderlabs_alpine-3.1.bats
├── test_gliderlabs_alpine-3.2.bats
├── test_gliderlabs_alpine-3.3.bats
├── test_gliderlabs_alpine-3.4.bats
├── test_gliderlabs_alpine-3.5.bats
├── test_gliderlabs_alpine-3.6.bats
├── test_gliderlabs_alpine-3.7.bats
├── test_gliderlabs_alpine-3.8.bats
├── test_gliderlabs_alpine-3.9.bats
└── test_gliderlabs_alpine-edge.bats
└── versions
├── gliderlabs-3.1
├── Dockerfile
└── options
├── gliderlabs-3.2
├── Dockerfile
└── options
├── gliderlabs-3.3
├── Dockerfile
└── options
├── gliderlabs-3.4
├── Dockerfile
└── options
├── gliderlabs-3.5
├── Dockerfile
└── options
├── gliderlabs-3.6
├── Dockerfile
└── options
├── gliderlabs-3.7
├── Dockerfile
└── options
├── gliderlabs-3.8
├── Dockerfile
└── options
├── gliderlabs-3.9
├── Dockerfile
└── options
├── gliderlabs-edge
├── Dockerfile
└── options
├── library-3.1
├── Dockerfile
└── options
├── library-3.2
├── Dockerfile
└── options
├── library-3.3
├── Dockerfile
└── options
├── library-3.4
├── Dockerfile
└── options
├── library-3.5
├── Dockerfile
└── options
├── library-3.6
├── aarch64
│ ├── Dockerfile
│ ├── UTC
│ └── options
├── armhf
│ ├── Dockerfile
│ ├── UTC
│ └── options
├── ppc64le
│ ├── Dockerfile
│ ├── UTC
│ └── options
├── s390x
│ ├── Dockerfile
│ ├── UTC
│ └── options
├── x86
│ ├── Dockerfile
│ ├── UTC
│ └── options
└── x86_64
│ ├── Dockerfile
│ └── options
├── library-3.7
├── aarch64
│ ├── Dockerfile
│ ├── UTC
│ └── options
├── armhf
│ ├── Dockerfile
│ ├── UTC
│ └── options
├── ppc64le
│ ├── Dockerfile
│ ├── UTC
│ └── options
├── s390x
│ ├── Dockerfile
│ ├── UTC
│ └── options
├── x86
│ ├── Dockerfile
│ ├── UTC
│ └── options
└── x86_64
│ ├── Dockerfile
│ └── options
├── library-3.8
├── aarch64
│ ├── Dockerfile
│ ├── UTC
│ └── options
├── armhf
│ ├── Dockerfile
│ ├── UTC
│ └── options
├── ppc64le
│ ├── Dockerfile
│ ├── UTC
│ └── options
├── s390x
│ ├── Dockerfile
│ ├── UTC
│ └── options
├── x86
│ ├── Dockerfile
│ ├── UTC
│ └── options
└── x86_64
│ ├── Dockerfile
│ └── options
├── library-3.9
├── aarch64
│ ├── Dockerfile
│ ├── UTC
│ └── options
├── armhf
│ ├── Dockerfile
│ ├── UTC
│ └── options
├── ppc64le
│ ├── Dockerfile
│ ├── UTC
│ └── options
├── s390x
│ ├── Dockerfile
│ ├── UTC
│ └── options
├── x86
│ ├── Dockerfile
│ ├── UTC
│ └── options
└── x86_64
│ ├── Dockerfile
│ └── options
└── library-edge
├── aarch64
├── Dockerfile
├── UTC
└── options
├── armhf
├── Dockerfile
├── UTC
└── options
├── ppc64le
├── Dockerfile
├── UTC
└── options
├── s390x
├── Dockerfile
├── UTC
└── options
├── x86
├── Dockerfile
├── UTC
└── options
└── x86_64
├── Dockerfile
└── options
/.circleci/config.yml:
--------------------------------------------------------------------------------
1 | version: 2
2 | jobs:
3 | build:
4 | parallelism: 4
5 | branches:
6 | ignore:
7 | - /rootfs\/.*/
8 | docker:
9 | - image: docker:17.03.0-ce
10 | steps:
11 | - setup_remote_docker:
12 | version: 17.03.0-ce
13 | - checkout
14 | - add_ssh_keys
15 | - restore_cache:
16 | key: deps
17 | - run:
18 | name: install bash
19 | command: apk --no-cache add bash git openssh-client xz
20 | - run:
21 | name: avoid hosts unknown for github
22 | command: mkdir -p ~/.ssh/ && echo -e "Host github.com\n\tStrictHostKeyChecking no\n" > ~/.ssh/config
23 | - run:
24 | name: install bats
25 | command: |
26 | if [[ ! -e ~/deps/bats_v0.4.0.tar.gz ]]; then mkdir -p ~/deps; curl -sSL -o ~/deps/bats_v0.4.0.tar.gz https://github.com/sstephenson/bats/archive/v0.4.0.tar.gz; fi
27 | tar -xf ~/deps/bats_v0.4.0.tar.gz
28 | bats-0.4.0/install.sh /usr/local
29 | - save_cache:
30 | key: deps
31 | paths:
32 | - ~/deps
33 | - run:
34 | shell: /bin/bash -eo pipefail -O globstar
35 | name: build images
36 | command: ./build $(circleci tests glob versions/**/options | circleci tests split)
37 | - run:
38 | shell: /bin/bash -eo pipefail -O globstar
39 | name: test images
40 | command: ./build test $(circleci tests glob versions/**/options | circleci tests split)
41 | - run:
42 | shell: /bin/bash -eo pipefail -O globstar
43 | name: push images
44 | command: |
45 | if [[ "$CIRCLE_BRANCH" == "release" ]]; then docker login -e $DOCKER_EMAIL -u $DOCKER_USER -p $DOCKER_PASSWORD; fi
46 | ./build push $(circleci tests glob versions/**/options | circleci tests split)
47 | - run:
48 | shell: /bin/bash -eo pipefail -O globstar
49 | name: commit artifacts
50 | command: ./build commit $(circleci tests glob versions/**/options | circleci tests split)
51 | - store_artifacts:
52 | path: images
53 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | /versions/**/rootfs.tar.gz
2 | /versions/**/rootfs.tar.xz
3 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2015, Glider Labs, LLC
2 | All rights reserved.
3 |
4 | Redistribution and use in source and binary forms, with or without
5 | modification, are permitted provided that the following conditions are met:
6 |
7 | * Redistributions of source code must retain the above copyright notice, this
8 | list of conditions and the following disclaimer.
9 |
10 | * Redistributions in binary form must reproduce the above copyright notice,
11 | this list of conditions and the following disclaimer in the documentation
12 | and/or other materials provided with the distribution.
13 |
14 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
15 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
17 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
18 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
20 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
21 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
22 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24 |
--------------------------------------------------------------------------------
/README-short.txt:
--------------------------------------------------------------------------------
1 | A minimal Docker image based on Alpine Linux with a complete package index and only 5 MB in size!
2 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # docker-alpine
2 |
3 | [](https://circleci.com/gh/gliderlabs/docker-alpine)
4 | [][hub]
5 | [][hub]
6 | [][slack]
7 |
8 |
9 | A super small Docker image based on [Alpine Linux][alpine]. The image is only 5 MB and has access to a package repository that is much more complete than other BusyBox based images.
10 |
11 | ## Why?
12 |
13 | Docker images today are big. Usually much larger than they need to be. There are a lot of ways to make them smaller, but the Docker populace still jumps to the `ubuntu` base image for most projects. The size savings over `ubuntu` and other bases are huge:
14 |
15 | ```
16 | REPOSITORY TAG IMAGE ID VIRTUAL SIZE
17 | gliderlabs/alpine latest 9cfff538e583 4.803 MB
18 | debian latest 19134a8202e7 123.1 MB
19 | ubuntu latest 104bec311bcd 129 MB
20 | centos latest 67591570dd29 191.8 MB
21 | ```
22 |
23 | There are images such as `progrium/busybox` which get us very close to a minimal container and package system. But these particular BusyBox builds piggyback on the OpenWRT package index which is often lacking and not tailored towards generic everyday applications. Alpine Linux has a much more complete and up to date [package index][alpine-packages]:
24 |
25 | ```console
26 | $ docker run progrium/busybox opkg-install nodejs
27 | Unknown package 'nodejs'.
28 | Collected errors:
29 | * opkg_install_cmd: Cannot install package nodejs.
30 |
31 | $ docker run gliderlabs/alpine apk add --no-cache nodejs
32 | fetch http://alpine.gliderlabs.com/alpine/v3.3/main/x86_64/APKINDEX.tar.gz
33 | fetch http://alpine.gliderlabs.com/alpine/v3.3/community/x86_64/APKINDEX.tar.gz
34 | (1/4) Installing libgcc (5.3.0-r0)
35 | (2/4) Installing libstdc++ (5.3.0-r0)
36 | (3/4) Installing libuv (1.7.5-r0)
37 | (4/4) Installing nodejs (4.2.3-r0)
38 | Executing busybox-1.24.1-r7.trigger
39 | OK: 29 MiB in 15 packages
40 | ```
41 |
42 | This makes Alpine Linux a great image base for utilities and even production applications. [Read more about Alpine Linux here][alpine-about] and you can see how their mantra fits in right at home with Docker images.
43 |
44 | ## Usage
45 |
46 | Stop doing this:
47 |
48 | ```dockerfile
49 | FROM ubuntu-debootstrap:14.04
50 | RUN apt-get update -q \
51 | && DEBIAN_FRONTEND=noninteractive apt-get install -qy mysql-client \
52 | && apt-get clean \
53 | && rm -rf /var/lib/apt
54 | ENTRYPOINT ["mysql"]
55 | ```
56 | This took 19 seconds to build and yields a 164 MB image. Eww. Start doing this:
57 |
58 | ```dockerfile
59 | FROM gliderlabs/alpine:3.4
60 | RUN apk add --no-cache mysql-client
61 | ENTRYPOINT ["mysql"]
62 | ```
63 |
64 | Only 3 seconds to build and results in a 36 MB image! Hooray!
65 |
66 | ## Documentation
67 |
68 | This image is well documented. [Check out the documentation at Viewdocs][docs] and the `docs` directory in this repository.
69 |
70 | ## Contacts
71 |
72 | We make reasonable efforts to support our work and are always happy to chat. Join us in [our Slack community][slack] or [submit a GitHub issue][issues] if you have a security or other general question about this Docker image. Please email [security](http://lists.alpinelinux.org/alpine-security/summary.html) or [user](http://lists.alpinelinux.org/alpine-user/summary.html) mailing lists if you have concerns specific to Alpine Linux.
73 |
74 | ## Inspiration
75 |
76 | The motivation for this project and modifications to `mkimage.sh` are highly inspired by Eivind Uggedal (uggedal) and Luis Lavena (luislavena). They have made great strides in getting Alpine Linux running as a Docker container. Check out their [mini-container/base][mini-base] image as well.
77 |
78 | ## Sponsors
79 |
80 | [][fastly]
81 |
82 | [Fastly][fastly] provides the CDN for our Alpine Linux package repository. This allows super speedy package downloads from all over the globe!
83 |
84 | ## License
85 |
86 | The code in this repository, unless otherwise noted, is BSD licensed. See the `LICENSE` file in this repository.
87 |
88 | [mini-base]: https://github.com/mini-containers/base
89 | [alpine-packages]: http://pkgs.alpinelinux.org/
90 | [alpine-about]: https://www.alpinelinux.org/about/
91 | [docs]: http://gliderlabs.viewdocs.io/docker-alpine
92 | [slack]: http://glider-slackin.herokuapp.com/
93 | [issues]: https://github.com/gliderlabs/docker-alpine/issues
94 | [alpine]: http://alpinelinux.org/
95 | [fastly]: https://www.fastly.com/
96 | [hub]: https://hub.docker.com/r/gliderlabs/alpine/
97 |
98 |
--------------------------------------------------------------------------------
/build:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | shopt -s globstar
4 |
5 | image_pull() {
6 | local pull_url file dir
7 | pull_url="$1"
8 | dir="$2"
9 | file="${pull_url##*/}"
10 |
11 | curl -fSsL "$pull_url" > "$dir/rootfs.tar.gz"
12 | }
13 |
14 | image_build() {
15 | local build_options dir
16 | build_options="$1"
17 | dir="$2"
18 |
19 | [[ "$BUILDER_IMAGE" ]] || {
20 | BUILDER_IMAGE="alpine-builder"
21 | docker build -t "$BUILDER_IMAGE" builder
22 | }
23 |
24 | docker run -e "TRACE=$TRACE" --rm "$BUILDER_IMAGE" "${BUILD_OPTIONS[@]}" \
25 | > "$version_dir/rootfs.tar.xz"
26 | }
27 |
28 | build() {
29 | declare options_files="${*:-versions/**/options}"
30 |
31 | for file in $options_files; do
32 | ( # shellcheck source=versions/gliderlabs-3.2/options
33 | source "$file"
34 | local version_dir
35 | version_dir="${file%/*}"
36 | arch="${ARCH:-x86_64}"
37 | : "${TAGS:?}"
38 |
39 | [[ "$PULL_URL" ]] && image_pull "$PULL_URL" "$version_dir"
40 | [[ "$BUILD_OPTIONS" ]] && image_build "${BUILD_OPTIONS[@]}" "$version_dir"
41 |
42 | # Build + tag images
43 | for tag in "${TAGS[@]}"; do
44 | docker build -t "$tag" "$version_dir"
45 |
46 | if [[ "$CIRCLE_BUILD_NUM" ]]; then
47 | {
48 | mkdir -p images \
49 | && docker tag "$tag" "${tag}-${CIRCLE_BUILD_NUM}" \
50 | && docker save "${tag}-${CIRCLE_BUILD_NUM}" \
51 | | xz -9e > "images/${tag//\//_}-${CIRCLE_BUILD_NUM}.tar.xz" \
52 | && docker rmi "${tag}-${CIRCLE_BUILD_NUM}"
53 | } || true
54 | fi
55 | done )
56 |
57 | done
58 | }
59 |
60 | commit() {
61 | [[ "$CIRCLE_BRANCH" == "release" ]] || return 0
62 |
63 | declare options_files="${*:-versions/**/options}"
64 | local build_num="${CIRCLE_BUILD_NUM:-nobuild}"
65 | local current_branch
66 | current_branch=$(git rev-parse --abbrev-ref HEAD)
67 | : "${current_branch:?}"
68 |
69 | for file in $options_files; do
70 | local release version_dir
71 | version_dir="${file%/*}"
72 | release="${version_dir##versions/}"
73 |
74 | : "${release:?}" "${version_dir:?}"
75 |
76 | git checkout -B "rootfs/$release" "$current_branch"
77 | git add -f -- "$version_dir/rootfs.tar.*"
78 | git commit -m "release image version $release for build $build_num"
79 | done
80 |
81 | [[ "$NO_PUSH" ]] || git push -f origin 'refs/heads/rootfs/*'
82 | git checkout "$current_branch"
83 | }
84 |
85 | run_tests() {
86 | declare options_files="${*:-versions/**/options}"
87 | declare -a test_files
88 | for file in $options_files; do
89 | # shellcheck source=versions/gliderlabs-3.2/options
90 | source "$file"
91 | local tag
92 | tag="${TAGS[0]}" tag="${tag//:/-}" tag="${tag//\//_}"
93 | test_file="test/test_${tag}.bats"
94 | [[ -f "$test_file" ]] && test_files+=("$test_file") || echo " - skipping test for ${tag}: no test file ${test_file}"
95 | done
96 |
97 | [[ "${test_files[@]}" ]] && bats "${test_files[@]}"
98 | }
99 |
100 | push() {
101 | [[ "$CIRCLE_BRANCH" == "release" ]] || return 0
102 | [[ "$NO_PUSH" ]] && return 0
103 |
104 | declare options_files="${*:-versions/**/options}"
105 | for file in $options_files; do
106 | ( #shellcheck source=versions/gliderlabs-3.2/options
107 | source "$file"
108 | for tag in "${TAGS[@]}"; do
109 | if docker history "$tag" &> /dev/null; then
110 | [[ "$PUSH_IMAGE" ]] && docker push "$tag"
111 | fi
112 | done
113 | exit 0 )
114 | done
115 | }
116 |
117 | library() {
118 | convert() {
119 | # takes a space-separated list of alpine-linux architectures, and returns a space-separated list of docker architectures
120 | local i=0
121 | for arch in "$@"; do
122 | case "$arch" in # converts Alpine Linux arch strings to Docker arch strings
123 | x86_64) echo -n "amd64";;
124 | x86) echo -n "i386";;
125 | armhf) echo -n "arm32v6";; # arm32v7 is not officially supported by Alpine, but arm32v6 should still work.
126 | aarch64) echo -n "arm64v8";;
127 | ppc64le) echo -n "ppc64le";;
128 | s390x) echo -n "s390x";;
129 | *) echo >&2 "error: unknown arch '$arch'"; return 1;; # Fail on unknown archs
130 | esac
131 | if [[ i -ne $#-1 ]]; then
132 | echo -n " "
133 | fi
134 | let i=$i+1
135 | done
136 | }
137 |
138 | local release_refs
139 | release_refs="$(git ls-remote --exit-code --heads origin release)"
140 | : "${release_refs:?}"
141 |
142 | echo
143 | echo "# autogenerated by https://github.com/gliderlabs/docker-alpine/blob/master/build"
144 | echo
145 | echo "Maintainers: Glider Labs (@gliderlabs)"
146 | echo "GitRepo: https://github.com/gliderlabs/docker-alpine.git"
147 | echo "GitFetch: refs/heads/release"
148 | echo "GitCommit: ${release_refs:0:40}"
149 |
150 | for file in versions/library-*/x86_64/options versions/library-*/options; do
151 | # shellcheck source=versions/library-3.2/options
152 | source "$file"
153 | local version_dir release tags
154 | version_dir="${file%/options}"
155 | version_dir="${version_dir%/x86_64}"
156 | release="${version_dir#versions/}"
157 | tags="${TAGS[*]#alpine:}"
158 | if [ -e "$version_dir/options" ]; then
159 | # compatability with older configs that were only written for x86_64 architectures
160 | ARCHS=("x86_64")
161 | else
162 | ARCHS=( "$version_dir"/*/options )
163 | ARCHS=( "${ARCHS[@]#$version_dir/}" )
164 | ARCHS=( "${ARCHS[@]%/*}" )
165 | fi
166 | a="$(convert "${ARCHS[@]}")"
167 |
168 | echo
169 | echo "Tags: ${tags// /, }"
170 | echo "Architectures: ${a// /, }"
171 |
172 | local i=0
173 | for arch in $a; do
174 | # ${ARCHS[i]} is the alpine version string, different from $archs, the docker version string.
175 | # Our folder structure is based on the alpine version string
176 | local branch dir refs
177 | if [ -e "$version_dir/options" ]; then
178 | # compatability with older configs that were only written for x86_64 architectures
179 | branch="rootfs/${release}"
180 | dir="$version_dir"
181 | else
182 | branch="rootfs/${release}/${ARCHS[i]}"
183 | dir="$version_dir/${ARCHS[i]}"
184 | fi
185 | refs="$(git ls-remote --exit-code --heads origin "$branch")"
186 | : "${refs:?}"
187 | echo "$arch-GitFetch: refs/heads/$branch"
188 | echo "$arch-GitCommit: ${refs:0:40}"
189 | echo "$arch-Directory: $dir"
190 | let i=i+1
191 | done
192 | done
193 | echo
194 | }
195 |
196 | main() {
197 | set -eo pipefail; [[ "$TRACE" ]] && set -x
198 | declare cmd="$1"
199 | case "$cmd" in
200 | test) shift; run_tests "$@";;
201 | commit) shift; commit "$@";;
202 | push) shift; push "$@";;
203 | library) shift; library;;
204 | *) build "$@";;
205 | esac
206 | }
207 |
208 | main "$@"
209 |
--------------------------------------------------------------------------------
/builder/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM alpine:latest
2 | COPY scripts/mkimage-alpine.bash scripts/apk-install /
3 | RUN apk add --no-cache bash tzdata xz
4 | ENTRYPOINT ["/mkimage-alpine.bash"]
5 |
--------------------------------------------------------------------------------
/builder/README.md:
--------------------------------------------------------------------------------
1 | # Alpine Linux rootfs Builder
2 |
3 | This builder image constructs a Alpine Linux `rootfs.tar.xz` for us to use when building the base Alpine Linux image. The `mkimage-alpine.sh` script does all the heavy lifting. During the configuration of the image we add our `apk-install` convenience script.
4 |
5 | ## Options
6 |
7 | The builder takes several options:
8 |
9 | * `-r `: The release tag to use (such as `edge` or `v3.1`).
10 | * `-m `: The mirror URL base. Defaults to `http://nl.alpinelinux.org/alpine`.
11 | * `-s`: Outputs the `rootfs.tar.xz` to stdout.
12 | * `-c`: Adds the `apk-install` script to the resulting rootfs.
13 | * `-e`: Adds extra `edge/main` and `edge/testing` pins to the repositories file.
14 | * `-d`: Disables su to root by removing the blank root password.
15 | * `-E`: Does not add `community` to the repositories file (necessary for versions without a community repo).
16 | * `-t `: Sets the timezone.
17 | * `-p `: Comma-separated packages list. Default is `alpine-base`.
18 | * `-b`: Extracts `alpine-base` to the rootfs without dependencies. For images slimmed down with `-p` which still want `/etc/*-release` and `/etc/issue`.
19 | * `-a `: Changes the architecture of the rootfs to download. Default is `x86_64`
20 |
--------------------------------------------------------------------------------
/builder/scripts/apk-install:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | apk add --update-cache "$@" && rm -rf /var/cache/apk/*
3 |
--------------------------------------------------------------------------------
/builder/scripts/mkimage-alpine.bash:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | # This mkimage-alpine.sh is a modified version from
4 | # https://github.com/docker/docker/blob/master/contrib/mkimage-alpine.sh.
5 | # Changes were inspired by work done by Eivind Uggedal (uggedal) and
6 | # Luis Lavena (luislavena).
7 |
8 | declare REL="${REL:-edge}"
9 | declare MIRROR="${MIRROR:-http://nl.alpinelinux.org/alpine}"
10 |
11 | set -eo pipefail; [[ "$TRACE" ]] && set -x
12 |
13 | [[ "$(id -u)" -eq 0 ]] || {
14 | printf >&2 '%s requires root\n' "$0" && exit 1
15 | }
16 |
17 | usage() {
18 | printf >&2 '%s: [-r release] [-m mirror] [-a arch] [-s] [-E] [-e] [-c] [-d] [-t timezone] [-p packages] [-b]\n' "$0" && exit 1
19 | }
20 |
21 | build() {
22 | declare mirror="$1" rel="$2" packages=("${3:-alpine-base}") arch="${4:-x86_64}"
23 |
24 | local rootfs
25 | rootfs="$(mktemp -d "${TMPDIR:-/var/tmp}/alpine-docker-rootfs-XXXXXXXXXX")"
26 |
27 | # conf
28 | mkdir -p "$rootfs/etc/apk"
29 | {
30 | echo "$mirror/$rel/main"
31 | [[ "$OMIT_COMMUNITY" ]] || echo "$mirror/$rel/community"
32 | [[ "$REPO_EXTRA" ]] && {
33 | [[ "$rel" == "edge" ]] || echo "@edge $mirror/edge/main"
34 | echo "@testing $mirror/edge/testing"
35 | }
36 | } > "$rootfs/etc/apk/repositories"
37 |
38 | # mkbase
39 | {
40 | # shellcheck disable=SC2086
41 | apk --root "$rootfs" --update-cache --keys-dir /etc/apk/keys \
42 | add --arch $arch --initdb ${packages[*]//,/ }
43 | [[ "$ADD_BASELAYOUT" ]] && \
44 | apk --root "$rootfs" --keys-dir /etc/apk/keys \
45 | fetch --stdout --arch $arch alpine-base | tar -xvz -C "$rootfs" etc
46 | [[ "$TIMEZONE" ]] && {
47 | apk --root "$rootfs" --keys-dir /etc/apk/keys \
48 | add --arch $arch -t .timezone tzdata
49 | cp "$rootfs/usr/share/zoneinfo/$TIMEZONE" "$rootfs/etc/localtime"
50 | apk --root "$rootfs" --keys-dir /etc/apk/keys \
51 | del --arch $arch --purge .timezone
52 | }
53 | rm -f "$rootfs/var/cache/apk"/*
54 | [[ "$DISABLE_ROOT_PASSWD" ]] && \
55 | sed -ie 's/^root::/root:!:/' "$rootfs/etc/shadow"
56 | } >&2
57 |
58 | [[ "$ADD_APK_SCRIPT" ]] && cp /apk-install "$rootfs/usr/sbin/apk-install"
59 |
60 | # save
61 | tar -J -f rootfs.tar.xz --numeric-owner --exclude='dev/*' -C "$rootfs" -c .
62 | [[ "$STDOUT" ]] && cat rootfs.tar.xz
63 |
64 | return 0
65 | }
66 |
67 | main() {
68 | while getopts "hr:m:t:sEecdp:ba:" opt; do
69 | case $opt in
70 | r) REL="$OPTARG";;
71 | m) MIRROR="${OPTARG%/}";;
72 | s) STDOUT=1;;
73 | E) OMIT_COMMUNITY=1;;
74 | e) REPO_EXTRA=1;;
75 | t) TIMEZONE="$OPTARG";;
76 | c) ADD_APK_SCRIPT=1;;
77 | p) PACKAGES="$OPTARG";;
78 | b) ADD_BASELAYOUT=1;;
79 | d) DISABLE_ROOT_PASSWD=1;;
80 | a) ARCH="$OPTARG";;
81 | *) usage;;
82 | esac
83 | done
84 |
85 | build "$MIRROR" "$REL" "$PACKAGES" "$ARCH"
86 | }
87 |
88 | main "$@"
89 |
--------------------------------------------------------------------------------
/docs/about.md:
--------------------------------------------------------------------------------
1 | # About
2 |
3 | [Alpine Linux](http://alpinelinux.org/) is a lightweight Linux distribution based on [musl libc][musl] and [BusyBox][busybox]. The base is extremely small, builds as a Docker image in a matter of minutes, and has a full-featured package index.
4 |
5 | ## musl libc
6 |
7 | musl provides consistent quality and implementation behavior from tiny embedded systems to full-fledged servers. Minimal machine-specific code means less chance of breakage on minority architectures and better success with “write once run everywhere” C development. Designed from the ground up for static linking, musl carefully avoids pulling in large amounts of code or data that the applications will not use.
8 |
9 | Using musl maximizes application deployability. Binaries statically linked with musl have no external dependencies, even for features like DNS lookups or character set conversions that are implemented with dynamic loading on glibc. An application can really be deployed as a single binary file and run on any machine with the appropriate instruction set architecture and Linux kernel or Linux syscall ABI emulation layer.
10 |
11 | ## BusyBox
12 |
13 | BusyBox combines tiny versions of many common UNIX utilities into a single small executable. It provides replacements for most of the utilities you usually find in GNU fileutils, shellutils, etc. The utilities in BusyBox generally have fewer options than their full-featured GNU cousins; however, the options that are included provide the expected functionality and behave very much like their GNU counterparts. BusyBox provides a fairly complete environment for any small or embedded system.
14 |
15 | BusyBox has been written with size-optimization and limited resources in mind. It is also extremely modular so you can easily include or exclude commands (or features) at compile time. This makes it easy to customize your embedded systems. To create a working system, just add some device nodes in `/dev`, a few configuration files in `/etc`, and a Linux kernel.
16 |
17 | ## Match made in heaven
18 |
19 | Pairing musl libc with BusyBox to combine common UNIX utilities into a single small executable, it makes for an excellent Docker image base. We get extremely small builds (the base image is only 5 MB) that end up cutting time during push and pull.
20 |
21 | [musl]: http://www.musl-libc.org/
22 | [busybox]: http://www.busybox.net/
23 |
--------------------------------------------------------------------------------
/docs/build.md:
--------------------------------------------------------------------------------
1 | # Build
2 |
3 | [](https://circleci.com/gh/gliderlabs/docker-alpine)
4 |
5 | A convenience `build` script is included that builds the image and runs basic tests against the resulting image tags. The script is used in the continuous integration process (check out the CircleCI badge link above). But you can run this script locally to build your own images. Be sure to check out the environment variables that can be tweaked at the top of the `build` script file.
6 |
7 | ## Image
8 |
9 | ### Builder
10 |
11 | The image is built using a builder Docker container based on the `debian` image. This builder image lives in the `builder` sub-directory of the project and uses a `mkimage-alpine.sh` script to generate an Alpine Linux `rootfs.tar.xz` file. This file then gets copied to the root of the project so we can build the main Alpine Linux image by just using the `ADD` command to automatically untar the components to the resulting image.
12 |
13 | ### Options
14 |
15 | The build script takes a glob of `options` files as an argument. Each of these files lives in a folder that describes the version of Alpine Linux to build. Each line of the `options` file are the options that will be applied to the resulting image. By default, we use the included glob of `versions/**/options`.
16 |
17 | ### Multi-arch
18 |
19 | Each options file specifies a version of the image to build. An options file can generate images for multiple architectures using the `ARCHS` variable.
20 |
21 | ### Example
22 |
23 | To build all the images simply run:
24 |
25 | ```console
26 | $ ./build
27 | ```
28 |
29 | Pass version files to the `build` script to build specific versions:
30 |
31 | ```console
32 | $ ./build version/library-3.2/options versions/gliderlabs-3.2/options
33 | ```
34 |
35 | With `parallel` available you can speed up building a bit:
36 |
37 | ```console
38 | $ parallel -m ./build ::: versions/**/options
39 | ```
40 |
41 | ## Differences
42 |
43 | There is only one difference between the `gliderlabs/alpine` image and the [official Alpine Linux image in the Docker Library][library] today. The `gliderlabs/alpine` image has an `apk-install` script added to it. However, this script is now considered deprecated as the `apk` utility has the same functionality built-in (using `apk --no-cache`). We now recommend using the official `alpine` images unless you were already using `gliderlabs/alpine`.
44 |
45 | ## Testing
46 |
47 | The test for images is very simple at the moment. It just attempts to install the `openssl` package and verify we exit cleanly.
48 |
49 | Use the `test` sub-command of the `build` utility to run tests on currently build images (`build test`).
50 |
51 | ### Example
52 |
53 | Run tests for a single image:
54 |
55 | ```console
56 | $ ./build test versions/gliderlabs-3.2/options
57 | ✓ version is correct
58 | ✓ package installs cleanly
59 | ✓ timezone
60 | ✓ apk-install script should be available
61 | ✓ repository list is correct
62 | ✓ cache is empty
63 | ✓ root password is disabled
64 |
65 | 7 tests, 0 failures
66 | ```
67 |
68 | Run all tests:
69 |
70 | ```console
71 | $ ./build test
72 | ✓ version is correct
73 | ✓ package installs cleanly
74 | ✓ timezone
75 | ...
76 | ✓ apk-install script should be missing
77 | ✓ repository list is correct
78 | ✓ cache is empty
79 | ✓ root password is disabled
80 |
81 | 84 tests, 0 failures
82 | ```
83 |
84 | Run tests in parallel with the `parallel` utility:
85 |
86 | ```console
87 | $ parallel ./build test ::: versions/**/options
88 | 1..7
89 | ok 1 version is correct
90 | ok 2 package installs cleanly
91 | ok 3 timezone
92 | ok 4 apk-install script should be available
93 | ...
94 | ```
95 |
96 | ## Library
97 |
98 | These are the steps we use for updating the official library image:
99 |
100 | 1. Merge the `master` branch into `release` and push `release`. This will trigger CircleCI to push resulting image tarballs to the `rootfs/*` branches and push the `gliderlabs` organization images directly to Docker Hub.
101 | 1. Verify [the build is green in CircleCI](https://circleci.com/gh/gliderlabs/docker-alpine/tree/release).
102 | 1. Fork the [official images repository][official] and clone it locally if you have not already done so.
103 | 1. Create a new local branch in the `docker-library/official-images` repository for the update to alpine.
104 | 1. Open the `library/alpine` file from `docker-library/official-images`.
105 | 1. Run `./build library` from the `gliderlabs/docker-alpine` folder root to copy the latest version references.
106 | 1. Paste in the updated version references to the `library/alpine` file opened in the `docker-library/official-images` local clone.
107 | 1. Commit and push the changes to your fork.
108 | 1. Open a pull request to the [official images repository][official].
109 |
110 | [library]: https://github.com/docker-library/official-images/blob/master/library/alpine
111 | [fastly]: https://www.fastly.com/
112 | [official]: https://github.com/docker-library/official-images
113 |
--------------------------------------------------------------------------------
/docs/caveats.md:
--------------------------------------------------------------------------------
1 | # Caveats
2 |
3 | The musl libc implementation may work a little different than you are used to. The [musl libc differences from glibc document](http://wiki.musl-libc.org/wiki/Functional_differences_from_glibc#Name_Resolver_.2F_DNS) does a really good job of outlining everything. Please take a glance at it. Here we'll talk about some of the more common things you might encounter.
4 |
5 | ## DNS
6 |
7 | One common issue you may find is with DNS. musl libc does not use `domain` or `search` directives in the `/etc/resolv.conf` file. For example, if you started your Docker daemon with `--dns-search=service.consul`, and then tried to resolve `consul` from within an Alpine Linux container, it would fail as the name `consul.service.consul` would not be tried. You will need to work around this by using fully qualified names.
8 |
9 | Another difference is parallel querying of name servers. This can be problematic if your first name server has a different DNS view (such as service discovery through DNS). For example, if you started your Docker daemon with `--dns=172.17.42.1 --dns=10.0.2.15` where `172.17.42.1` is a local DNS server to resolve name for service discovery and `10.0.2.15` is for external DNS resolving, you wouldn't be able to guarantee that `172.17.42.1` will always be queried first. There will be sporadic failures.
10 |
11 | In both of these cases, it can help to run a local caching DNS server such as dnsmasq, that can be used for both caching and search path routing. Running dnsmasq with `--server /consul/10.0.0.1` would forward queries for the `.consul` to 10.0.0.1.
12 |
13 | ## Incompatible Binaries
14 |
15 | While there are binaries that will run on musl libc without needing to be recompiled, you will likely encounter binaries and applications that rely on specific glibc functionality that will fail to start up. An example of this would be Oracle Java which relies on specific symbols only found in glibc. You can often use `ldd` to determine the exact symbol:
16 |
17 | ```console
18 | # ldd bin/java
19 | /lib64/ld-linux-x86-64.so.2 (0x7f542ebb5000)
20 | libpthread.so.0 => /lib64/ld-linux-x86-64.so.2 (0x7f542ebb5000)
21 | libjli.so => bin/../lib/amd64/jli/libjli.so (0x7f542e9a0000)
22 | libdl.so.2 => /lib64/ld-linux-x86-64.so.2 (0x7f542ebb5000)
23 | libc.so.6 => /lib64/ld-linux-x86-64.so.2 (0x7f542ebb5000)
24 | Error relocating bin/../lib/amd64/jli/libjli.so: __rawmemchr: symbol not found
25 | ```
26 |
27 | In this case, the upstream would need to remove the support for this offending symbol or have the ability to compile the software natively on musl libc. Be sure to check the [Alpine Linux package index](http://pkgs.alpinelinux.org/packages) to see if a suitable replacement package already exists.
28 |
--------------------------------------------------------------------------------
/docs/index.md:
--------------------------------------------------------------------------------
1 | # Alpine Linux Docker Image
2 |
3 | [](https://circleci.com/gh/gliderlabs/docker-alpine)
4 | [][hub]
5 | [][hub]
6 | [][slack]
7 |
8 |
9 | Welcome to the documentation for the Alpine Linux Docker Image. Here we explain a bit about the motivations behind this image, how you typically use it, the build process, and how to make great minimalist containers!
10 |
11 | ## About
12 |
13 | The heart of this image is [Alpine Linux][alpine]. The image is only 5 MB and has access to a package repository that is much more complete than other minimal base images. Learn more [about this image][about], musl libc, BusyBox, and why the Docker Alpine Linux image makes a great base for your Docker projects.
14 |
15 | ## Official
16 |
17 | This image serves as the source for the [official Alpine Linux image in the Docker Library][library]. The build process for both official `alpine` and `gliderlabs/alpine` are the same. However, different build options are used for the official library images. Check out [the build page][build] for more information on differences.
18 |
19 | ## Motivations
20 |
21 | Docker images today are big. Usually much larger than they need to be. There are a lot of ways to make them smaller. But you need to start with a small base. There are great size savings to be had when compared to base images such as `ubuntu`, `centos`, and `debian`.
22 |
23 | ## Usage
24 |
25 | You use the `apk` command to manage packages. We don't ship the image with a package index (since that can go stale fairly quickly), so you need to add the `--update-cache` flag to `apk` when installing. An example installing the `nginx` package would be `apk add --update-cache nginx`. Check out [the usage page][usage] for more advanced usage and `Dockerfile` examples.
26 |
27 | ## Caveats
28 |
29 | The musl libc implementation may work a little different than you are used to. One example of this is with DNS. musl libc does not use `domain` or `search` in the `/etc/resolv.conf` file. It also queries name servers in parallel which can be problematic if your first name server has a different DNS view (such as service discovery through DNS). We have [a page dedicated to the caveats][caveats] you should be aware of.
30 |
31 | ## Build
32 |
33 | This image is built and tested in a continuous integration environment using the `build` script. We then push the resulting images directly to Docker Hub. Check out [the page on building and testing][build] the images for more information.
34 |
35 | ## Contacts
36 |
37 | We make reasonable efforts to support our work and are always happy to chat. Join us in [our Slack community][slack] or [submit a GitHub issue][issues] if you have a security or other general question about this Docker image. Please email [security](http://lists.alpinelinux.org/alpine-security/summary.html) or [user](http://lists.alpinelinux.org/alpine-user/summary.html) mailing lists if you have concerns specific to Alpine Linux.
38 |
39 | ## Contributing
40 |
41 | We welcome contributions to the image build process, version bumps, and other optimizations. The image gets built and pushed from the `release` branch automatically. Once a pull request is merged, a build will be kicked off, and resulting image pushed to Docker Hub in a matter of minutes!
42 |
43 | ## Sponsors
44 |
45 | [][fastly]
46 |
47 | [Fastly][fastly] provides the CDN for our Alpine Linux package repository. This allows super speedy package downloads from all over the globe!
48 |
49 | [about]: /docker-alpine/about
50 | [usage]: /docker-alpine/usage
51 | [build]: /docker-alpine/build
52 | [caveats]: /docker-alpine/caveats
53 | [slack]: http://glider-slackin.herokuapp.com/
54 | [issues]: https://github.com/gliderlabs/docker-alpine/issues
55 | [alpine]: http://alpinelinux.org/
56 | [library]: https://github.com/docker-library/official-images/blob/master/library/alpine
57 | [fastly]: https://www.fastly.com/
58 | [hub]: https://hub.docker.com/r/gliderlabs/alpine/
59 |
--------------------------------------------------------------------------------
/docs/usage.md:
--------------------------------------------------------------------------------
1 | # Usage
2 |
3 | ## Packages
4 |
5 | Replacing your current base image with the Docker Alpine Linux image usually requires updating the package names to the corresponding ones in the [Alpine Linux package index][packageindex]. We use the `apk` command to manage packages. It works similar to `apt` or `yum`.
6 |
7 | An example installing the `nginx` package would be `apk add --update-cache nginx`. The `--update-cache` flag fetches the current package index before adding the package. We don't ship the image with a package index (since that can go stale fairly quickly).
8 |
9 | ## Example
10 |
11 | Here is a full example `Dockerfile` that installs the Python runtime and some build dependencies:
12 |
13 | ```
14 | FROM gliderlabs/alpine:3.3
15 |
16 | RUN apk add --update-cache \
17 | python \
18 | python-dev \
19 | py-pip \
20 | build-base \
21 | && pip install virtualenv \
22 | && rm -rf /var/cache/apk/*
23 |
24 | WORKDIR /app
25 |
26 | ONBUILD COPY . /app
27 | ONBUILD RUN virtualenv /env && /env/bin/pip install -r /app/requirements.txt
28 |
29 | EXPOSE 8080
30 | CMD ["/env/bin/python", "main.py"]
31 | ```
32 |
33 | ## Disabling Cache
34 |
35 | As of Alpine Linux 3.3 there exists a new `--no-cache` option for `apk`. It allows users to install packages with an index that is updated and used on-the-fly and not cached locally:
36 |
37 | ```
38 | FROM gliderlabs/alpine:3.3
39 |
40 | RUN apk --no-cache add nginx
41 |
42 | EXPOSE 80
43 | CMD ["nginx", "-g", "daemon off;"]
44 | ```
45 |
46 | This avoids the need to use `--update-cache` and remove `/var/cache/apk/*` when done installing packages.
47 |
48 | ## Convenience Cleanup
49 |
50 | The `gliderlabs` variant of this image contains a small unofficial wrapper script that assists in the cleanup of the package index after installing packages. However, this functionality is now available in the upstream `apk` utility as of Alpine version 3.2 (using `apk --no-cache`). This script may be removed from the `gliderlabs/alpine` images in the future.
51 |
52 | ## Virtual Packages
53 |
54 | Another great `apk add` feature for cleanup is the concept of virtual packages using the `--virtual` or `-t` switch. Packages added under this virtual name can then be removed as one group. An example use of this would be removing a group of build dependencies all at once:
55 |
56 | ```
57 | FROM gliderlabs/alpine:3.3
58 |
59 | WORKDIR /myapp
60 | COPY . /myapp
61 |
62 | RUN apk --update-cache add python py-pip openssl ca-certificates
63 | RUN apk --update-cache add --virtual build-dependencies python-dev build-base wget \
64 | && pip install -r requirements.txt \
65 | && python setup.py install \
66 | && apk del build-dependencies
67 |
68 | CMD ["myapp", "start"]
69 | ```
70 |
71 | ## Additional Information
72 |
73 | Check out the [Alpine Linux package management documentation][apk] for more information and usage of `apk`.
74 |
75 | [apk]: http://wiki.alpinelinux.org/wiki/Alpine_Linux_package_management#Update_the_Package_list
76 | [packageindex]: http://pkgs.alpinelinux.org/packages
77 |
--------------------------------------------------------------------------------
/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gliderlabs/docker-alpine/25d285ff5901c40b3e655995a17ee9c4e1590af6/logo.png
--------------------------------------------------------------------------------
/logo_fastly.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gliderlabs/docker-alpine/25d285ff5901c40b3e655995a17ee9c4e1590af6/logo_fastly.png
--------------------------------------------------------------------------------
/test/test_alpine-3.1.bats:
--------------------------------------------------------------------------------
1 | setup() {
2 | docker history "alpine:3.1" >/dev/null 2>&1
3 | }
4 |
5 | @test "version is correct" {
6 | run docker run "alpine:3.1" cat /etc/os-release
7 | [ $status -eq 0 ]
8 | [ "${lines[2]}" = "VERSION_ID=3.1.4" ]
9 | }
10 |
11 | @test "package installs cleanly" {
12 | run docker run "alpine:3.1" apk add --update-cache openssl
13 | [ $status -eq 0 ]
14 | }
15 |
16 | @test "timezone" {
17 | run docker run "alpine:3.1" date +%Z
18 | [ $status -eq 0 ]
19 | [ "$output" = "UTC" ]
20 | }
21 |
22 | @test "apk-install script should be missing" {
23 | run docker run "alpine:3.1" which apk-install
24 | [ $status -eq 1 ]
25 | }
26 |
27 | @test "repository list is correct" {
28 | run docker run "alpine:3.1" cat /etc/apk/repositories
29 | [ $status -eq 0 ]
30 | [ "${lines[0]}" = "http://dl-cdn.alpinelinux.org/alpine/v3.1/main" ]
31 | [ "${lines[1]}" = "" ]
32 | }
33 |
34 | @test "cache is empty" {
35 | run docker run "alpine:3.1" sh -c "ls -1 /var/cache/apk | wc -l"
36 | [ $status -eq 0 ]
37 | [ "$output" = "0" ]
38 | }
39 |
40 | @test "root password is disabled" {
41 | run docker run --user nobody "alpine:3.1" su
42 | [ $status -eq 1 ]
43 | }
44 |
45 | @test "CVE-2016-2183, CVE-2016-6304, CVE-2016-6306" {
46 | run docker run alpine:3.1 sh -c 'apk version -t $(apk info -v | grep ^libssl | cut -d- -f2-) 1.0.1u-r0 | grep -q "[=>]"'
47 | [ $status -eq 0 ]
48 | }
49 |
50 |
--------------------------------------------------------------------------------
/test/test_alpine-3.2.bats:
--------------------------------------------------------------------------------
1 | setup() {
2 | docker history "alpine:3.2" >/dev/null 2>&1
3 | }
4 |
5 | @test "version is correct" {
6 | run docker run "alpine:3.2" cat /etc/os-release
7 | [ $status -eq 0 ]
8 | [ "${lines[2]}" = "VERSION_ID=3.2.3" ]
9 | }
10 |
11 | @test "package installs cleanly" {
12 | run docker run "alpine:3.2" apk add --update-cache openssl
13 | [ $status -eq 0 ]
14 | }
15 |
16 | @test "timezone" {
17 | run docker run "alpine:3.2" date +%Z
18 | [ $status -eq 0 ]
19 | [ "$output" = "UTC" ]
20 | }
21 |
22 | @test "apk-install script should be missing" {
23 | run docker run "alpine:3.2" which apk-install
24 | [ $status -eq 1 ]
25 | }
26 |
27 | @test "repository list is correct" {
28 | run docker run "alpine:3.2" cat /etc/apk/repositories
29 | [ $status -eq 0 ]
30 | [ "${lines[0]}" = "http://dl-cdn.alpinelinux.org/alpine/v3.2/main" ]
31 | [ "${lines[1]}" = "" ]
32 | }
33 |
34 | @test "cache is empty" {
35 | run docker run "alpine:3.2" sh -c "ls -1 /var/cache/apk | wc -l"
36 | [ $status -eq 0 ]
37 | [ "$output" = "0" ]
38 | }
39 |
40 | @test "root password is disabled" {
41 | run docker run --user nobody "alpine:3.2" su
42 | [ $status -eq 1 ]
43 | }
44 |
45 | @test "CVE-2016-2183, CVE-2016-6304, CVE-2016-6306" {
46 | run docker run alpine:3.2 sh -c 'apk version -t $(apk info -v | grep ^libssl | cut -d- -f2-) 1.0.2i-r0 | grep -q "[=>]"'
47 | [ $status -eq 0 ]
48 | }
49 |
50 | @test "CVE-2016-7052" {
51 | run docker run alpine:3.2 sh -c 'apk version -t $(apk info -v | grep ^libssl | cut -d- -f2-) 1.0.2j-r0 | grep -q "[=>]"'
52 | [ $status -eq 0 ]
53 | }
54 |
55 |
--------------------------------------------------------------------------------
/test/test_alpine-3.3.bats:
--------------------------------------------------------------------------------
1 | setup() {
2 | docker history alpine:3.3 >/dev/null 2>&1
3 | }
4 |
5 | @test "version is correct" {
6 | run docker run alpine:3.3 cat /etc/os-release
7 | [ $status -eq 0 ]
8 | [ "${lines[2]}" = "VERSION_ID=3.3.3" ]
9 | }
10 |
11 | @test "package installs cleanly" {
12 | run docker run alpine:3.3 apk add --update-cache openssl
13 | [ $status -eq 0 ]
14 | }
15 |
16 | @test "timezone" {
17 | run docker run alpine:3.3 date +%Z
18 | [ $status -eq 0 ]
19 | [ "$output" = "UTC" ]
20 | }
21 |
22 | @test "apk-install script should be missing" {
23 | run docker run alpine:3.3 which apk-install
24 | [ $status -eq 1 ]
25 | }
26 |
27 | @test "repository list is correct" {
28 | run docker run alpine:3.3 cat /etc/apk/repositories
29 | [ $status -eq 0 ]
30 | [ "${lines[0]}" = "http://dl-cdn.alpinelinux.org/alpine/v3.3/main" ]
31 | [ "${lines[1]}" = "http://dl-cdn.alpinelinux.org/alpine/v3.3/community" ]
32 | [ "${lines[2]}" = "" ]
33 | }
34 |
35 | @test "cache is empty" {
36 | run docker run alpine:3.3 sh -c "ls -1 /var/cache/apk | wc -l"
37 | [ $status -eq 0 ]
38 | [ "$output" = "0" ]
39 | }
40 |
41 | @test "root password is disabled" {
42 | run docker run --user nobody alpine:3.3 su
43 | [ $status -eq 1 ]
44 | }
45 |
46 | @test "CVE-2016-2183, CVE-2016-6304, CVE-2016-6306" {
47 | run docker run alpine:3.3 sh -c 'apk version -t $(apk info -v | grep ^libssl | cut -d- -f2-) 1.0.2i-r0 | grep -q "[=>]"'
48 | [ $status -eq 0 ]
49 | }
50 |
51 | @test "CVE-2016-7052" {
52 | run docker run alpine:3.3 sh -c 'apk version -t $(apk info -v | grep ^libssl | cut -d- -f2-) 1.0.2j-r0 | grep -q "[=>]"'
53 | [ $status -eq 0 ]
54 | }
55 |
56 | @test "/dev/null should be missing" {
57 | run sh -c "docker export $(docker create alpine:3.3) | tar -t dev/null"
58 | [ "$output" != "dev/null" ]
59 | [ $status -ne 0 ]
60 | }
61 |
--------------------------------------------------------------------------------
/test/test_alpine-3.4.bats:
--------------------------------------------------------------------------------
1 | setup() {
2 | docker history alpine:3.4 >/dev/null 2>&1
3 | }
4 |
5 | @test "version is correct" {
6 | run docker run alpine:3.4 cat /etc/os-release
7 | [ $status -eq 0 ]
8 | [ "${lines[2]}" = "VERSION_ID=3.4.6" ]
9 | }
10 |
11 | @test "package installs cleanly" {
12 | run docker run alpine:3.4 apk add --update-cache openssl
13 | [ $status -eq 0 ]
14 | }
15 |
16 | @test "timezone" {
17 | run docker run alpine:3.4 date +%Z
18 | [ $status -eq 0 ]
19 | [ "$output" = "UTC" ]
20 | }
21 |
22 | @test "apk-install script should be missing" {
23 | run docker run alpine:3.4 which apk-install
24 | [ $status -eq 1 ]
25 | }
26 |
27 | @test "repository list is correct" {
28 | run docker run alpine:3.4 cat /etc/apk/repositories
29 | [ $status -eq 0 ]
30 | [ "${lines[0]}" = "http://dl-cdn.alpinelinux.org/alpine/v3.4/main" ]
31 | [ "${lines[1]}" = "http://dl-cdn.alpinelinux.org/alpine/v3.4/community" ]
32 | [ "${lines[2]}" = "" ]
33 | }
34 |
35 | @test "cache is empty" {
36 | run docker run alpine:3.4 sh -c "ls -1 /var/cache/apk | wc -l"
37 | [ $status -eq 0 ]
38 | [ "$output" = "0" ]
39 | }
40 |
41 | @test "root password is disabled" {
42 | run docker run --user nobody alpine:3.4 su
43 | [ $status -eq 1 ]
44 | }
45 |
46 | @test "CVE-2016-2183, CVE-2016-6304, CVE-2016-6306" {
47 | run docker run alpine:3.4 sh -c 'apk version -t $(apk info -v | grep ^libssl | cut -d- -f2-) 1.0.2i-r0 | grep -q "[=>]"'
48 | [ $status -eq 0 ]
49 | }
50 |
51 | @test "CVE-2016-7052" {
52 | run docker run alpine:3.4 sh -c 'apk version -t $(apk info -v | grep ^libssl | cut -d- -f2-) 1.0.2j-r0 | grep -q "[=>]"'
53 | [ $status -eq 0 ]
54 | }
55 |
56 | @test "/dev/null should be missing" {
57 | run sh -c "docker export $(docker create alpine:3.4) | tar -t dev/null"
58 | [ "$output" != "dev/null" ]
59 | [ $status -ne 0 ]
60 | }
61 |
--------------------------------------------------------------------------------
/test/test_alpine-3.5.bats:
--------------------------------------------------------------------------------
1 | setup() {
2 | docker history alpine:3.5 >/dev/null 2>&1
3 | }
4 |
5 | @test "version is correct" {
6 | run docker run alpine:3.5 cat /etc/os-release
7 | [ $status -eq 0 ]
8 | [ "${lines[2]}" = "VERSION_ID=3.5.3" ]
9 | }
10 |
11 | @test "package installs cleanly" {
12 | run docker run alpine:3.5 apk add --no-cache libressl
13 | [ $status -eq 0 ]
14 | }
15 |
16 | @test "timezone" {
17 | run docker run alpine:3.5 date +%Z
18 | [ $status -eq 0 ]
19 | [ "$output" = "UTC" ]
20 | }
21 |
22 | @test "apk-install script should be missing" {
23 | run docker run alpine:3.5 which apk-install
24 | [ $status -eq 1 ]
25 | }
26 |
27 | @test "repository list is correct" {
28 | run docker run alpine:3.5 cat /etc/apk/repositories
29 | [ $status -eq 0 ]
30 | [ "${lines[0]}" = "http://dl-cdn.alpinelinux.org/alpine/v3.5/main" ]
31 | [ "${lines[1]}" = "http://dl-cdn.alpinelinux.org/alpine/v3.5/community" ]
32 | [ "${lines[2]}" = "" ]
33 | }
34 |
35 | @test "cache is empty" {
36 | run docker run alpine:3.5 sh -c "ls -1 /var/cache/apk | wc -l"
37 | [ $status -eq 0 ]
38 | [ "$output" = "0" ]
39 | }
40 |
41 | @test "root password is disabled" {
42 | run docker run --user nobody alpine:3.5 su
43 | [ $status -eq 1 ]
44 | }
45 |
46 | @test "/dev/null should be missing" {
47 | run sh -c "docker export $(docker create alpine:3.5) | tar -t dev/null"
48 | [ "$output" != "dev/null" ]
49 | [ $status -ne 0 ]
50 | }
51 |
--------------------------------------------------------------------------------
/test/test_alpine-3.6.bats:
--------------------------------------------------------------------------------
1 | setup() {
2 | docker history alpine:3.6 >/dev/null 2>&1
3 | }
4 |
5 | @test "version is correct" {
6 | run docker run alpine:3.6 cat /etc/os-release
7 | [ $status -eq 0 ]
8 | [ "${lines[2]}" = "VERSION_ID=3.6.5" ]
9 | }
10 |
11 | @test "package installs cleanly" {
12 | run docker run alpine:3.6 apk add --no-cache libressl
13 | [ $status -eq 0 ]
14 | }
15 |
16 | @test "timezone" {
17 | run docker run alpine:3.6 date +%Z
18 | [ $status -eq 0 ]
19 | [ "$output" = "UTC" ]
20 | }
21 |
22 | @test "apk-install script should be missing" {
23 | run docker run alpine:3.6 which apk-install
24 | [ $status -eq 1 ]
25 | }
26 |
27 | @test "repository list is correct" {
28 | run docker run alpine:3.6 cat /etc/apk/repositories
29 | [ $status -eq 0 ]
30 | [ "${lines[0]}" = "http://dl-cdn.alpinelinux.org/alpine/v3.6/main" ]
31 | [ "${lines[1]}" = "http://dl-cdn.alpinelinux.org/alpine/v3.6/community" ]
32 | [ "${lines[2]}" = "" ]
33 | }
34 |
35 | @test "cache is empty" {
36 | run docker run alpine:3.6 sh -c "ls -1 /var/cache/apk | wc -l"
37 | [ $status -eq 0 ]
38 | [ "$output" = "0" ]
39 | }
40 |
41 | @test "root password is disabled" {
42 | run docker run --user nobody alpine:3.6 su
43 | [ $status -eq 1 ]
44 | }
45 |
46 | @test "/dev/null should be missing" {
47 | run sh -c "docker export $(docker create alpine:3.6) | tar -t dev/null"
48 | [ "$output" != "dev/null" ]
49 | [ $status -ne 0 ]
50 | }
51 |
--------------------------------------------------------------------------------
/test/test_alpine-3.7.bats:
--------------------------------------------------------------------------------
1 | setup() {
2 | docker history alpine:3.7 >/dev/null 2>&1
3 | }
4 |
5 | @test "version is correct" {
6 | run docker run alpine:3.7 cat /etc/os-release
7 | [ $status -eq 0 ]
8 | [ "${lines[2]}" = "VERSION_ID=3.7.3" ]
9 | }
10 |
11 | @test "package installs cleanly" {
12 | run docker run alpine:3.7 apk add --no-cache libressl
13 | [ $status -eq 0 ]
14 | }
15 |
16 | @test "timezone" {
17 | run docker run alpine:3.7 date +%Z
18 | [ $status -eq 0 ]
19 | [ "$output" = "UTC" ]
20 | }
21 |
22 | @test "apk-install script should be missing" {
23 | run docker run alpine:3.7 which apk-install
24 | [ $status -eq 1 ]
25 | }
26 |
27 | @test "repository list is correct" {
28 | run docker run alpine:3.7 cat /etc/apk/repositories
29 | [ $status -eq 0 ]
30 | [ "${lines[0]}" = "http://dl-cdn.alpinelinux.org/alpine/v3.7/main" ]
31 | [ "${lines[1]}" = "http://dl-cdn.alpinelinux.org/alpine/v3.7/community" ]
32 | [ "${lines[2]}" = "" ]
33 | }
34 |
35 | @test "cache is empty" {
36 | run docker run alpine:3.7 sh -c "ls -1 /var/cache/apk | wc -l"
37 | [ $status -eq 0 ]
38 | [ "$output" = "0" ]
39 | }
40 |
41 | @test "root password is disabled" {
42 | run docker run --user nobody alpine:3.7 su
43 | [ $status -eq 1 ]
44 | }
45 |
46 | @test "/dev/null should be missing" {
47 | run sh -c "docker export $(docker create alpine:3.7) | tar -t dev/null"
48 | [ "$output" != "dev/null" ]
49 | [ $status -ne 0 ]
50 | }
51 |
--------------------------------------------------------------------------------
/test/test_alpine-3.8.bats:
--------------------------------------------------------------------------------
1 | setup() {
2 | docker history alpine:3.8 >/dev/null 2>&1
3 | }
4 |
5 | @test "version is correct" {
6 | run docker run alpine:3.8 cat /etc/os-release
7 | [ $status -eq 0 ]
8 | [ "${lines[2]}" = "VERSION_ID=3.8.5" ]
9 | }
10 |
11 | @test "package installs cleanly" {
12 | run docker run alpine:3.8 apk add --no-cache libressl
13 | [ $status -eq 0 ]
14 | }
15 |
16 | @test "timezone" {
17 | run docker run alpine:3.8 date +%Z
18 | [ $status -eq 0 ]
19 | [ "$output" = "UTC" ]
20 | }
21 |
22 | @test "apk-install script should be missing" {
23 | run docker run alpine:3.8 which apk-install
24 | [ $status -eq 1 ]
25 | }
26 |
27 | @test "repository list is correct" {
28 | run docker run alpine:3.8 cat /etc/apk/repositories
29 | [ $status -eq 0 ]
30 | [ "${lines[0]}" = "http://dl-cdn.alpinelinux.org/alpine/v3.8/main" ]
31 | [ "${lines[1]}" = "http://dl-cdn.alpinelinux.org/alpine/v3.8/community" ]
32 | [ "${lines[2]}" = "" ]
33 | }
34 |
35 | @test "cache is empty" {
36 | run docker run alpine:3.8 sh -c "ls -1 /var/cache/apk | wc -l"
37 | [ $status -eq 0 ]
38 | [ "$output" = "0" ]
39 | }
40 |
41 | @test "root password is disabled" {
42 | run docker run --user nobody alpine:3.8 su
43 | [ $status -eq 1 ]
44 | }
45 |
46 | @test "/dev/null should be missing" {
47 | run sh -c "docker export $(docker create alpine:3.8) | tar -t dev/null"
48 | [ "$output" != "dev/null" ]
49 | [ $status -ne 0 ]
50 | }
51 |
--------------------------------------------------------------------------------
/test/test_alpine-3.9.bats:
--------------------------------------------------------------------------------
1 | setup() {
2 | docker history alpine:3.9 >/dev/null 2>&1
3 | }
4 |
5 | @test "version is correct" {
6 | run docker run alpine:3.9 cat /etc/os-release
7 | [ $status -eq 0 ]
8 | [ "${lines[2]}" = "VERSION_ID=3.9.5" ]
9 | }
10 |
11 | @test "package installs cleanly" {
12 | run docker run alpine:3.9 apk add --no-cache libressl
13 | [ $status -eq 0 ]
14 | }
15 |
16 | @test "timezone" {
17 | run docker run alpine:3.9 date +%Z
18 | [ $status -eq 0 ]
19 | [ "$output" = "UTC" ]
20 | }
21 |
22 | @test "apk-install script should be missing" {
23 | run docker run alpine:3.9 which apk-install
24 | [ $status -eq 1 ]
25 | }
26 |
27 | @test "repository list is correct" {
28 | run docker run alpine:3.9 cat /etc/apk/repositories
29 | [ $status -eq 0 ]
30 | [ "${lines[0]}" = "http://dl-cdn.alpinelinux.org/alpine/v3.9/main" ]
31 | [ "${lines[1]}" = "http://dl-cdn.alpinelinux.org/alpine/v3.9/community" ]
32 | [ "${lines[2]}" = "" ]
33 | }
34 |
35 | @test "cache is empty" {
36 | run docker run alpine:3.9 sh -c "ls -1 /var/cache/apk | wc -l"
37 | [ $status -eq 0 ]
38 | [ "$output" = "0" ]
39 | }
40 |
41 | @test "root password is disabled" {
42 | run docker run --user nobody alpine:3.9 su
43 | [ $status -eq 1 ]
44 | }
45 |
46 | @test "/dev/null should be missing" {
47 | run sh -c "docker export $(docker create alpine:3.9) | tar -t dev/null"
48 | [ "$output" != "dev/null" ]
49 | [ $status -ne 0 ]
50 | }
51 |
--------------------------------------------------------------------------------
/test/test_alpine-edge.bats:
--------------------------------------------------------------------------------
1 | setup() {
2 | docker history "alpine:edge" >/dev/null 2>&1
3 | }
4 |
5 | @test "version is correct" {
6 | run docker run "alpine:edge" cat /etc/os-release
7 | [ $status -eq 0 ]
8 | case "${lines[2]}" in
9 | VERSION_ID=3.12*) true;;
10 | *) false;;
11 | esac
12 | }
13 |
14 | @test "package installs cleanly" {
15 | run docker run "alpine:edge" apk add --update-cache openssl
16 | [ $status -eq 0 ]
17 | }
18 |
19 | @test "timezone" {
20 | run docker run "alpine:edge" date +%Z
21 | [ $status -eq 0 ]
22 | [ "$output" = "UTC" ]
23 | }
24 |
25 | @test "apk-install script should be missing" {
26 | run docker run "alpine:edge" which apk-install
27 | [ $status -eq 1 ]
28 | }
29 |
30 | @test "repository list is correct" {
31 | run docker run "alpine:edge" cat /etc/apk/repositories
32 | [ $status -eq 0 ]
33 | [ "${lines[0]}" = "http://dl-cdn.alpinelinux.org/alpine/edge/main" ]
34 | [ "${lines[1]}" = "http://dl-cdn.alpinelinux.org/alpine/edge/community" ]
35 | [ "${lines[2]}" = "" ]
36 | }
37 |
38 | @test "cache is empty" {
39 | run docker run "alpine:edge" sh -c "ls -1 /var/cache/apk | wc -l"
40 | [ $status -eq 0 ]
41 | [ "$output" = "0" ]
42 | }
43 |
44 | @test "root password is disabled" {
45 | run docker run --user nobody "alpine:edge" su
46 | [ $status -eq 1 ]
47 | }
48 |
49 | @test "/dev/null should be missing" {
50 | run sh -c "docker export $(docker create alpine:edge) | tar -t dev/null"
51 | [ "$output" != "dev/null" ]
52 | [ $status -ne 0 ]
53 | }
54 |
--------------------------------------------------------------------------------
/test/test_gliderlabs_alpine-3.1.bats:
--------------------------------------------------------------------------------
1 | setup() {
2 | docker history gliderlabs/alpine:3.1 >/dev/null 2>&1
3 | }
4 |
5 | @test "version is correct" {
6 | run docker run gliderlabs/alpine:3.1 cat /etc/os-release
7 | [ $status -eq 0 ]
8 | [ "${lines[2]}" = "VERSION_ID=3.1.4" ]
9 | }
10 |
11 | @test "package installs cleanly" {
12 | run docker run gliderlabs/alpine:3.1 apk add --update-cache openssl
13 | [ $status -eq 0 ]
14 | }
15 |
16 | @test "timezone" {
17 | run docker run gliderlabs/alpine:3.1 date +%Z
18 | [ $status -eq 0 ]
19 | [ "$output" = "UTC" ]
20 | }
21 |
22 | @test "apk-install script should be available" {
23 | run docker run gliderlabs/alpine:3.1 which apk-install
24 | [ $status -eq 0 ]
25 | }
26 |
27 | @test "repository list is correct" {
28 | run docker run gliderlabs/alpine:3.1 cat /etc/apk/repositories
29 | [ $status -eq 0 ]
30 | [ "${lines[0]}" = "http://alpine.gliderlabs.com/alpine/v3.1/main" ]
31 | [ "${lines[1]}" = "" ]
32 | }
33 |
34 | @test "cache is empty" {
35 | run docker run gliderlabs/alpine:3.1 sh -c "ls -1 /var/cache/apk | wc -l"
36 | [ $status -eq 0 ]
37 | [ "$output" = "0" ]
38 | }
39 |
40 | @test "root password is disabled" {
41 | run docker run --user nobody gliderlabs/alpine:3.1 su
42 | [ $status -eq 1 ]
43 | }
44 |
--------------------------------------------------------------------------------
/test/test_gliderlabs_alpine-3.2.bats:
--------------------------------------------------------------------------------
1 | setup() {
2 | docker history gliderlabs/alpine:3.2 >/dev/null 2>&1
3 | }
4 |
5 | @test "version is correct" {
6 | run docker run gliderlabs/alpine:3.2 cat /etc/os-release
7 | [ $status -eq 0 ]
8 | [ "${lines[2]}" = "VERSION_ID=3.2.3" ]
9 | }
10 |
11 | @test "package installs cleanly" {
12 | run docker run gliderlabs/alpine:3.2 apk add --update-cache openssl
13 | [ $status -eq 0 ]
14 | }
15 |
16 | @test "timezone" {
17 | run docker run gliderlabs/alpine:3.2 date +%Z
18 | [ $status -eq 0 ]
19 | [ "$output" = "UTC" ]
20 | }
21 |
22 | @test "apk-install script should be available" {
23 | run docker run gliderlabs/alpine:3.2 which apk-install
24 | [ $status -eq 0 ]
25 | }
26 |
27 | @test "repository list is correct" {
28 | run docker run gliderlabs/alpine:3.2 cat /etc/apk/repositories
29 | [ $status -eq 0 ]
30 | [ "${lines[0]}" = "http://alpine.gliderlabs.com/alpine/v3.2/main" ]
31 | [ "${lines[1]}" = "" ]
32 | }
33 |
34 | @test "cache is empty" {
35 | run docker run gliderlabs/alpine:3.2 sh -c "ls -1 /var/cache/apk | wc -l"
36 | [ $status -eq 0 ]
37 | [ "$output" = "0" ]
38 | }
39 |
40 | @test "root password is disabled" {
41 | run docker run --user nobody gliderlabs/alpine:3.2 su
42 | [ $status -eq 1 ]
43 | }
44 |
--------------------------------------------------------------------------------
/test/test_gliderlabs_alpine-3.3.bats:
--------------------------------------------------------------------------------
1 | setup() {
2 | docker history gliderlabs/alpine:3.3 >/dev/null 2>&1
3 | }
4 |
5 | @test "version is correct" {
6 | run docker run gliderlabs/alpine:3.3 cat /etc/os-release
7 | [ $status -eq 0 ]
8 | [ "${lines[2]}" = "VERSION_ID=3.3.3" ]
9 | }
10 |
11 | @test "package installs cleanly" {
12 | run docker run gliderlabs/alpine:3.3 apk add --update-cache openssl
13 | [ $status -eq 0 ]
14 | }
15 |
16 | @test "timezone" {
17 | run docker run gliderlabs/alpine:3.3 date +%Z
18 | [ $status -eq 0 ]
19 | [ "$output" = "UTC" ]
20 | }
21 |
22 | @test "apk-install script should be available" {
23 | run docker run gliderlabs/alpine:3.3 which apk-install
24 | [ $status -eq 0 ]
25 | }
26 |
27 | @test "repository list is correct" {
28 | run docker run gliderlabs/alpine:3.3 cat /etc/apk/repositories
29 | [ $status -eq 0 ]
30 | [ "${lines[0]}" = "http://alpine.gliderlabs.com/alpine/v3.3/main" ]
31 | [ "${lines[1]}" = "http://alpine.gliderlabs.com/alpine/v3.3/community" ]
32 | }
33 |
34 | @test "cache is empty" {
35 | run docker run gliderlabs/alpine:3.3 sh -c "ls -1 /var/cache/apk | wc -l"
36 | [ $status -eq 0 ]
37 | [ "$output" = "0" ]
38 | }
39 |
40 | @test "root password is disabled" {
41 | run docker run --user nobody gliderlabs/alpine:3.3 su
42 | [ $status -eq 1 ]
43 | }
44 |
--------------------------------------------------------------------------------
/test/test_gliderlabs_alpine-3.4.bats:
--------------------------------------------------------------------------------
1 | setup() {
2 | docker history gliderlabs/alpine:3.4 >/dev/null 2>&1
3 | }
4 |
5 | @test "version is correct" {
6 | run docker run gliderlabs/alpine:3.4 cat /etc/os-release
7 | [ $status -eq 0 ]
8 | [ "${lines[2]}" = "VERSION_ID=3.4.6" ]
9 | }
10 |
11 | @test "package installs cleanly" {
12 | run docker run gliderlabs/alpine:3.4 apk add --update-cache openssl
13 | [ $status -eq 0 ]
14 | }
15 |
16 | @test "timezone" {
17 | run docker run gliderlabs/alpine:3.4 date +%Z
18 | [ $status -eq 0 ]
19 | [ "$output" = "UTC" ]
20 | }
21 |
22 | @test "apk-install script should be available" {
23 | run docker run gliderlabs/alpine:3.4 which apk-install
24 | [ $status -eq 0 ]
25 | }
26 |
27 | @test "repository list is correct" {
28 | run docker run gliderlabs/alpine:3.4 cat /etc/apk/repositories
29 | [ $status -eq 0 ]
30 | [ "${lines[0]}" = "http://alpine.gliderlabs.com/alpine/v3.4/main" ]
31 | [ "${lines[1]}" = "http://alpine.gliderlabs.com/alpine/v3.4/community" ]
32 | }
33 |
34 | @test "cache is empty" {
35 | run docker run gliderlabs/alpine:3.4 sh -c "ls -1 /var/cache/apk | wc -l"
36 | [ $status -eq 0 ]
37 | [ "$output" = "0" ]
38 | }
39 |
40 | @test "root password is disabled" {
41 | run docker run --user nobody gliderlabs/alpine:3.4 su
42 | [ $status -eq 1 ]
43 | }
44 |
--------------------------------------------------------------------------------
/test/test_gliderlabs_alpine-3.5.bats:
--------------------------------------------------------------------------------
1 | setup() {
2 | docker history gliderlabs/alpine:3.5 >/dev/null 2>&1
3 | }
4 |
5 | @test "version is correct" {
6 | run docker run gliderlabs/alpine:3.5 cat /etc/os-release
7 | [ $status -eq 0 ]
8 | [ "${lines[2]}" = "VERSION_ID=3.5.3" ]
9 | }
10 |
11 | @test "package installs cleanly" {
12 | run docker run gliderlabs/alpine:3.5 apk add --update-cache openssl
13 | [ $status -eq 0 ]
14 | }
15 |
16 | @test "timezone" {
17 | run docker run gliderlabs/alpine:3.5 date +%Z
18 | [ $status -eq 0 ]
19 | [ "$output" = "UTC" ]
20 | }
21 |
22 | @test "apk-install script should be available" {
23 | run docker run gliderlabs/alpine:3.5 which apk-install
24 | [ $status -eq 0 ]
25 | }
26 |
27 | @test "repository list is correct" {
28 | run docker run gliderlabs/alpine:3.5 cat /etc/apk/repositories
29 | [ $status -eq 0 ]
30 | [ "${lines[0]}" = "http://alpine.gliderlabs.com/alpine/v3.5/main" ]
31 | [ "${lines[1]}" = "http://alpine.gliderlabs.com/alpine/v3.5/community" ]
32 | }
33 |
34 | @test "cache is empty" {
35 | run docker run gliderlabs/alpine:3.5 sh -c "ls -1 /var/cache/apk | wc -l"
36 | [ $status -eq 0 ]
37 | [ "$output" = "0" ]
38 | }
39 |
40 | @test "root password is disabled" {
41 | run docker run --user nobody gliderlabs/alpine:3.5 su
42 | [ $status -eq 1 ]
43 | }
44 |
--------------------------------------------------------------------------------
/test/test_gliderlabs_alpine-3.6.bats:
--------------------------------------------------------------------------------
1 | setup() {
2 | docker history gliderlabs/alpine:3.6 >/dev/null 2>&1
3 | }
4 |
5 | @test "version is correct" {
6 | run docker run gliderlabs/alpine:3.6 cat /etc/os-release
7 | [ $status -eq 0 ]
8 | [ "${lines[2]}" = "VERSION_ID=3.6.5" ]
9 | }
10 |
11 | @test "package installs cleanly" {
12 | run docker run gliderlabs/alpine:3.6 apk add --update-cache openssl
13 | [ $status -eq 0 ]
14 | }
15 |
16 | @test "timezone" {
17 | run docker run gliderlabs/alpine:3.6 date +%Z
18 | [ $status -eq 0 ]
19 | [ "$output" = "UTC" ]
20 | }
21 |
22 | @test "apk-install script should be available" {
23 | run docker run gliderlabs/alpine:3.6 which apk-install
24 | [ $status -eq 0 ]
25 | }
26 |
27 | @test "repository list is correct" {
28 | run docker run gliderlabs/alpine:3.6 cat /etc/apk/repositories
29 | [ $status -eq 0 ]
30 | [ "${lines[0]}" = "http://alpine.gliderlabs.com/alpine/v3.6/main" ]
31 | [ "${lines[1]}" = "http://alpine.gliderlabs.com/alpine/v3.6/community" ]
32 | }
33 |
34 | @test "cache is empty" {
35 | run docker run gliderlabs/alpine:3.6 sh -c "ls -1 /var/cache/apk | wc -l"
36 | [ $status -eq 0 ]
37 | [ "$output" = "0" ]
38 | }
39 |
40 | @test "root password is disabled" {
41 | run docker run --user nobody gliderlabs/alpine:3.6 su
42 | [ $status -eq 1 ]
43 | }
44 |
--------------------------------------------------------------------------------
/test/test_gliderlabs_alpine-3.7.bats:
--------------------------------------------------------------------------------
1 | setup() {
2 | docker history gliderlabs/alpine:3.7 >/dev/null 2>&1
3 | }
4 |
5 | @test "version is correct" {
6 | run docker run gliderlabs/alpine:3.7 cat /etc/os-release
7 | [ $status -eq 0 ]
8 | [ "${lines[2]}" = "VERSION_ID=3.7.3" ]
9 | }
10 |
11 | @test "package installs cleanly" {
12 | run docker run gliderlabs/alpine:3.7 apk add --update-cache openssl
13 | [ $status -eq 0 ]
14 | }
15 |
16 | @test "timezone" {
17 | run docker run gliderlabs/alpine:3.7 date +%Z
18 | [ $status -eq 0 ]
19 | [ "$output" = "UTC" ]
20 | }
21 |
22 | @test "apk-install script should be available" {
23 | run docker run gliderlabs/alpine:3.7 which apk-install
24 | [ $status -eq 0 ]
25 | }
26 |
27 | @test "repository list is correct" {
28 | run docker run gliderlabs/alpine:3.7 cat /etc/apk/repositories
29 | [ $status -eq 0 ]
30 | [ "${lines[0]}" = "http://alpine.gliderlabs.com/alpine/v3.7/main" ]
31 | [ "${lines[1]}" = "http://alpine.gliderlabs.com/alpine/v3.7/community" ]
32 | }
33 |
34 | @test "cache is empty" {
35 | run docker run gliderlabs/alpine:3.7 sh -c "ls -1 /var/cache/apk | wc -l"
36 | [ $status -eq 0 ]
37 | [ "$output" = "0" ]
38 | }
39 |
40 | @test "root password is disabled" {
41 | run docker run --user nobody gliderlabs/alpine:3.7 su
42 | [ $status -eq 1 ]
43 | }
44 |
--------------------------------------------------------------------------------
/test/test_gliderlabs_alpine-3.8.bats:
--------------------------------------------------------------------------------
1 | setup() {
2 | docker history gliderlabs/alpine:3.8 >/dev/null 2>&1
3 | }
4 |
5 | @test "version is correct" {
6 | run docker run gliderlabs/alpine:3.8 cat /etc/os-release
7 | [ $status -eq 0 ]
8 | [ "${lines[2]}" = "VERSION_ID=3.8.5" ]
9 | }
10 |
11 | @test "package installs cleanly" {
12 | run docker run gliderlabs/alpine:3.8 apk add --update-cache openssl
13 | [ $status -eq 0 ]
14 | }
15 |
16 | @test "timezone" {
17 | run docker run gliderlabs/alpine:3.8 date +%Z
18 | [ $status -eq 0 ]
19 | [ "$output" = "UTC" ]
20 | }
21 |
22 | @test "apk-install script should be available" {
23 | run docker run gliderlabs/alpine:3.8 which apk-install
24 | [ $status -eq 0 ]
25 | }
26 |
27 | @test "repository list is correct" {
28 | run docker run gliderlabs/alpine:3.8 cat /etc/apk/repositories
29 | [ $status -eq 0 ]
30 | [ "${lines[0]}" = "http://alpine.gliderlabs.com/alpine/v3.8/main" ]
31 | [ "${lines[1]}" = "http://alpine.gliderlabs.com/alpine/v3.8/community" ]
32 | }
33 |
34 | @test "cache is empty" {
35 | run docker run gliderlabs/alpine:3.8 sh -c "ls -1 /var/cache/apk | wc -l"
36 | [ $status -eq 0 ]
37 | [ "$output" = "0" ]
38 | }
39 |
40 | @test "root password is disabled" {
41 | run docker run --user nobody gliderlabs/alpine:3.8 su
42 | [ $status -eq 1 ]
43 | }
44 |
--------------------------------------------------------------------------------
/test/test_gliderlabs_alpine-3.9.bats:
--------------------------------------------------------------------------------
1 | setup() {
2 | docker history gliderlabs/alpine:3.9 >/dev/null 2>&1
3 | }
4 |
5 | @test "version is correct" {
6 | run docker run gliderlabs/alpine:3.9 cat /etc/os-release
7 | [ $status -eq 0 ]
8 | [ "${lines[2]}" = "VERSION_ID=3.9.5" ]
9 | }
10 |
11 | @test "package installs cleanly" {
12 | run docker run gliderlabs/alpine:3.9 apk add --update-cache openssl
13 | [ $status -eq 0 ]
14 | }
15 |
16 | @test "timezone" {
17 | run docker run gliderlabs/alpine:3.9 date +%Z
18 | [ $status -eq 0 ]
19 | [ "$output" = "UTC" ]
20 | }
21 |
22 | @test "apk-install script should be available" {
23 | run docker run gliderlabs/alpine:3.9 which apk-install
24 | [ $status -eq 0 ]
25 | }
26 |
27 | @test "repository list is correct" {
28 | run docker run gliderlabs/alpine:3.9 cat /etc/apk/repositories
29 | [ $status -eq 0 ]
30 | [ "${lines[0]}" = "http://alpine.gliderlabs.com/alpine/v3.9/main" ]
31 | [ "${lines[1]}" = "http://alpine.gliderlabs.com/alpine/v3.9/community" ]
32 | }
33 |
34 | @test "cache is empty" {
35 | run docker run gliderlabs/alpine:3.9 sh -c "ls -1 /var/cache/apk | wc -l"
36 | [ $status -eq 0 ]
37 | [ "$output" = "0" ]
38 | }
39 |
40 | @test "root password is disabled" {
41 | run docker run --user nobody gliderlabs/alpine:3.9 su
42 | [ $status -eq 1 ]
43 | }
44 |
--------------------------------------------------------------------------------
/test/test_gliderlabs_alpine-edge.bats:
--------------------------------------------------------------------------------
1 | setup() {
2 | docker history gliderlabs/alpine:edge >/dev/null 2>&1
3 | }
4 |
5 | @test "version is correct" {
6 | run docker run gliderlabs/alpine:edge cat /etc/os-release
7 | [ $status -eq 0 ]
8 | case "${lines[2]}" in
9 | VERSION_ID=3.12*) true;;
10 | *) false;;
11 | esac
12 | }
13 |
14 | @test "package installs cleanly" {
15 | run docker run gliderlabs/alpine:edge apk add --update-cache openssl
16 | [ $status -eq 0 ]
17 | }
18 |
19 | @test "timezone" {
20 | run docker run gliderlabs/alpine:edge date +%Z
21 | [ $status -eq 0 ]
22 | [ "$output" = "UTC" ]
23 | }
24 |
25 | @test "apk-install script should be available" {
26 | run docker run gliderlabs/alpine:edge which apk-install
27 | [ $status -eq 0 ]
28 | }
29 |
30 | @test "repository list is correct" {
31 | run docker run gliderlabs/alpine:edge cat /etc/apk/repositories
32 | [ $status -eq 0 ]
33 | [ "${lines[0]}" = "http://alpine.gliderlabs.com/alpine/edge/main" ]
34 | [ "${lines[1]}" = "http://alpine.gliderlabs.com/alpine/edge/community" ]
35 | [ "${lines[2]}" = "" ]
36 | }
37 |
38 | @test "cache is empty" {
39 | run docker run gliderlabs/alpine:edge sh -c "ls -1 /var/cache/apk | wc -l"
40 | [ $status -eq 0 ]
41 | [ "$output" = "0" ]
42 | }
43 |
44 | @test "root password is disabled" {
45 | run docker run --user nobody gliderlabs/alpine:edge su
46 | [ $status -eq 1 ]
47 | }
48 |
--------------------------------------------------------------------------------
/versions/gliderlabs-3.1/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM scratch
2 | ADD rootfs.tar.xz /
3 | CMD ["/bin/sh"]
4 |
--------------------------------------------------------------------------------
/versions/gliderlabs-3.1/options:
--------------------------------------------------------------------------------
1 | export RELEASE="v3.1"
2 | export MIRROR="http://alpine.gliderlabs.com/alpine"
3 | export BUILD_OPTIONS=(-d -s -E -c -t UTC -r $RELEASE -m $MIRROR)
4 | export TAGS=(gliderlabs/alpine:3.1)
5 | export PUSH_IMAGE="true"
6 |
--------------------------------------------------------------------------------
/versions/gliderlabs-3.2/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM scratch
2 | ADD rootfs.tar.xz /
3 | CMD ["/bin/sh"]
4 |
--------------------------------------------------------------------------------
/versions/gliderlabs-3.2/options:
--------------------------------------------------------------------------------
1 | export RELEASE="v3.2"
2 | export MIRROR="http://alpine.gliderlabs.com/alpine"
3 | export BUILD_OPTIONS=(-d -s -E -c -t UTC -r $RELEASE -m $MIRROR)
4 | export TAGS=(gliderlabs/alpine:3.2)
5 | export PUSH_IMAGE="true"
6 |
--------------------------------------------------------------------------------
/versions/gliderlabs-3.3/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM scratch
2 | ADD rootfs.tar.xz /
3 | CMD ["/bin/sh"]
4 |
--------------------------------------------------------------------------------
/versions/gliderlabs-3.3/options:
--------------------------------------------------------------------------------
1 | export RELEASE="v3.3"
2 | export MIRROR="http://alpine.gliderlabs.com/alpine"
3 | export PACKAGES="alpine-baselayout,alpine-keys,apk-tools,libc-utils"
4 | export BUILD_OPTIONS=(-b -s -c -t UTC -r $RELEASE -m $MIRROR -p $PACKAGES)
5 | export TAGS=(gliderlabs/alpine:3.3)
6 | export PUSH_IMAGE="true"
7 |
--------------------------------------------------------------------------------
/versions/gliderlabs-3.4/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM scratch
2 | ADD rootfs.tar.xz /
3 | CMD ["/bin/sh"]
4 |
--------------------------------------------------------------------------------
/versions/gliderlabs-3.4/options:
--------------------------------------------------------------------------------
1 | export RELEASE="v3.4"
2 | export MIRROR="http://alpine.gliderlabs.com/alpine"
3 | export PACKAGES="alpine-baselayout,alpine-keys,apk-tools,libc-utils"
4 | export BUILD_OPTIONS=(-b -s -c -t UTC -r $RELEASE -m $MIRROR -p $PACKAGES)
5 | export TAGS=(gliderlabs/alpine:3.4)
6 | export PUSH_IMAGE="true"
7 |
--------------------------------------------------------------------------------
/versions/gliderlabs-3.5/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM scratch
2 | ADD rootfs.tar.xz /
3 | CMD ["/bin/sh"]
4 |
--------------------------------------------------------------------------------
/versions/gliderlabs-3.5/options:
--------------------------------------------------------------------------------
1 | export RELEASE="v3.5"
2 | export MIRROR="http://alpine.gliderlabs.com/alpine"
3 | export PACKAGES="alpine-baselayout,alpine-keys,apk-tools,libc-utils"
4 | export BUILD_OPTIONS=(-b -s -c -t UTC -r $RELEASE -m $MIRROR -p $PACKAGES)
5 | export TAGS=(gliderlabs/alpine:3.5)
6 | export PUSH_IMAGE="true"
7 |
--------------------------------------------------------------------------------
/versions/gliderlabs-3.6/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM scratch
2 | ADD rootfs.tar.xz /
3 | CMD ["/bin/sh"]
4 |
--------------------------------------------------------------------------------
/versions/gliderlabs-3.6/options:
--------------------------------------------------------------------------------
1 | export RELEASE="v3.6"
2 | export MIRROR="http://alpine.gliderlabs.com/alpine"
3 | export PACKAGES="alpine-baselayout,alpine-keys,apk-tools,libc-utils"
4 | export BUILD_OPTIONS=(-b -s -c -t UTC -r $RELEASE -m $MIRROR -p $PACKAGES)
5 | export TAGS=(gliderlabs/alpine:3.6)
6 | export PUSH_IMAGE="true"
7 |
--------------------------------------------------------------------------------
/versions/gliderlabs-3.7/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM scratch
2 | ADD rootfs.tar.xz /
3 | CMD ["/bin/sh"]
4 |
--------------------------------------------------------------------------------
/versions/gliderlabs-3.7/options:
--------------------------------------------------------------------------------
1 | export RELEASE="v3.7"
2 | export MIRROR="http://alpine.gliderlabs.com/alpine"
3 | export PACKAGES="alpine-baselayout,alpine-keys,apk-tools,libc-utils"
4 | export BUILD_OPTIONS=(-b -s -c -t UTC -r $RELEASE -m $MIRROR -p $PACKAGES)
5 | export TAGS=(gliderlabs/alpine:3.7)
6 | export PUSH_IMAGE="true"
7 |
--------------------------------------------------------------------------------
/versions/gliderlabs-3.8/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM scratch
2 | ADD rootfs.tar.xz /
3 | CMD ["/bin/sh"]
4 |
--------------------------------------------------------------------------------
/versions/gliderlabs-3.8/options:
--------------------------------------------------------------------------------
1 | export RELEASE="v3.8"
2 | export MIRROR="http://alpine.gliderlabs.com/alpine"
3 | export PACKAGES="alpine-baselayout,alpine-keys,apk-tools,libc-utils"
4 | export BUILD_OPTIONS=(-b -s -c -t UTC -r $RELEASE -m $MIRROR -p $PACKAGES)
5 | export TAGS=(gliderlabs/alpine:3.8)
6 | export PUSH_IMAGE="true"
7 |
--------------------------------------------------------------------------------
/versions/gliderlabs-3.9/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM scratch
2 | ADD rootfs.tar.xz /
3 | CMD ["/bin/sh"]
4 |
--------------------------------------------------------------------------------
/versions/gliderlabs-3.9/options:
--------------------------------------------------------------------------------
1 | export RELEASE="v3.9"
2 | export MIRROR="http://alpine.gliderlabs.com/alpine"
3 | export PACKAGES="alpine-baselayout,alpine-keys,apk-tools,libc-utils"
4 | export BUILD_OPTIONS=(-b -s -c -t UTC -r $RELEASE -m $MIRROR -p $PACKAGES)
5 | export TAGS=(gliderlabs/alpine:3.9 gliderlabs/alpine:latest)
6 | export PUSH_IMAGE="true"
7 |
--------------------------------------------------------------------------------
/versions/gliderlabs-edge/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM scratch
2 | ADD rootfs.tar.xz /
3 | CMD ["/bin/sh"]
4 |
--------------------------------------------------------------------------------
/versions/gliderlabs-edge/options:
--------------------------------------------------------------------------------
1 | export RELEASE="edge"
2 | export MIRROR="http://alpine.gliderlabs.com/alpine"
3 | export PACKAGES="busybox,alpine-baselayout,apk-tools,alpine-keys,libc-utils"
4 | export BUILD_OPTIONS=(-b -s -c -t UTC -r $RELEASE -m $MIRROR -p $PACKAGES)
5 | export TAGS=(gliderlabs/alpine:edge)
6 | export PUSH_IMAGE="true"
7 |
--------------------------------------------------------------------------------
/versions/library-3.1/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM scratch
2 | ADD rootfs.tar.xz /
3 | CMD ["/bin/sh"]
4 |
--------------------------------------------------------------------------------
/versions/library-3.1/options:
--------------------------------------------------------------------------------
1 | export RELEASE="v3.1"
2 | export MIRROR="http://dl-cdn.alpinelinux.org/alpine"
3 | export BUILD_OPTIONS=(-d -s -E -t UTC -r $RELEASE -m $MIRROR)
4 | export TAGS=(alpine:3.1)
5 |
--------------------------------------------------------------------------------
/versions/library-3.2/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM scratch
2 | ADD rootfs.tar.xz /
3 | CMD ["/bin/sh"]
4 |
--------------------------------------------------------------------------------
/versions/library-3.2/options:
--------------------------------------------------------------------------------
1 | export RELEASE="v3.2"
2 | export MIRROR="http://dl-cdn.alpinelinux.org/alpine"
3 | export BUILD_OPTIONS=(-d -s -E -t UTC -r $RELEASE -m $MIRROR)
4 | export TAGS=(alpine:3.2)
5 |
--------------------------------------------------------------------------------
/versions/library-3.3/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM scratch
2 | ADD rootfs.tar.xz /
3 | CMD ["/bin/sh"]
4 |
--------------------------------------------------------------------------------
/versions/library-3.3/options:
--------------------------------------------------------------------------------
1 | export RELEASE="v3.3"
2 | export MIRROR="http://dl-cdn.alpinelinux.org/alpine"
3 | export PACKAGES="alpine-baselayout,alpine-keys,apk-tools,libc-utils"
4 | export BUILD_OPTIONS=(-b -s -t UTC -r $RELEASE -m $MIRROR -p $PACKAGES)
5 | export TAGS=(alpine:3.3)
6 |
--------------------------------------------------------------------------------
/versions/library-3.4/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM scratch
2 | ADD rootfs.tar.xz /
3 | CMD ["/bin/sh"]
4 |
--------------------------------------------------------------------------------
/versions/library-3.4/options:
--------------------------------------------------------------------------------
1 | export RELEASE="v3.4"
2 | export MIRROR="http://dl-cdn.alpinelinux.org/alpine"
3 | export PACKAGES="alpine-baselayout,alpine-keys,apk-tools,libc-utils"
4 | export BUILD_OPTIONS=(-b -s -t UTC -r $RELEASE -m $MIRROR -p $PACKAGES)
5 | export TAGS=(alpine:3.4)
6 |
--------------------------------------------------------------------------------
/versions/library-3.5/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM scratch
2 | ADD rootfs.tar.xz /
3 | CMD ["/bin/sh"]
4 |
--------------------------------------------------------------------------------
/versions/library-3.5/options:
--------------------------------------------------------------------------------
1 | export RELEASE="v3.5"
2 | export MIRROR="http://dl-cdn.alpinelinux.org/alpine"
3 | export PACKAGES="alpine-baselayout,alpine-keys,apk-tools,libc-utils"
4 | export BUILD_OPTIONS=(-b -s -t UTC -r $RELEASE -m $MIRROR -p $PACKAGES)
5 | export TAGS=(alpine:3.5)
6 |
--------------------------------------------------------------------------------
/versions/library-3.6/aarch64/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM scratch
2 | ADD rootfs.tar.gz /
3 | # ensure UTC instead of the default GMT
4 | COPY UTC /etc/localtime
5 | CMD ["/bin/sh"]
6 |
--------------------------------------------------------------------------------
/versions/library-3.6/aarch64/UTC:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gliderlabs/docker-alpine/25d285ff5901c40b3e655995a17ee9c4e1590af6/versions/library-3.6/aarch64/UTC
--------------------------------------------------------------------------------
/versions/library-3.6/aarch64/options:
--------------------------------------------------------------------------------
1 | export ARCH="aarch64"
2 | export PULL_URL="http://dl-cdn.alpinelinux.org/alpine/v3.6/releases/${ARCH}/alpine-minirootfs-3.6.3-${ARCH}.tar.gz"
3 | export TAGS=(alpine:3.6-${ARCH})
4 |
--------------------------------------------------------------------------------
/versions/library-3.6/armhf/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM scratch
2 | ADD rootfs.tar.gz /
3 | # ensure UTC instead of the default GMT
4 | COPY UTC /etc/localtime
5 | CMD ["/bin/sh"]
6 |
--------------------------------------------------------------------------------
/versions/library-3.6/armhf/UTC:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gliderlabs/docker-alpine/25d285ff5901c40b3e655995a17ee9c4e1590af6/versions/library-3.6/armhf/UTC
--------------------------------------------------------------------------------
/versions/library-3.6/armhf/options:
--------------------------------------------------------------------------------
1 | export ARCH="armhf"
2 | export PULL_URL="http://dl-cdn.alpinelinux.org/alpine/v3.6/releases/${ARCH}/alpine-minirootfs-3.6.3-${ARCH}.tar.gz"
3 | export TAGS=(alpine:3.6-${ARCH})
4 |
--------------------------------------------------------------------------------
/versions/library-3.6/ppc64le/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM scratch
2 | ADD rootfs.tar.gz /
3 | # ensure UTC instead of the default GMT
4 | COPY UTC /etc/localtime
5 | CMD ["/bin/sh"]
6 |
--------------------------------------------------------------------------------
/versions/library-3.6/ppc64le/UTC:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gliderlabs/docker-alpine/25d285ff5901c40b3e655995a17ee9c4e1590af6/versions/library-3.6/ppc64le/UTC
--------------------------------------------------------------------------------
/versions/library-3.6/ppc64le/options:
--------------------------------------------------------------------------------
1 | export ARCH="ppc64le"
2 | export PULL_URL="http://dl-cdn.alpinelinux.org/alpine/v3.6/releases/${ARCH}/alpine-minirootfs-3.6.3-${ARCH}.tar.gz"
3 | export TAGS=(alpine:3.6-${ARCH})
4 |
--------------------------------------------------------------------------------
/versions/library-3.6/s390x/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM scratch
2 | ADD rootfs.tar.gz /
3 | # ensure UTC instead of the default GMT
4 | COPY UTC /etc/localtime
5 | CMD ["/bin/sh"]
6 |
--------------------------------------------------------------------------------
/versions/library-3.6/s390x/UTC:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gliderlabs/docker-alpine/25d285ff5901c40b3e655995a17ee9c4e1590af6/versions/library-3.6/s390x/UTC
--------------------------------------------------------------------------------
/versions/library-3.6/s390x/options:
--------------------------------------------------------------------------------
1 | export ARCH="s390x"
2 | export PULL_URL="http://dl-cdn.alpinelinux.org/alpine/v3.6/releases/${ARCH}/alpine-minirootfs-3.6.3-${ARCH}.tar.gz"
3 | export TAGS=(alpine:3.6-${ARCH})
4 |
--------------------------------------------------------------------------------
/versions/library-3.6/x86/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM scratch
2 | ADD rootfs.tar.gz /
3 | # ensure UTC instead of the default GMT
4 | COPY UTC /etc/localtime
5 | CMD ["/bin/sh"]
6 |
--------------------------------------------------------------------------------
/versions/library-3.6/x86/UTC:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gliderlabs/docker-alpine/25d285ff5901c40b3e655995a17ee9c4e1590af6/versions/library-3.6/x86/UTC
--------------------------------------------------------------------------------
/versions/library-3.6/x86/options:
--------------------------------------------------------------------------------
1 | export ARCH="x86"
2 | export PULL_URL="http://dl-cdn.alpinelinux.org/alpine/v3.6/releases/${ARCH}/alpine-minirootfs-3.6.3-${ARCH}.tar.gz"
3 | export TAGS=(alpine:3.6-${ARCH})
4 |
--------------------------------------------------------------------------------
/versions/library-3.6/x86_64/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM scratch
2 | ADD rootfs.tar.xz /
3 | CMD ["/bin/sh"]
4 |
--------------------------------------------------------------------------------
/versions/library-3.6/x86_64/options:
--------------------------------------------------------------------------------
1 | export RELEASE="v3.6"
2 | export MIRROR="http://dl-cdn.alpinelinux.org/alpine"
3 | export PACKAGES="alpine-baselayout,alpine-keys,apk-tools,libc-utils"
4 | export BUILD_OPTIONS=(-b -s -t UTC -r $RELEASE -m $MIRROR -p $PACKAGES)
5 | export TAGS=(alpine:3.6)
6 |
--------------------------------------------------------------------------------
/versions/library-3.7/aarch64/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM scratch
2 | ADD rootfs.tar.gz /
3 | # ensure UTC instead of the default GMT
4 | COPY UTC /etc/localtime
5 | CMD ["/bin/sh"]
6 |
--------------------------------------------------------------------------------
/versions/library-3.7/aarch64/UTC:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gliderlabs/docker-alpine/25d285ff5901c40b3e655995a17ee9c4e1590af6/versions/library-3.7/aarch64/UTC
--------------------------------------------------------------------------------
/versions/library-3.7/aarch64/options:
--------------------------------------------------------------------------------
1 | version=3.7.1
2 | export ARCH="aarch64"
3 | export PULL_URL="http://dl-cdn.alpinelinux.org/alpine/v${version%.*}/releases/${ARCH}/alpine-minirootfs-${version}-${ARCH}.tar.gz"
4 | export TAGS=(alpine:${version%.*}-${ARCH} alpine:latest-${ARCH})
5 |
--------------------------------------------------------------------------------
/versions/library-3.7/armhf/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM scratch
2 | ADD rootfs.tar.gz /
3 | # ensure UTC instead of the default GMT
4 | COPY UTC /etc/localtime
5 | CMD ["/bin/sh"]
6 |
--------------------------------------------------------------------------------
/versions/library-3.7/armhf/UTC:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gliderlabs/docker-alpine/25d285ff5901c40b3e655995a17ee9c4e1590af6/versions/library-3.7/armhf/UTC
--------------------------------------------------------------------------------
/versions/library-3.7/armhf/options:
--------------------------------------------------------------------------------
1 | version=3.7.1
2 | export ARCH="armhf"
3 | export PULL_URL="http://dl-cdn.alpinelinux.org/alpine/v${version%.*}/releases/${ARCH}/alpine-minirootfs-${version}-${ARCH}.tar.gz"
4 | export TAGS=(alpine:${version%.*}-${ARCH} alpine:latest-${ARCH})
5 |
--------------------------------------------------------------------------------
/versions/library-3.7/ppc64le/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM scratch
2 | ADD rootfs.tar.gz /
3 | # ensure UTC instead of the default GMT
4 | COPY UTC /etc/localtime
5 | CMD ["/bin/sh"]
6 |
--------------------------------------------------------------------------------
/versions/library-3.7/ppc64le/UTC:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gliderlabs/docker-alpine/25d285ff5901c40b3e655995a17ee9c4e1590af6/versions/library-3.7/ppc64le/UTC
--------------------------------------------------------------------------------
/versions/library-3.7/ppc64le/options:
--------------------------------------------------------------------------------
1 | version=3.7.1
2 | export ARCH="ppc64le"
3 | export PULL_URL="http://dl-cdn.alpinelinux.org/alpine/v${version%.*}/releases/${ARCH}/alpine-minirootfs-${version}-${ARCH}.tar.gz"
4 | export TAGS=(alpine:${version%.*}-${ARCH} alpine:latest-${ARCH})
5 |
--------------------------------------------------------------------------------
/versions/library-3.7/s390x/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM scratch
2 | ADD rootfs.tar.gz /
3 | # ensure UTC instead of the default GMT
4 | COPY UTC /etc/localtime
5 | CMD ["/bin/sh"]
6 |
--------------------------------------------------------------------------------
/versions/library-3.7/s390x/UTC:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gliderlabs/docker-alpine/25d285ff5901c40b3e655995a17ee9c4e1590af6/versions/library-3.7/s390x/UTC
--------------------------------------------------------------------------------
/versions/library-3.7/s390x/options:
--------------------------------------------------------------------------------
1 | version=3.7.1
2 | export ARCH="s390x"
3 | export PULL_URL="http://dl-cdn.alpinelinux.org/alpine/v${version%.*}/releases/${ARCH}/alpine-minirootfs-${version}-${ARCH}.tar.gz"
4 | export TAGS=(alpine:${version%.*}-${ARCH} alpine:latest-${ARCH})
5 |
--------------------------------------------------------------------------------
/versions/library-3.7/x86/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM scratch
2 | ADD rootfs.tar.gz /
3 | # ensure UTC instead of the default GMT
4 | COPY UTC /etc/localtime
5 | CMD ["/bin/sh"]
6 |
--------------------------------------------------------------------------------
/versions/library-3.7/x86/UTC:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gliderlabs/docker-alpine/25d285ff5901c40b3e655995a17ee9c4e1590af6/versions/library-3.7/x86/UTC
--------------------------------------------------------------------------------
/versions/library-3.7/x86/options:
--------------------------------------------------------------------------------
1 | version=3.7.1
2 | export ARCH="x86"
3 | export PULL_URL="http://dl-cdn.alpinelinux.org/alpine/v${version%.*}/releases/${ARCH}/alpine-minirootfs-${version}-${ARCH}.tar.gz"
4 | export TAGS=(alpine:${version%.*}-${ARCH} alpine:latest-${ARCH})
5 |
--------------------------------------------------------------------------------
/versions/library-3.7/x86_64/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM scratch
2 | ADD rootfs.tar.xz /
3 | CMD ["/bin/sh"]
4 |
--------------------------------------------------------------------------------
/versions/library-3.7/x86_64/options:
--------------------------------------------------------------------------------
1 | export RELEASE="v3.7"
2 | export MIRROR="http://dl-cdn.alpinelinux.org/alpine"
3 | export PACKAGES="alpine-baselayout,busybox,alpine-keys,apk-tools,libc-utils"
4 | export BUILD_OPTIONS=(-b -s -t UTC -r $RELEASE -m $MIRROR -p $PACKAGES)
5 | export TAGS=(alpine:3.7)
6 |
--------------------------------------------------------------------------------
/versions/library-3.8/aarch64/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM scratch
2 | ADD rootfs.tar.gz /
3 | # ensure UTC instead of the default GMT
4 | COPY UTC /etc/localtime
5 | CMD ["/bin/sh"]
6 |
--------------------------------------------------------------------------------
/versions/library-3.8/aarch64/UTC:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gliderlabs/docker-alpine/25d285ff5901c40b3e655995a17ee9c4e1590af6/versions/library-3.8/aarch64/UTC
--------------------------------------------------------------------------------
/versions/library-3.8/aarch64/options:
--------------------------------------------------------------------------------
1 | version=3.8.2
2 | export ARCH="aarch64"
3 | export PULL_URL="http://dl-cdn.alpinelinux.org/alpine/v${version%.*}/releases/${ARCH}/alpine-minirootfs-${version}-${ARCH}.tar.gz"
4 | export TAGS=(alpine:${version%.*}-${ARCH} alpine:latest-${ARCH})
5 |
--------------------------------------------------------------------------------
/versions/library-3.8/armhf/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM scratch
2 | ADD rootfs.tar.gz /
3 | # ensure UTC instead of the default GMT
4 | COPY UTC /etc/localtime
5 | CMD ["/bin/sh"]
6 |
--------------------------------------------------------------------------------
/versions/library-3.8/armhf/UTC:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gliderlabs/docker-alpine/25d285ff5901c40b3e655995a17ee9c4e1590af6/versions/library-3.8/armhf/UTC
--------------------------------------------------------------------------------
/versions/library-3.8/armhf/options:
--------------------------------------------------------------------------------
1 | version=3.8.2
2 | export ARCH="armhf"
3 | export PULL_URL="http://dl-cdn.alpinelinux.org/alpine/v${version%.*}/releases/${ARCH}/alpine-minirootfs-${version}-${ARCH}.tar.gz"
4 | export TAGS=(alpine:${version%.*}-${ARCH} alpine:latest-${ARCH})
5 |
--------------------------------------------------------------------------------
/versions/library-3.8/ppc64le/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM scratch
2 | ADD rootfs.tar.gz /
3 | # ensure UTC instead of the default GMT
4 | COPY UTC /etc/localtime
5 | CMD ["/bin/sh"]
6 |
--------------------------------------------------------------------------------
/versions/library-3.8/ppc64le/UTC:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gliderlabs/docker-alpine/25d285ff5901c40b3e655995a17ee9c4e1590af6/versions/library-3.8/ppc64le/UTC
--------------------------------------------------------------------------------
/versions/library-3.8/ppc64le/options:
--------------------------------------------------------------------------------
1 | version=3.8.2
2 | export ARCH="ppc64le"
3 | export PULL_URL="http://dl-cdn.alpinelinux.org/alpine/v${version%.*}/releases/${ARCH}/alpine-minirootfs-${version}-${ARCH}.tar.gz"
4 | export TAGS=(alpine:${version%.*}-${ARCH} alpine:latest-${ARCH})
5 |
--------------------------------------------------------------------------------
/versions/library-3.8/s390x/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM scratch
2 | ADD rootfs.tar.gz /
3 | # ensure UTC instead of the default GMT
4 | COPY UTC /etc/localtime
5 | CMD ["/bin/sh"]
6 |
--------------------------------------------------------------------------------
/versions/library-3.8/s390x/UTC:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gliderlabs/docker-alpine/25d285ff5901c40b3e655995a17ee9c4e1590af6/versions/library-3.8/s390x/UTC
--------------------------------------------------------------------------------
/versions/library-3.8/s390x/options:
--------------------------------------------------------------------------------
1 | version=3.8.2
2 | export ARCH="s390x"
3 | export PULL_URL="http://dl-cdn.alpinelinux.org/alpine/v${version%.*}/releases/${ARCH}/alpine-minirootfs-${version}-${ARCH}.tar.gz"
4 | export TAGS=(alpine:${version%.*}-${ARCH} alpine:latest-${ARCH})
5 |
--------------------------------------------------------------------------------
/versions/library-3.8/x86/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM scratch
2 | ADD rootfs.tar.gz /
3 | # ensure UTC instead of the default GMT
4 | COPY UTC /etc/localtime
5 | CMD ["/bin/sh"]
6 |
--------------------------------------------------------------------------------
/versions/library-3.8/x86/UTC:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gliderlabs/docker-alpine/25d285ff5901c40b3e655995a17ee9c4e1590af6/versions/library-3.8/x86/UTC
--------------------------------------------------------------------------------
/versions/library-3.8/x86/options:
--------------------------------------------------------------------------------
1 | version=3.8.2
2 | export ARCH="x86"
3 | export PULL_URL="http://dl-cdn.alpinelinux.org/alpine/v${version%.*}/releases/${ARCH}/alpine-minirootfs-${version}-${ARCH}.tar.gz"
4 | export TAGS=(alpine:${version%.*}-${ARCH} alpine:latest-${ARCH})
5 |
--------------------------------------------------------------------------------
/versions/library-3.8/x86_64/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM scratch
2 | ADD rootfs.tar.xz /
3 | CMD ["/bin/sh"]
4 |
--------------------------------------------------------------------------------
/versions/library-3.8/x86_64/options:
--------------------------------------------------------------------------------
1 | export RELEASE="v3.8"
2 | export MIRROR="http://dl-cdn.alpinelinux.org/alpine"
3 | export PACKAGES="alpine-baselayout,busybox,alpine-keys,apk-tools,libc-utils"
4 | export BUILD_OPTIONS=(-b -s -t UTC -r $RELEASE -m $MIRROR -p $PACKAGES)
5 | export TAGS=(alpine:3.8 alpine:latest)
6 |
--------------------------------------------------------------------------------
/versions/library-3.9/aarch64/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM scratch
2 | ADD rootfs.tar.gz /
3 | # ensure UTC instead of the default GMT
4 | COPY UTC /etc/localtime
5 | CMD ["/bin/sh"]
6 |
--------------------------------------------------------------------------------
/versions/library-3.9/aarch64/UTC:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gliderlabs/docker-alpine/25d285ff5901c40b3e655995a17ee9c4e1590af6/versions/library-3.9/aarch64/UTC
--------------------------------------------------------------------------------
/versions/library-3.9/aarch64/options:
--------------------------------------------------------------------------------
1 | version=3.9.0
2 | export ARCH="aarch64"
3 | export PULL_URL="http://dl-cdn.alpinelinux.org/alpine/v${version%.*}/releases/${ARCH}/alpine-minirootfs-${version}-${ARCH}.tar.gz"
4 | export TAGS=(alpine:${version%.*}-${ARCH})
5 |
--------------------------------------------------------------------------------
/versions/library-3.9/armhf/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM scratch
2 | ADD rootfs.tar.gz /
3 | # ensure UTC instead of the default GMT
4 | COPY UTC /etc/localtime
5 | CMD ["/bin/sh"]
6 |
--------------------------------------------------------------------------------
/versions/library-3.9/armhf/UTC:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gliderlabs/docker-alpine/25d285ff5901c40b3e655995a17ee9c4e1590af6/versions/library-3.9/armhf/UTC
--------------------------------------------------------------------------------
/versions/library-3.9/armhf/options:
--------------------------------------------------------------------------------
1 | version=3.9.0
2 | export ARCH="armhf"
3 | export PULL_URL="http://dl-cdn.alpinelinux.org/alpine/v${version%.*}/releases/${ARCH}/alpine-minirootfs-${version}-${ARCH}.tar.gz"
4 | export TAGS=(alpine:${version%.*}-${ARCH})
5 |
--------------------------------------------------------------------------------
/versions/library-3.9/ppc64le/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM scratch
2 | ADD rootfs.tar.gz /
3 | # ensure UTC instead of the default GMT
4 | COPY UTC /etc/localtime
5 | CMD ["/bin/sh"]
6 |
--------------------------------------------------------------------------------
/versions/library-3.9/ppc64le/UTC:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gliderlabs/docker-alpine/25d285ff5901c40b3e655995a17ee9c4e1590af6/versions/library-3.9/ppc64le/UTC
--------------------------------------------------------------------------------
/versions/library-3.9/ppc64le/options:
--------------------------------------------------------------------------------
1 | version=3.9.0
2 | export ARCH="ppc64le"
3 | export PULL_URL="http://dl-cdn.alpinelinux.org/alpine/v${version%.*}/releases/${ARCH}/alpine-minirootfs-${version}-${ARCH}.tar.gz"
4 | export TAGS=(alpine:${version%.*}-${ARCH})
5 |
--------------------------------------------------------------------------------
/versions/library-3.9/s390x/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM scratch
2 | ADD rootfs.tar.gz /
3 | # ensure UTC instead of the default GMT
4 | COPY UTC /etc/localtime
5 | CMD ["/bin/sh"]
6 |
--------------------------------------------------------------------------------
/versions/library-3.9/s390x/UTC:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gliderlabs/docker-alpine/25d285ff5901c40b3e655995a17ee9c4e1590af6/versions/library-3.9/s390x/UTC
--------------------------------------------------------------------------------
/versions/library-3.9/s390x/options:
--------------------------------------------------------------------------------
1 | version=3.9.0
2 | export ARCH="s390x"
3 | export PULL_URL="http://dl-cdn.alpinelinux.org/alpine/v${version%.*}/releases/${ARCH}/alpine-minirootfs-${version}-${ARCH}.tar.gz"
4 | export TAGS=(alpine:${version%.*}-${ARCH})
5 |
--------------------------------------------------------------------------------
/versions/library-3.9/x86/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM scratch
2 | ADD rootfs.tar.gz /
3 | # ensure UTC instead of the default GMT
4 | COPY UTC /etc/localtime
5 | CMD ["/bin/sh"]
6 |
--------------------------------------------------------------------------------
/versions/library-3.9/x86/UTC:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gliderlabs/docker-alpine/25d285ff5901c40b3e655995a17ee9c4e1590af6/versions/library-3.9/x86/UTC
--------------------------------------------------------------------------------
/versions/library-3.9/x86/options:
--------------------------------------------------------------------------------
1 | version=3.9.0
2 | export ARCH="x86"
3 | export PULL_URL="http://dl-cdn.alpinelinux.org/alpine/v${version%.*}/releases/${ARCH}/alpine-minirootfs-${version}-${ARCH}.tar.gz"
4 | export TAGS=(alpine:${version%.*}-${ARCH})
5 |
--------------------------------------------------------------------------------
/versions/library-3.9/x86_64/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM scratch
2 | ADD rootfs.tar.xz /
3 | CMD ["/bin/sh"]
4 |
--------------------------------------------------------------------------------
/versions/library-3.9/x86_64/options:
--------------------------------------------------------------------------------
1 | export RELEASE="v3.9"
2 | export MIRROR="http://dl-cdn.alpinelinux.org/alpine"
3 | export PACKAGES="alpine-baselayout,busybox,alpine-keys,apk-tools,libc-utils"
4 | export BUILD_OPTIONS=(-b -s -t UTC -r $RELEASE -m $MIRROR -p $PACKAGES)
5 | export TAGS=(alpine:3.9)
6 |
--------------------------------------------------------------------------------
/versions/library-edge/aarch64/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM scratch
2 | ADD rootfs.tar.gz /
3 | # ensure UTC instead of the default GMT
4 | COPY UTC /etc/localtime
5 | CMD ["/bin/sh"]
6 |
--------------------------------------------------------------------------------
/versions/library-edge/aarch64/UTC:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gliderlabs/docker-alpine/25d285ff5901c40b3e655995a17ee9c4e1590af6/versions/library-edge/aarch64/UTC
--------------------------------------------------------------------------------
/versions/library-edge/aarch64/options:
--------------------------------------------------------------------------------
1 | fs_version=3.7.0
2 | export ARCH="aarch64"
3 | export PULL_URL="http://dl-cdn.alpinelinux.org/alpine/edge/releases/${ARCH}/alpine-minirootfs-${fs_version}-${ARCH}.tar.gz"
4 | export TAGS=(alpine:edge-${ARCH})
5 |
--------------------------------------------------------------------------------
/versions/library-edge/armhf/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM scratch
2 | ADD rootfs.tar.gz /
3 | # ensure UTC instead of the default GMT
4 | COPY UTC /etc/localtime
5 | CMD ["/bin/sh"]
6 |
--------------------------------------------------------------------------------
/versions/library-edge/armhf/UTC:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gliderlabs/docker-alpine/25d285ff5901c40b3e655995a17ee9c4e1590af6/versions/library-edge/armhf/UTC
--------------------------------------------------------------------------------
/versions/library-edge/armhf/options:
--------------------------------------------------------------------------------
1 | fs_version=3.7.0
2 | export ARCH="armhf"
3 | export PULL_URL="http://dl-cdn.alpinelinux.org/alpine/edge/releases/${ARCH}/alpine-minirootfs-${fs_version}-${ARCH}.tar.gz"
4 | export TAGS=(alpine:edge-${ARCH})
5 |
--------------------------------------------------------------------------------
/versions/library-edge/ppc64le/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM scratch
2 | ADD rootfs.tar.gz /
3 | # ensure UTC instead of the default GMT
4 | COPY UTC /etc/localtime
5 | CMD ["/bin/sh"]
6 |
--------------------------------------------------------------------------------
/versions/library-edge/ppc64le/UTC:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gliderlabs/docker-alpine/25d285ff5901c40b3e655995a17ee9c4e1590af6/versions/library-edge/ppc64le/UTC
--------------------------------------------------------------------------------
/versions/library-edge/ppc64le/options:
--------------------------------------------------------------------------------
1 | fs_version=3.7.0
2 | export ARCH="ppc64le"
3 | export PULL_URL="http://dl-cdn.alpinelinux.org/alpine/edge/releases/${ARCH}/alpine-minirootfs-${fs_version}-${ARCH}.tar.gz"
4 | export TAGS=(alpine:edge-${ARCH})
--------------------------------------------------------------------------------
/versions/library-edge/s390x/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM scratch
2 | ADD rootfs.tar.gz /
3 | # ensure UTC instead of the default GMT
4 | COPY UTC /etc/localtime
5 | CMD ["/bin/sh"]
6 |
--------------------------------------------------------------------------------
/versions/library-edge/s390x/UTC:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gliderlabs/docker-alpine/25d285ff5901c40b3e655995a17ee9c4e1590af6/versions/library-edge/s390x/UTC
--------------------------------------------------------------------------------
/versions/library-edge/s390x/options:
--------------------------------------------------------------------------------
1 | fs_version=3.7.0
2 | export ARCH="aarch64"
3 | export PULL_URL="http://dl-cdn.alpinelinux.org/alpine/edge/releases/${ARCH}/alpine-minirootfs-${fs_version}-${ARCH}.tar.gz"
4 | export TAGS=(alpine:edge-${ARCH})
5 |
--------------------------------------------------------------------------------
/versions/library-edge/x86/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM scratch
2 | ADD rootfs.tar.gz /
3 | # ensure UTC instead of the default GMT
4 | COPY UTC /etc/localtime
5 | CMD ["/bin/sh"]
6 |
--------------------------------------------------------------------------------
/versions/library-edge/x86/UTC:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gliderlabs/docker-alpine/25d285ff5901c40b3e655995a17ee9c4e1590af6/versions/library-edge/x86/UTC
--------------------------------------------------------------------------------
/versions/library-edge/x86/options:
--------------------------------------------------------------------------------
1 | fs_version=3.7.0
2 | export ARCH="x86"
3 | export PULL_URL="http://dl-cdn.alpinelinux.org/alpine/edge/releases/${ARCH}/alpine-minirootfs-${fs_version}-${ARCH}.tar.gz"
4 | export TAGS=(alpine:edge-${ARCH})
5 |
--------------------------------------------------------------------------------
/versions/library-edge/x86_64/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM scratch
2 | ADD rootfs.tar.xz /
3 | CMD ["/bin/sh"]
4 |
--------------------------------------------------------------------------------
/versions/library-edge/x86_64/options:
--------------------------------------------------------------------------------
1 | export RELEASE="edge"
2 | export MIRROR="http://dl-cdn.alpinelinux.org/alpine"
3 | export PACKAGES="busybox,alpine-baselayout,apk-tools,alpine-keys,libc-utils"
4 | export ARCHS=(x86_64)
5 | export BUILD_OPTIONS=(-b -s -t UTC -r $RELEASE -m $MIRROR -p $PACKAGES)
6 | export TAGS=(alpine:edge)
7 |
--------------------------------------------------------------------------------