mirror of
https://github.com/static-web-server/static-web-server.git
synced 2026-01-25 05:06:33 +00:00
refactor: Rootless Debian and Alpine Docker images by default (#567)
* chore: setup user public directory, permissions and symlink * chore: alpine and debian rootless * docs: rootless information
This commit is contained in:
@@ -4,7 +4,12 @@ ARG TARGETPLATFORM
|
||||
ARG SERVER_VERSION=0.0.0
|
||||
ENV SERVER_VERSION=${SERVER_VERSION}
|
||||
|
||||
RUN apk --no-cache add ca-certificates tzdata file
|
||||
RUN set -eux \
|
||||
&& apk --no-cache add \
|
||||
ca-certificates \
|
||||
tzdata \
|
||||
file \
|
||||
&& true
|
||||
|
||||
RUN set -ex; \
|
||||
case "$TARGETPLATFORM" in \
|
||||
@@ -33,23 +38,55 @@ RUN set -ex \
|
||||
FROM alpine:3.21.5
|
||||
|
||||
ARG SERVER_VERSION=0.0.0
|
||||
ENV SERVER_VERSION=${SERVER_VERSION}
|
||||
ARG SERVER_USER_NAME=sws
|
||||
ARG SERVER_USER_ID=1000
|
||||
ARG SERVER_GROUP_NAME=sws
|
||||
ARG SERVER_GROUP_ID=1000
|
||||
|
||||
ENV SERVER_VERSION=$SERVER_VERSION
|
||||
ENV SERVER_USER_ID=$SERVER_USER_ID
|
||||
ENV SERVER_USER_NAME=$SERVER_USER_NAME
|
||||
ENV SERVER_GROUP_ID=$SERVER_GROUP_ID
|
||||
ENV SERVER_GROUP_NAME=$SERVER_GROUP_NAME
|
||||
|
||||
LABEL version="${SERVER_VERSION}" \
|
||||
description="A cross-platform, high-performance and asynchronous web server for static files-serving." \
|
||||
maintainer="Jose Quintana <joseluisq.net>"
|
||||
|
||||
RUN apk --no-cache add ca-certificates tzdata
|
||||
RUN set -eux \
|
||||
&& addgroup -g $SERVER_GROUP_ID $SERVER_GROUP_NAME \
|
||||
&& adduser -D -u $SERVER_USER_ID -G $SERVER_GROUP_NAME $SERVER_USER_NAME \
|
||||
&& true
|
||||
|
||||
COPY --from=build /usr/local/bin/static-web-server /usr/local/bin/
|
||||
COPY ./docker/alpine/entrypoint.sh /
|
||||
COPY ./docker/public /public
|
||||
RUN set -eux \
|
||||
&& apk --no-cache add \
|
||||
ca-certificates \
|
||||
tzdata \
|
||||
&& true
|
||||
|
||||
RUN set -eux \
|
||||
&& mkdir -p /home/$SERVER_USER_NAME/public \
|
||||
&& chown -R $SERVER_USER_NAME:$SERVER_GROUP_NAME /home/$SERVER_USER_NAME \
|
||||
&& ln -s /home/$SERVER_USER_NAME/public /var/public \
|
||||
&& chown -R $SERVER_USER_NAME:$SERVER_GROUP_NAME /var/public \
|
||||
&& true
|
||||
|
||||
USER $SERVER_USER_NAME:$SERVER_GROUP_NAME
|
||||
|
||||
COPY --from=build --chown=$SERVER_USER_NAME:$SERVER_GROUP_NAME \
|
||||
/usr/local/bin/static-web-server /usr/local/bin/static-web-server
|
||||
COPY --chown=$SERVER_USER_NAME:$SERVER_GROUP_NAME \
|
||||
./docker/alpine/entrypoint.sh /usr/local/bin/entrypoint.sh
|
||||
COPY --chown=$SERVER_USER_NAME:$SERVER_GROUP_NAME \
|
||||
./docker/public /home/$SERVER_USER_NAME/public
|
||||
|
||||
WORKDIR /home/$SERVER_USER_NAME
|
||||
|
||||
EXPOSE 80
|
||||
|
||||
STOPSIGNAL SIGQUIT
|
||||
|
||||
ENTRYPOINT ["/entrypoint.sh"]
|
||||
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
|
||||
|
||||
CMD ["static-web-server"]
|
||||
|
||||
@@ -59,4 +96,4 @@ LABEL org.opencontainers.image.vendor="Jose Quintana" \
|
||||
org.opencontainers.image.title="Static Web Server" \
|
||||
org.opencontainers.image.description="A cross-platform, high-performance and asynchronous web server for static files-serving." \
|
||||
org.opencontainers.image.version="${SERVER_VERSION}" \
|
||||
org.opencontainers.image.documentation="https://github.com/static-web-server/static-web-server"
|
||||
org.opencontainers.image.documentation="https://static-web-server.net"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
FROM --platform=$BUILDPLATFORM debian:12.12-slim AS build
|
||||
FROM --platform=$BUILDPLATFORM debian:13.1-slim AS build
|
||||
|
||||
ARG TARGETPLATFORM
|
||||
ARG SERVER_VERSION=0.0.0
|
||||
@@ -7,10 +7,10 @@ ENV SERVER_VERSION=${SERVER_VERSION}
|
||||
RUN set -eux \
|
||||
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \
|
||||
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \
|
||||
ca-certificates \
|
||||
curl \
|
||||
file \
|
||||
tzdata \
|
||||
ca-certificates \
|
||||
curl \
|
||||
file \
|
||||
tzdata \
|
||||
&& true
|
||||
|
||||
RUN set -ex \
|
||||
@@ -48,34 +48,62 @@ RUN set -ex \
|
||||
&& file /usr/local/bin/static-web-server \
|
||||
&& true
|
||||
|
||||
FROM debian:12.12-slim
|
||||
FROM debian:13.1-slim
|
||||
|
||||
ARG SERVER_VERSION=0.0.0
|
||||
ENV SERVER_VERSION=${SERVER_VERSION}
|
||||
ARG SERVER_USER_NAME=sws
|
||||
ARG SERVER_USER_ID=1000
|
||||
ARG SERVER_GROUP_NAME=sws
|
||||
ARG SERVER_GROUP_ID=1000
|
||||
|
||||
ENV SERVER_VERSION=$SERVER_VERSION
|
||||
ENV SERVER_USER_ID=$SERVER_USER_ID
|
||||
ENV SERVER_USER_NAME=$SERVER_USER_NAME
|
||||
ENV SERVER_GROUP_ID=$SERVER_GROUP_ID
|
||||
ENV SERVER_GROUP_NAME=$SERVER_GROUP_NAME
|
||||
|
||||
LABEL version="${SERVER_VERSION}" \
|
||||
description="A cross-platform, high-performance and asynchronous web server for static files-serving." \
|
||||
maintainer="Jose Quintana <joseluisq.net>"
|
||||
|
||||
RUN set -eux \
|
||||
&& groupadd -r -g $SERVER_GROUP_ID $SERVER_GROUP_NAME \
|
||||
&& useradd -r -g $SERVER_GROUP_ID -u $SERVER_USER_ID $SERVER_USER_NAME \
|
||||
&& true
|
||||
|
||||
RUN set -eux \
|
||||
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \
|
||||
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \
|
||||
ca-certificates \
|
||||
tzdata \
|
||||
ca-certificates \
|
||||
tzdata \
|
||||
# Clean up local repository of retrieved packages and remove the package lists
|
||||
&& apt-get clean \
|
||||
&& rm -rf /var/lib/apt/lists/* \
|
||||
&& true
|
||||
|
||||
COPY --from=build /usr/local/bin/static-web-server /usr/local/bin/
|
||||
COPY ./docker/debian/entrypoint.sh /
|
||||
COPY ./docker/public /public
|
||||
RUN set -eux \
|
||||
&& mkdir -p /home/$SERVER_USER_NAME/public \
|
||||
&& chown -R $SERVER_USER_NAME:$SERVER_GROUP_NAME /home/$SERVER_USER_NAME \
|
||||
&& ln -s /home/$SERVER_USER_NAME/public /var/public \
|
||||
&& chown -R $SERVER_USER_NAME:$SERVER_GROUP_NAME /var/public \
|
||||
&& true
|
||||
|
||||
USER $SERVER_USER_NAME:$SERVER_GROUP_NAME
|
||||
|
||||
COPY --from=build --chown=$SERVER_USER_NAME:$SERVER_GROUP_NAME \
|
||||
/usr/local/bin/static-web-server /usr/local/bin/static-web-server
|
||||
COPY --chown=$SERVER_USER_NAME:$SERVER_GROUP_NAME \
|
||||
./docker/debian/entrypoint.sh /usr/local/bin/entrypoint.sh
|
||||
COPY --chown=$SERVER_USER_NAME:$SERVER_GROUP_NAME \
|
||||
./docker/public /home/$SERVER_USER_NAME/public
|
||||
|
||||
WORKDIR /home/$SERVER_USER_NAME
|
||||
|
||||
EXPOSE 80
|
||||
|
||||
STOPSIGNAL SIGQUIT
|
||||
|
||||
ENTRYPOINT ["/entrypoint.sh"]
|
||||
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
|
||||
|
||||
CMD ["static-web-server"]
|
||||
|
||||
|
||||
@@ -1,22 +1,55 @@
|
||||
FROM alpine:3.21.5
|
||||
|
||||
ENV SERVER_VERSION=devel
|
||||
ARG SERVER_VERSION=devel
|
||||
ARG SERVER_USER_NAME=sws
|
||||
ARG SERVER_USER_ID=1000
|
||||
ARG SERVER_GROUP_NAME=sws
|
||||
ARG SERVER_GROUP_ID=1000
|
||||
|
||||
ENV SERVER_VERSION=$SERVER_VERSION
|
||||
ENV SERVER_USER_ID=$SERVER_USER_ID
|
||||
ENV SERVER_USER_NAME=$SERVER_USER_NAME
|
||||
ENV SERVER_GROUP_ID=$SERVER_GROUP_ID
|
||||
ENV SERVER_GROUP_NAME=$SERVER_GROUP_NAME
|
||||
|
||||
LABEL version="${SERVER_VERSION}" \
|
||||
description="A cross-platform, high-performance and asynchronous web server for static files-serving." \
|
||||
maintainer="Jose Quintana <joseluisq.net>"
|
||||
|
||||
RUN apk --no-cache add ca-certificates tzdata
|
||||
RUN set -eux \
|
||||
&& addgroup -g $SERVER_GROUP_ID $SERVER_GROUP_NAME \
|
||||
&& adduser -D -u $SERVER_USER_ID -G $SERVER_GROUP_NAME $SERVER_USER_NAME \
|
||||
&& true
|
||||
|
||||
COPY ./docker/devel/static-web-server /usr/local/bin/
|
||||
COPY ./docker/alpine/entrypoint.sh /
|
||||
COPY ./docker/public /public
|
||||
RUN set -eux \
|
||||
&& apk --no-cache add \
|
||||
ca-certificates \
|
||||
tzdata \
|
||||
&& true
|
||||
|
||||
RUN set -eux \
|
||||
&& mkdir -p /home/$SERVER_USER_NAME/public \
|
||||
&& chown -R $SERVER_USER_NAME:$SERVER_GROUP_NAME /home/$SERVER_USER_NAME \
|
||||
&& ln -s /home/$SERVER_USER_NAME/public /var/public \
|
||||
&& chown -R $SERVER_USER_NAME:$SERVER_GROUP_NAME /var/public \
|
||||
&& true
|
||||
|
||||
USER $SERVER_USER_NAME:$SERVER_GROUP_NAME
|
||||
|
||||
COPY --chown=$SERVER_USER_NAME:$SERVER_GROUP_NAME \
|
||||
./docker/devel/static-web-server /usr/local/bin/static-web-server
|
||||
COPY --chown=$SERVER_USER_NAME:$SERVER_GROUP_NAME \
|
||||
./docker/debian/entrypoint.sh /usr/local/bin/entrypoint.sh
|
||||
COPY --chown=$SERVER_USER_NAME:$SERVER_GROUP_NAME \
|
||||
./docker/public /home/$SERVER_USER_NAME/public
|
||||
|
||||
WORKDIR /home/$SERVER_USER_NAME
|
||||
|
||||
EXPOSE 80
|
||||
|
||||
STOPSIGNAL SIGQUIT
|
||||
|
||||
ENTRYPOINT ["/entrypoint.sh"]
|
||||
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
|
||||
|
||||
CMD ["static-web-server"]
|
||||
|
||||
@@ -25,5 +58,5 @@ LABEL org.opencontainers.image.vendor="Jose Quintana" \
|
||||
org.opencontainers.image.url="https://github.com/static-web-server/static-web-server" \
|
||||
org.opencontainers.image.title="Static Web Server" \
|
||||
org.opencontainers.image.description="A cross-platform, high-performance and asynchronous web server for static files-serving." \
|
||||
org.opencontainers.image.version="${SERVER_VERSION}" \
|
||||
org.opencontainers.image.documentation="https://github.com/static-web-server/static-web-server"
|
||||
org.opencontainers.image.version="$SERVER_VERSION" \
|
||||
org.opencontainers.image.documentation="https://static-web-server.net"
|
||||
|
||||
@@ -1,30 +1,59 @@
|
||||
FROM debian:12.12-slim
|
||||
FROM debian:13.1-slim
|
||||
|
||||
ENV SERVER_VERSION=devel
|
||||
ARG SERVER_VERSION=devel
|
||||
ARG SERVER_USER_NAME=sws
|
||||
ARG SERVER_USER_ID=1000
|
||||
ARG SERVER_GROUP_NAME=sws
|
||||
ARG SERVER_GROUP_ID=1000
|
||||
|
||||
ENV SERVER_VERSION=$SERVER_VERSION
|
||||
ENV SERVER_USER_ID=$SERVER_USER_ID
|
||||
ENV SERVER_USER_NAME=$SERVER_USER_NAME
|
||||
ENV SERVER_GROUP_ID=$SERVER_GROUP_ID
|
||||
ENV SERVER_GROUP_NAME=$SERVER_GROUP_NAME
|
||||
|
||||
LABEL version="${SERVER_VERSION}" \
|
||||
description="A cross-platform, high-performance and asynchronous web server for static files-serving." \
|
||||
maintainer="Jose Quintana <joseluisq.net>"
|
||||
|
||||
RUN set -eux \
|
||||
&& groupadd -r -g $SERVER_GROUP_ID $SERVER_GROUP_NAME \
|
||||
&& useradd -r -g $SERVER_GROUP_ID -u $SERVER_USER_ID $SERVER_USER_NAME \
|
||||
&& true
|
||||
|
||||
RUN set -eux \
|
||||
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \
|
||||
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \
|
||||
ca-certificates \
|
||||
tzdata \
|
||||
ca-certificates \
|
||||
tzdata \
|
||||
# Clean up local repository of retrieved packages and remove the package lists
|
||||
&& apt-get clean \
|
||||
&& rm -rf /var/lib/apt/lists/* \
|
||||
&& true
|
||||
|
||||
COPY ./docker/devel/static-web-server /usr/local/bin/
|
||||
COPY ./docker/debian/entrypoint.sh /
|
||||
COPY ./docker/public /public
|
||||
RUN set -eux \
|
||||
&& mkdir -p /home/$SERVER_USER_NAME/public \
|
||||
&& chown -R $SERVER_USER_NAME:$SERVER_GROUP_NAME /home/$SERVER_USER_NAME \
|
||||
&& ln -s /home/$SERVER_USER_NAME/public /var/public \
|
||||
&& chown -R $SERVER_USER_NAME:$SERVER_GROUP_NAME /var/public \
|
||||
&& true
|
||||
|
||||
USER $SERVER_USER_NAME:$SERVER_GROUP_NAME
|
||||
|
||||
COPY --chown=$SERVER_USER_NAME:$SERVER_GROUP_NAME \
|
||||
./docker/devel/static-web-server /usr/local/bin/static-web-server
|
||||
COPY --chown=$SERVER_USER_NAME:$SERVER_GROUP_NAME \
|
||||
./docker/debian/entrypoint.sh /usr/local/bin/entrypoint.sh
|
||||
COPY --chown=$SERVER_USER_NAME:$SERVER_GROUP_NAME \
|
||||
./docker/public /home/$SERVER_USER_NAME/public
|
||||
|
||||
WORKDIR /home/$SERVER_USER_NAME
|
||||
|
||||
EXPOSE 80
|
||||
|
||||
STOPSIGNAL SIGQUIT
|
||||
|
||||
ENTRYPOINT ["/entrypoint.sh"]
|
||||
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
|
||||
|
||||
CMD ["static-web-server"]
|
||||
|
||||
@@ -33,5 +62,5 @@ LABEL org.opencontainers.image.vendor="Jose Quintana" \
|
||||
org.opencontainers.image.url="https://github.com/static-web-server/static-web-server" \
|
||||
org.opencontainers.image.title="Static Web Server" \
|
||||
org.opencontainers.image.description="A cross-platform, high-performance and asynchronous web server for static files-serving." \
|
||||
org.opencontainers.image.version="${SERVER_VERSION}" \
|
||||
org.opencontainers.image.documentation="https://github.com/static-web-server/static-web-server"
|
||||
org.opencontainers.image.version="$SERVER_VERSION" \
|
||||
org.opencontainers.image.documentation="https://static-web-server.net"
|
||||
|
||||
@@ -21,5 +21,5 @@ LABEL org.opencontainers.image.vendor="Jose Quintana" \
|
||||
org.opencontainers.image.url="https://github.com/static-web-server/static-web-server" \
|
||||
org.opencontainers.image.title="Static Web Server" \
|
||||
org.opencontainers.image.description="A cross-platform, high-performance and asynchronous web server for static files-serving." \
|
||||
org.opencontainers.image.version="${SERVER_VERSION}" \
|
||||
org.opencontainers.image.documentation="https://github.com/static-web-server/static-web-server"
|
||||
org.opencontainers.image.version="$SERVER_VERSION" \
|
||||
org.opencontainers.image.documentation="https://static-web-server.net"
|
||||
|
||||
@@ -25,5 +25,5 @@ LABEL org.opencontainers.image.vendor="Jose Quintana" \
|
||||
org.opencontainers.image.url="https://github.com/static-web-server/static-web-server" \
|
||||
org.opencontainers.image.title="Static Web Server" \
|
||||
org.opencontainers.image.description="A cross-platform, high-performance and asynchronous web server for static files-serving." \
|
||||
org.opencontainers.image.version="${SERVER_VERSION}" \
|
||||
org.opencontainers.image.documentation="https://github.com/static-web-server/static-web-server"
|
||||
org.opencontainers.image.version="$SERVER_VERSION" \
|
||||
org.opencontainers.image.documentation="https://static-web-server.net"
|
||||
|
||||
Reference in New Issue
Block a user