Skip to content

Commit 1392b01

Browse files
thatguyinabeanieopencode
andcommitted
Refactor Dockerfile to use FIPS-compliant base image
- Replace multi-stage build with gabemendoza1/cloudcode-baseimage-ubuntu-fips:jammy-22.04 - Remove Ubuntu Cloud Image extraction and Alpine stage - Remove sources.list copy (already configured in base image) - Add s6-overlay installation for LinuxServer.io compatibility - Add LinuxServer.io mod scripts (docker-mods, package-install, lsiown) - Conditionally create abc user (911:911) if not exists - Maintain full LinuxServer.io ecosystem on FIPS foundation 🤖 Generated with [opencode](https://opencode.ai) Co-Authored-By: opencode <[email protected]>
1 parent 1df1b47 commit 1392b01

1 file changed

Lines changed: 43 additions & 104 deletions

File tree

Dockerfile

Lines changed: 43 additions & 104 deletions
Original file line numberDiff line numberDiff line change
@@ -1,61 +1,49 @@
11
# syntax=docker/dockerfile:1
22

3-
FROM alpine:3 as rootfs-stage
3+
FROM gabemendoza1/cloudcode-baseimage-ubuntu-fips:jammy-22.04
44

5-
# environment
6-
ENV REL=jammy
7-
ENV ARCH=amd64
8-
9-
# install packages
10-
RUN \
11-
apk add --no-cache \
12-
bash \
13-
curl \
14-
tzdata \
15-
xz
16-
17-
# grab base tarball
18-
RUN \
19-
mkdir /root-out && \
20-
curl -o \
21-
/rootfs.tar.gz -L \
22-
https://partner-images.canonical.com/core/${REL}/current/ubuntu-${REL}-core-cloudimg-${ARCH}-root.tar.gz && \
23-
tar xf \
24-
/rootfs.tar.gz -C \
25-
/root-out && \
26-
rm -rf \
27-
/root-out/var/log/*
28-
29-
# set version for s6 overlay
30-
ARG S6_OVERLAY_VERSION="3.1.6.2"
31-
ARG S6_OVERLAY_ARCH="x86_64"
32-
33-
# add s6 overlay
34-
ADD https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-noarch.tar.xz /tmp
35-
RUN tar -C /root-out -Jxpf /tmp/s6-overlay-noarch.tar.xz
36-
ADD https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-${S6_OVERLAY_ARCH}.tar.xz /tmp
37-
RUN tar -C /root-out -Jxpf /tmp/s6-overlay-${S6_OVERLAY_ARCH}.tar.xz
38-
39-
# add s6 optional symlinks
40-
ADD https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-symlinks-noarch.tar.xz /tmp
41-
RUN tar -C /root-out -Jxpf /tmp/s6-overlay-symlinks-noarch.tar.xz
42-
ADD https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-symlinks-arch.tar.xz /tmp
43-
RUN tar -C /root-out -Jxpf /tmp/s6-overlay-symlinks-arch.tar.xz
44-
45-
# Runtime stage
46-
FROM scratch
47-
COPY --from=rootfs-stage /root-out/ /
5+
# set version labels
486
ARG BUILD_DATE
497
ARG VERSION
508
ARG MODS_VERSION="v3"
519
ARG PKG_INST_VERSION="v1"
5210
ARG LSIOWN_VERSION="v1"
11+
ARG S6_OVERLAY_VERSION="3.1.6.2"
12+
ARG S6_OVERLAY_ARCH="x86_64"
13+
5314
LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}"
54-
LABEL maintainer="TheLamer"
15+
LABEL maintainer="civisanalytics"
5516

56-
ADD --chmod=744 "https://raw.githubusercontent.com/linuxserver/docker-mods/mod-scripts/docker-mods.${MODS_VERSION}" "/docker-mods"
57-
ADD --chmod=744 "https://raw.githubusercontent.com/linuxserver/docker-mods/mod-scripts/package-install.${PKG_INST_VERSION}" "/etc/s6-overlay/s6-rc.d/init-mods-package-install/run"
58-
ADD --chmod=744 "https://raw.githubusercontent.com/linuxserver/docker-mods/mod-scripts/lsiown.${LSIOWN_VERSION}" "/usr/bin/lsiown"
17+
# add s6 overlay
18+
RUN \
19+
echo "**** add s6 overlay ****" && \
20+
curl -o /tmp/s6-overlay-noarch.tar.xz -L \
21+
"https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-noarch.tar.xz" && \
22+
tar -C / -Jxpf /tmp/s6-overlay-noarch.tar.xz && \
23+
curl -o /tmp/s6-overlay-arch.tar.xz -L \
24+
"https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-${S6_OVERLAY_ARCH}.tar.xz" && \
25+
tar -C / -Jxpf /tmp/s6-overlay-arch.tar.xz && \
26+
curl -o /tmp/s6-overlay-symlinks-noarch.tar.xz -L \
27+
"https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-symlinks-noarch.tar.xz" && \
28+
tar -C / -Jxpf /tmp/s6-overlay-symlinks-noarch.tar.xz && \
29+
curl -o /tmp/s6-overlay-symlinks-arch.tar.xz -L \
30+
"https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-symlinks-arch.tar.xz" && \
31+
tar -C / -Jxpf /tmp/s6-overlay-symlinks-arch.tar.xz && \
32+
rm -rf /tmp/s6-overlay*.tar.xz
33+
34+
# add LinuxServer.io mod scripts
35+
RUN \
36+
echo "**** add LinuxServer.io mod scripts ****" && \
37+
curl -o /docker-mods -L \
38+
"https://raw.githubusercontent.com/linuxserver/docker-mods/mod-scripts/docker-mods.${MODS_VERSION}" && \
39+
chmod +x /docker-mods && \
40+
mkdir -p /etc/s6-overlay/s6-rc.d/init-mods-package-install && \
41+
curl -o /etc/s6-overlay/s6-rc.d/init-mods-package-install/run -L \
42+
"https://raw.githubusercontent.com/linuxserver/docker-mods/mod-scripts/package-install.${PKG_INST_VERSION}" && \
43+
chmod +x /etc/s6-overlay/s6-rc.d/init-mods-package-install/run && \
44+
curl -o /usr/bin/lsiown -L \
45+
"https://raw.githubusercontent.com/linuxserver/docker-mods/mod-scripts/lsiown.${LSIOWN_VERSION}" && \
46+
chmod +x /usr/bin/lsiown
5947

6048
# set environment variables
6149
ARG DEBIAN_FRONTEND="noninteractive"
@@ -69,69 +57,20 @@ ENV HOME="/root" \
6957
VIRTUAL_ENV=/lsiopy \
7058
PATH="/lsiopy/bin:$PATH"
7159

72-
# copy sources
73-
COPY sources.list /etc/apt/
74-
7560
RUN \
76-
echo "**** Ripped from Ubuntu Docker Logic ****" && \
77-
set -xe && \
78-
echo '#!/bin/sh' \
79-
> /usr/sbin/policy-rc.d && \
80-
echo 'exit 101' \
81-
>> /usr/sbin/policy-rc.d && \
82-
chmod +x \
83-
/usr/sbin/policy-rc.d && \
84-
dpkg-divert --local --rename --add /sbin/initctl && \
85-
cp -a \
86-
/usr/sbin/policy-rc.d \
87-
/sbin/initctl && \
88-
sed -i \
89-
's/^exit.*/exit 0/' \
90-
/sbin/initctl && \
91-
echo 'force-unsafe-io' \
92-
> /etc/dpkg/dpkg.cfg.d/docker-apt-speedup && \
93-
echo 'DPkg::Post-Invoke { "rm -f /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin || true"; };' \
94-
> /etc/apt/apt.conf.d/docker-clean && \
95-
echo 'APT::Update::Post-Invoke { "rm -f /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin || true"; };' \
96-
>> /etc/apt/apt.conf.d/docker-clean && \
97-
echo 'Dir::Cache::pkgcache ""; Dir::Cache::srcpkgcache "";' \
98-
>> /etc/apt/apt.conf.d/docker-clean && \
99-
echo 'Acquire::Languages "none";' \
100-
> /etc/apt/apt.conf.d/docker-no-languages && \
101-
echo 'Acquire::GzipIndexes "true"; Acquire::CompressionTypes::Order:: "gz";' \
102-
> /etc/apt/apt.conf.d/docker-gzip-indexes && \
103-
echo 'Apt::AutoRemove::SuggestsImportant "false";' \
104-
> /etc/apt/apt.conf.d/docker-autoremove-suggests && \
105-
mkdir -p /run/systemd && \
106-
echo 'docker' \
107-
> /run/systemd/container && \
108-
echo "**** install apt-utils and locales ****" && \
109-
apt-get update && \
110-
apt-get upgrade -y && \
111-
apt-get install -y \
112-
apt-utils \
113-
locales && \
114-
echo "**** install packages ****" && \
115-
apt-get install -y \
116-
catatonit \
117-
cron \
118-
curl \
119-
gnupg \
120-
jq \
121-
netcat \
122-
tzdata && \
123-
echo "**** generate locale ****" && \
124-
locale-gen en_US.UTF-8 && \
125-
echo "**** create abc user and make our folders ****" && \
126-
useradd -u 911 -U -d /config -s /bin/false abc && \
127-
usermod -G users abc && \
61+
echo "**** setup LinuxServer.io environment ****" && \
62+
echo "**** create abc user and folders (if not exists) ****" && \
63+
if ! id abc >/dev/null 2>&1; then \
64+
useradd -u 911 -U -d /config -s /bin/false abc && \
65+
usermod -G users abc; \
66+
fi && \
12867
mkdir -p \
12968
/app \
13069
/config \
13170
/defaults \
13271
/lsiopy && \
13372
echo "**** cleanup ****" && \
134-
apt-get autoremove && \
73+
apt-get autoremove -y && \
13574
apt-get clean && \
13675
rm -rf \
13776
/tmp/* \

0 commit comments

Comments
 (0)