mirror of
https://github.com/N0rthernL1ghts/s6-rootfs.git
synced 2025-12-08 14:02:42 +01:00
Compare commits
25 Commits
v3.1.5.0
...
c47f8f0182
| Author | SHA1 | Date | |
|---|---|---|---|
| c47f8f0182 | |||
|
|
157fa7e7fe | ||
| 45e0d61c6b | |||
|
|
e9d28ed5b0 | ||
|
b3b6ef30be
|
|||
|
c3b7cc2f6e
|
|||
|
dcf140d2cf
|
|||
|
b3ac1158ba
|
|||
|
a1dcabe094
|
|||
|
0dff2e2eda
|
|||
|
d5c6850960
|
|||
|
3c24c63a3b
|
|||
|
b5b8811d71
|
|||
|
77a6a1ae38
|
|||
| 0bfc6f469c | |||
|
|
72054b6337 | ||
| 28d2032581 | |||
| 5df5a0b695 | |||
|
|
8a0aa787ba | ||
|
|
659a9bf2ee | ||
| 9ec886c907 | |||
|
|
74ab34ea96 | ||
|
3d259d126a
|
|||
|
2b4369eece
|
|||
|
4774e6ba1b
|
4
.github/workflows/image.yml
vendored
4
.github/workflows/image.yml
vendored
@@ -6,7 +6,7 @@ on:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: vulcan
|
||||
steps:
|
||||
-
|
||||
name: checkout code
|
||||
@@ -36,7 +36,7 @@ jobs:
|
||||
password: ${{secrets.PAT_TOKEN}}
|
||||
-
|
||||
name: Build and push
|
||||
uses: docker/bake-action@v4.1.0
|
||||
uses: docker/bake-action@v6.7.0
|
||||
with:
|
||||
files: build/docker-bake.hcl
|
||||
push: true
|
||||
95
Dockerfile
95
Dockerfile
@@ -1,69 +1,74 @@
|
||||
ARG S6_OVERLAY_VERSION="3.1.0.0"
|
||||
ARG S6_OVERLAY_RELEASE="https://github.com/just-containers/s6-overlay/releases/download/"
|
||||
ARG S6_OVERLAY_VERSION="3.2.0.2"
|
||||
ARG S6_OVERLAY_RELEASE="https://github.com/just-containers/s6-overlay/releases/download"
|
||||
ARG S6_OVERLAY_PAK_EXT=".tar.xz"
|
||||
|
||||
# First stage - Download s6-overlay noarch base and unpack it
|
||||
FROM scratch AS downloader-s6-base
|
||||
ARG S6_OVERLAY_VERSION
|
||||
ARG S6_OVERLAY_RELEASE
|
||||
ARG S6_OVERLAY_PAK_EXT
|
||||
ADD "${S6_OVERLAY_RELEASE}/v${S6_OVERLAY_VERSION}/s6-overlay-noarch${S6_OVERLAY_PAK_EXT}" /s6overlay-base.tar.xz
|
||||
|
||||
|
||||
# Second stage - Download s6-overlay platform-dependent binaries and unpack
|
||||
FROM --platform=${TARGETPLATFORM} alpine:3.19 AS downloader-s6-bin
|
||||
# Downloader stage: download s6-overlay base, binary, symlinks and checksums
|
||||
FROM alpine:3.21 AS downloader
|
||||
ARG TARGETPLATFORM
|
||||
ARG S6_OVERLAY_VERSION
|
||||
ARG S6_OVERLAY_RELEASE
|
||||
ARG S6_OVERLAY_PAK_EXT
|
||||
ARG S6_OVERLAY_RELEASE_URL="${S6_OVERLAY_RELEASE}/v${S6_OVERLAY_VERSION}/s6-overlay-${TARGETPLATFORM}${S6_OVERLAY_PAK_EXT}"
|
||||
ARG S6_OVERLAY_HASH_URL="${S6_OVERLAY_RELEASE}/v${S6_OVERLAY_VERSION}/s6-overlay-${TARGETPLATFORM}${S6_OVERLAY_PAK_EXT}.sha256"
|
||||
|
||||
# Set environment variables
|
||||
ENV BASE_URL="${S6_OVERLAY_RELEASE}/v${S6_OVERLAY_VERSION}/s6-overlay-noarch${S6_OVERLAY_PAK_EXT}"
|
||||
ENV BASE_HASH_URL="${BASE_URL}.sha256"
|
||||
ENV BIN_URL="${S6_OVERLAY_RELEASE}/v${S6_OVERLAY_VERSION}/s6-overlay-${TARGETPLATFORM}${S6_OVERLAY_PAK_EXT}"
|
||||
ENV BIN_HASH_URL="${BIN_URL}.sha256"
|
||||
ENV SYMLINKS_ARCH_URL="${S6_OVERLAY_RELEASE}/v${S6_OVERLAY_VERSION}/s6-overlay-symlinks-arch${S6_OVERLAY_PAK_EXT}"
|
||||
ENV SYMLINKS_ARCH_HASH_URL="${SYMLINKS_ARCH_URL}.sha256"
|
||||
ENV SYMLINKS_NOARCH_URL="${S6_OVERLAY_RELEASE}/v${S6_OVERLAY_VERSION}/s6-overlay-symlinks-noarch${S6_OVERLAY_PAK_EXT}"
|
||||
ENV SYMLINKS_NOARCH_HASH_URL="${SYMLINKS_NOARCH_URL}.sha256"
|
||||
|
||||
RUN set -eux \
|
||||
&& apk add --no-cache wget \
|
||||
&& wget -O /s6overlay-bin.tar.xz "$(echo ${S6_OVERLAY_RELEASE_URL} | sed 's/linux\///g' | sed 's/amd64/x86_64/g' | sed 's/arm64/aarch64/g' | sed 's/arm\/v7/armhf/g')"
|
||||
# Replace platform
|
||||
&& BIN_URL_FIXED=$(echo "${BIN_URL}" | sed -e 's/linux\///g' -e 's/amd64/x86_64/g' -e 's/arm64/aarch64/g' -e 's|arm/v7|armhf|g') \
|
||||
&& BIN_HASH_URL_FIXED=$(echo "${BIN_HASH_URL}" | sed -e 's/linux\///g' -e 's/amd64/x86_64/g' -e 's/arm64/aarch64/g' -e 's|arm/v7|armhf|g') \
|
||||
# Download s6-overlay binaries
|
||||
&& wget -O /s6overlay-bin.tar.xz "${BIN_URL_FIXED}" \
|
||||
&& wget -O /s6overlay-bin.tar.xz.sha256 "${BIN_HASH_URL_FIXED}" \
|
||||
# Download s6-overlay base and its hash
|
||||
&& wget -O /s6overlay-base.tar.xz "${BASE_URL}" \
|
||||
&& wget -O /s6overlay-base.tar.xz.sha256 "${BASE_HASH_URL}" \
|
||||
# Download s6-overlay symlinks \
|
||||
&& wget -O /s6overlay-arch-symlinks.tar.xz "${SYMLINKS_ARCH_URL}" \
|
||||
&& wget -O /s6overlay-arch-symlinks.tar.xz.sha256 "${SYMLINKS_ARCH_HASH_URL}" \
|
||||
&& wget -O /s6overlay-noarch-symlinks.tar.xz "${SYMLINKS_NOARCH_URL}" \
|
||||
&& wget -O /s6overlay-noarch-symlinks.tar.xz.sha256 "${SYMLINKS_NOARCH_HASH_URL}" \
|
||||
# Build SHA256SUMS file
|
||||
&& echo "$(cut -d' ' -f1 /s6overlay-base.tar.xz.sha256) /s6overlay-base.tar.xz" > /SHA256SUMS \
|
||||
&& echo "$(cut -d' ' -f1 /s6overlay-bin.tar.xz.sha256) /s6overlay-bin.tar.xz" >> /SHA256SUMS \
|
||||
&& echo "$(cut -d' ' -f1 /s6overlay-arch-symlinks.tar.xz.sha256) /s6overlay-arch-symlinks.tar.xz" >> /SHA256SUMS \
|
||||
&& echo "$(cut -d' ' -f1 /s6overlay-noarch-symlinks.tar.xz.sha256) /s6overlay-noarch-symlinks.tar.xz" >> /SHA256SUMS \
|
||||
# Verify integrity of downloaded files
|
||||
&& sha256sum -c /SHA256SUMS
|
||||
|
||||
|
||||
# Builder stage
|
||||
FROM busybox AS builder
|
||||
|
||||
# Third stage - Download s6-overlay platform-dependent hashes
|
||||
FROM --platform=${TARGETPLATFORM} alpine:3.19 AS downloader-s6-sha256-sums
|
||||
ARG TARGETPLATFORM
|
||||
ARG S6_OVERLAY_VERSION
|
||||
ARG S6_OVERLAY_RELEASE
|
||||
ARG S6_OVERLAY_PAK_EXT
|
||||
ARG S6_OVERLAY_BASE_HASH_URL="${S6_OVERLAY_RELEASE}/v${S6_OVERLAY_VERSION}/s6-overlay-noarch${S6_OVERLAY_PAK_EXT}.sha256"
|
||||
ARG S6_OVERLAY_BIN_HASH_URL="${S6_OVERLAY_RELEASE}/v${S6_OVERLAY_VERSION}/s6-overlay-${TARGETPLATFORM}${S6_OVERLAY_PAK_EXT}.sha256"
|
||||
COPY --from=downloader ["/s6overlay-base.tar.xz", "/s6overlay-bin.tar.xz", "/s6overlay-arch-symlinks.tar.xz", "/s6overlay-noarch-symlinks.tar.xz", "/tmp/s6/"]
|
||||
|
||||
RUN set -eux \
|
||||
&& apk add --no-cache wget \
|
||||
&& wget -O /s6overlay-base.tar.xz.sha256 "${S6_OVERLAY_BASE_HASH_URL}" \
|
||||
&& wget -O /s6overlay-bin.tar.xz.sha256 "$(echo "${S6_OVERLAY_BIN_HASH_URL}" | sed 's/linux\///g' | sed 's/amd64/x86_64/g' | sed 's/arm64/aarch64/g' | sed 's/arm\/v7/armhf/g')" \
|
||||
&& echo "$(cat /s6overlay-base.tar.xz.sha256 | cut -d' ' -f1) /s6overlay-base.tar.xz" > /SHA256SUMS \
|
||||
&& echo "$(cat /s6overlay-bin.tar.xz.sha256 | cut -d' ' -f1) /s6overlay-bin.tar.xz" >> /SHA256SUMS \
|
||||
&& rm /s6overlay-base.tar.xz.sha256 \
|
||||
&& rm /s6overlay-bin.tar.xz.sha256
|
||||
&& mkdir -p /build \
|
||||
&& tar -Jxpf /tmp/s6/s6overlay-base.tar.xz -C /build \
|
||||
&& tar -Jxpf /tmp/s6/s6overlay-bin.tar.xz -C /build \
|
||||
&& tar -Jxpf /tmp/s6/s6overlay-arch-symlinks.tar.xz -C /build \
|
||||
&& tar -Jxpf /tmp/s6/s6overlay-noarch-symlinks.tar.xz -C /build
|
||||
|
||||
|
||||
|
||||
# Fourth stage - Build rootfs from s6 parts
|
||||
FROM alpine:3.19 AS rootfs-builder
|
||||
# Rootfs
|
||||
FROM scratch AS rootfs
|
||||
|
||||
COPY --from=downloader-s6-sha256-sums ["/SHA256SUMS", "/"]
|
||||
COPY --from=downloader-s6-base ["/s6overlay-base.tar.xz", "/s6overlay-base.tar.xz"]
|
||||
COPY --from=downloader-s6-bin ["/s6overlay-bin.tar.xz", "/s6overlay-bin.tar.xz"]
|
||||
|
||||
WORKDIR "/rootfs-build/"
|
||||
|
||||
RUN set -eux \
|
||||
&& sha256sum -c /SHA256SUMS \
|
||||
&& apk add --no-cache tar xz \
|
||||
&& tar -Jxpf /s6overlay-base.tar.xz -C /rootfs-build \
|
||||
&& tar -Jxpf /s6overlay-bin.tar.xz -C /rootfs-build
|
||||
COPY --from=builder ["/build/", "/"]
|
||||
|
||||
|
||||
# Final stage
|
||||
FROM scratch AS s6-rootfs
|
||||
|
||||
# Final image: minimal rootfs
|
||||
FROM scratch
|
||||
|
||||
LABEL maintainer="Aleksandar Puharic <aleksandar@puharic.com>"
|
||||
|
||||
COPY --from=rootfs-builder ["/rootfs-build/", "/"]
|
||||
COPY --from=rootfs ["/", "/"]
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# First stage - Download s6-overlay and unpack it
|
||||
FROM --platform=${TARGETPLATFORM} alpine:3.19 AS downloader
|
||||
FROM alpine:3.21 AS downloader
|
||||
|
||||
ARG TARGETPLATFORM
|
||||
|
||||
@@ -7,15 +7,15 @@ ARG TARGETPLATFORM
|
||||
ARG S6_OVERLAY_VERSION="2.2.0.3"
|
||||
ARG S6_OVERLAY_RELEASE="https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-${TARGETPLATFORM}.tar.gz"
|
||||
|
||||
WORKDIR "/s6-overlay/"
|
||||
|
||||
RUN apk add --no-cache wget tar gzip \
|
||||
RUN set -eux \
|
||||
&& mkdir -p /s6-overlay \
|
||||
&& wget -O /tmp/s6overlay.tar.gz $(echo ${S6_OVERLAY_RELEASE} | sed 's/linux\///g' | sed 's/arm64/aarch64/g' | sed 's/arm\/v7/armhf/g') \
|
||||
&& tar xzf /tmp/s6overlay.tar.gz -C /s6-overlay
|
||||
|
||||
|
||||
|
||||
# Final stage
|
||||
FROM scratch AS s6-rootfs
|
||||
FROM scratch
|
||||
|
||||
LABEL maintainer="Aleksandar Puharic <aleksandar@puharic.com>"
|
||||
|
||||
|
||||
12
README.md
12
README.md
@@ -2,19 +2,23 @@
|
||||
|
||||
The simplest and fastest way to get S6 supervisor in your image
|
||||
|
||||
This docker image packages s6 supervisor overlay based on https://github.com/just-containers/s6-overlay releases.
|
||||
|
||||
|
||||
NOTE: GitHub Actions builds are currently broken. Images are, however manually built, so you should be still getting latest version.
|
||||
|
||||
### Usage
|
||||
```Docker
|
||||
COPY --from=ghcr.io/n0rthernl1ghts/s6-rootfs:latest ["/", "/"]
|
||||
```
|
||||
or with fixed version:
|
||||
```Docker
|
||||
COPY --from=ghcr.io/n0rthernl1ghts/s6-rootfs:3.1.2.1 ["/", "/"]
|
||||
COPY --from=ghcr.io/n0rthernl1ghts/s6-rootfs:3.2.0.2 ["/", "/"]
|
||||
```
|
||||
|
||||
That's it!
|
||||
|
||||
Note: We're moving to ghcr.io. `docker.io/nlss/s6-rootfs` will be kept up-to-date until May 2023, when is Docker sunsetting free teams.<br/>
|
||||
It is highly recommended that you start using `ghcr.io/n0rthernl1ghts/s6-rootfs`.
|
||||
Note: We have moved to `ghcr.io`. Docker hub `docker.io/nlss/s6-rootfs` builds are discontinued.<br/>
|
||||
|
||||
###### Recommended way to integrate with your image (example)
|
||||
```Docker
|
||||
@@ -27,7 +31,7 @@ FROM scratch AS rootfs
|
||||
COPY ["./rootfs", "/"]
|
||||
|
||||
# Install S6
|
||||
COPY --from=ghcr.io/n0rthernl1ghts/s6-rootfs:3.1.2.1 ["/", "/"]
|
||||
COPY --from=ghcr.io/n0rthernl1ghts/s6-rootfs:3.2.0.2 ["/", "/"]
|
||||
|
||||
|
||||
# ---------------------
|
||||
|
||||
@@ -1,5 +1,15 @@
|
||||
group "default" {
|
||||
targets = ["2_1_0_2", "2_2_0_0", "2_2_0_1", "2_2_0_2", "2_2_0_3", "3_0_0_0", "3_0_0_1", "3_0_0_2", "3_0_0_2-2", "3_1_0_0", "3_1_0_1", "3_1_1_0", "3_1_1_1", "3_1_1_2", "3_1_2_0", "3_1_2_1", "3_1_3_0", "3_1_4_0", "3_1_4_1", "3_1_4_2", "3_1_5_0"]
|
||||
targets = [
|
||||
"2_1_0_2", "2_2_0_0", "2_2_0_1",
|
||||
"2_2_0_2", "2_2_0_3", "3_0_0_0",
|
||||
"3_0_0_1", "3_0_0_2", "3_0_0_2-2",
|
||||
"3_1_0_0", "3_1_0_1", "3_1_1_0",
|
||||
"3_1_1_1", "3_1_1_2", "3_1_2_0",
|
||||
"3_1_2_1", "3_1_3_0", "3_1_4_0",
|
||||
"3_1_4_1", "3_1_4_2", "3_1_5_0",
|
||||
"3_1_6_0", "3_1_6_1", "3_1_6_2",
|
||||
"3_2_0_0", "3_2_0_1", "3_2_0_2"
|
||||
]
|
||||
}
|
||||
|
||||
target "build-dockerfile" {
|
||||
@@ -19,7 +29,7 @@ target "build-common" {
|
||||
}
|
||||
|
||||
variable "REGISTRY_CACHE" {
|
||||
default = "docker.io/nlss/s6-rootfs-cache"
|
||||
default = "ghcr.io/n0rthernl1ghts/s6-rootfs-cache"
|
||||
}
|
||||
|
||||
######################
|
||||
@@ -47,7 +57,6 @@ function "get-args-with-pak-ext" {
|
||||
function "get-cache-from" {
|
||||
params = [version]
|
||||
result = [
|
||||
"type=gha,scope=${version}_${BAKE_LOCAL_PLATFORM}",
|
||||
"type=registry,ref=${REGISTRY_CACHE}:${sha1("${version}-${BAKE_LOCAL_PLATFORM}")}"
|
||||
]
|
||||
}
|
||||
@@ -56,7 +65,6 @@ function "get-cache-from" {
|
||||
function "get-cache-to" {
|
||||
params = [version]
|
||||
result = [
|
||||
"type=gha,mode=max,scope=${version}_${BAKE_LOCAL_PLATFORM}",
|
||||
"type=registry,mode=max,ref=${REGISTRY_CACHE}:${sha1("${version}-${BAKE_LOCAL_PLATFORM}")}"
|
||||
]
|
||||
}
|
||||
@@ -68,12 +76,10 @@ function "get-tags" {
|
||||
params = [version, extra_versions]
|
||||
result = concat(
|
||||
[
|
||||
"docker.io/nlss/s6-rootfs:${version}",
|
||||
"ghcr.io/n0rthernl1ghts/s6-rootfs:${version}"
|
||||
],
|
||||
flatten([
|
||||
for extra_version in extra_versions : [
|
||||
"docker.io/nlss/s6-rootfs:${extra_version}",
|
||||
"ghcr.io/n0rthernl1ghts/s6-rootfs:${extra_version}"
|
||||
]
|
||||
])
|
||||
@@ -248,6 +254,54 @@ target "3_1_5_0" {
|
||||
inherits = ["build-dockerfile", "build-platforms", "build-common"]
|
||||
cache-from = get-cache-from("3.1.5.0")
|
||||
cache-to = get-cache-to("3.1.5.0")
|
||||
tags = get-tags("3.1.5.0", ["3.1", "3.1.5", "latest"])
|
||||
tags = get-tags("3.1.5.0", ["3.1.5"])
|
||||
args = get-args("3.1.5.0")
|
||||
}
|
||||
|
||||
target "3_1_6_0" {
|
||||
inherits = ["build-dockerfile", "build-platforms", "build-common"]
|
||||
cache-from = get-cache-from("3.1.6.0")
|
||||
cache-to = get-cache-to("3.1.6.0")
|
||||
tags = get-tags("3.1.6.0", [])
|
||||
args = get-args("3.1.6.0")
|
||||
}
|
||||
|
||||
target "3_1_6_1" {
|
||||
inherits = ["build-dockerfile", "build-platforms", "build-common"]
|
||||
cache-from = get-cache-from("3.1.6.1")
|
||||
cache-to = get-cache-to("3.1.6.1")
|
||||
tags = get-tags("3.1.6.1", [])
|
||||
args = get-args("3.1.6.1")
|
||||
}
|
||||
|
||||
target "3_1_6_2" {
|
||||
inherits = ["build-dockerfile", "build-platforms", "build-common"]
|
||||
cache-from = get-cache-from("3.1.6.2")
|
||||
cache-to = get-cache-to("3.1.6.2")
|
||||
tags = get-tags("3.1.6.2", ["3.1", "3.1.6"])
|
||||
args = get-args("3.1.6.2")
|
||||
}
|
||||
|
||||
target "3_2_0_0" {
|
||||
inherits = ["build-dockerfile", "build-platforms", "build-common"]
|
||||
cache-from = get-cache-from("3.2.0.0")
|
||||
cache-to = get-cache-to("3.2.0.0")
|
||||
tags = get-tags("3.2.0.0", [])
|
||||
args = get-args("3.2.0.0")
|
||||
}
|
||||
|
||||
target "3_2_0_1" {
|
||||
inherits = ["build-dockerfile", "build-platforms", "build-common"]
|
||||
cache-from = get-cache-from("3.2.0.1")
|
||||
cache-to = get-cache-to("3.2.0.1")
|
||||
tags = get-tags("3.2.0.1", [])
|
||||
args = get-args("3.2.0.0")
|
||||
}
|
||||
|
||||
target "3_2_0_2" {
|
||||
inherits = ["build-dockerfile", "build-platforms", "build-common"]
|
||||
cache-from = get-cache-from("3.2.0.2")
|
||||
cache-to = get-cache-to("3.2.0.2")
|
||||
tags = get-tags("3.2.0.2", ["3.2", "3.2.0", "latest"])
|
||||
args = get-args("3.2.0.2")
|
||||
}
|
||||
Reference in New Issue
Block a user