mirror of
https://github.com/N0rthernL1ghts/s6-rootfs.git
synced 2025-12-08 15:12:48 +01:00
Compare commits
9 Commits
v3.2.0.2
...
c47f8f0182
| Author | SHA1 | Date | |
|---|---|---|---|
| c47f8f0182 | |||
|
|
157fa7e7fe | ||
| 45e0d61c6b | |||
|
|
e9d28ed5b0 | ||
|
b3b6ef30be
|
|||
|
c3b7cc2f6e
|
|||
|
dcf140d2cf
|
|||
|
b3ac1158ba
|
|||
|
a1dcabe094
|
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@v6.5.0
|
||||
uses: docker/bake-action@v6.7.0
|
||||
with:
|
||||
files: build/docker-bake.hcl
|
||||
push: true
|
||||
93
Dockerfile
93
Dockerfile
@@ -1,69 +1,74 @@
|
||||
ARG S6_OVERLAY_VERSION="3.2.0.2"
|
||||
ARG S6_OVERLAY_RELEASE="https://github.com/just-containers/s6-overlay/releases/download/"
|
||||
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 alpine:3.21 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 alpine:3.21 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.21 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 ["/", "/"]
|
||||
|
||||
@@ -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>"
|
||||
|
||||
|
||||
@@ -2,6 +2,9 @@
|
||||
|
||||
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
|
||||
@@ -10,7 +13,7 @@ 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!
|
||||
@@ -28,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 ["/", "/"]
|
||||
|
||||
|
||||
# ---------------------
|
||||
|
||||
@@ -57,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}")}"
|
||||
]
|
||||
}
|
||||
@@ -66,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}")}"
|
||||
]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user