This commit is contained in:
35
Dockerfile
35
Dockerfile
@@ -1,27 +1,22 @@
|
|||||||
# Example Dockerfile for amd64
|
ARG BUILD_BASE_IMAGE
|
||||||
ARG BASE_IMAGE=alpine:latest
|
FROM ${BUILD_BASE_IMAGE}
|
||||||
|
|
||||||
FROM ${BASE_IMAGE}
|
ARG BUILD_DATE
|
||||||
|
ARG BUILD_APP_VERSION
|
||||||
|
ARG BUILD_MAINTAINER
|
||||||
|
ARG DESCRIPTION
|
||||||
|
ARG BUILD_APPS
|
||||||
|
|
||||||
ARG MAINTAINER
|
LABEL description=${DESCRIPTION}
|
||||||
ARG TZ
|
LABEL build_version="${BUILD_MAINTAINER} version: ${BUILD_APP_VERSION} Build-date:- ${BUILD_DATE}"
|
||||||
ARG APP_NAME
|
LABEL maintainer="${BUILD_MAINTAINER}"
|
||||||
ARG APP_USER
|
|
||||||
|
|
||||||
LABEL maintainer="${MAINTAINER}"
|
RUN apk add --no-cache ${BUILD_APPS}
|
||||||
LABEL org.opencontainers.image.title="${APP_NAME}"
|
|
||||||
|
|
||||||
ENV TZ=${TZ}
|
COPY root/ /
|
||||||
ENV USER=${APP_USER}
|
|
||||||
|
|
||||||
RUN apk add --no-cache tzdata ca-certificates
|
EXPOSE 80
|
||||||
|
|
||||||
WORKDIR /app
|
VOLUME ["/config","/app/www"]
|
||||||
COPY ./config /app/config
|
|
||||||
COPY ./data /app/data
|
|
||||||
|
|
||||||
RUN adduser -D ${APP_USER} && chown -R ${APP_USER}:${APP_USER} /app
|
ENTRYPOINT ["/init"]
|
||||||
|
|
||||||
USER ${APP_USER}
|
|
||||||
|
|
||||||
CMD ["sh"]
|
|
||||||
@@ -1,27 +1,22 @@
|
|||||||
# Example Dockerfile for arm64
|
ARG BUILD_BASE_IMAGE
|
||||||
ARG BASE_IMAGE=alpine:latest
|
FROM ${BUILD_BASE_IMAGE}
|
||||||
|
|
||||||
FROM ${BASE_IMAGE}
|
ARG BUILD_DATE
|
||||||
|
ARG BUILD_APP_VERSION
|
||||||
|
ARG BUILD_MAINTAINER
|
||||||
|
ARG DESCRIPTION
|
||||||
|
ARG BUILD_APPS
|
||||||
|
|
||||||
ARG MAINTAINER
|
LABEL description=${DESCRIPTION}
|
||||||
ARG TZ
|
LABEL build_version="${BUILD_MAINTAINER} version: ${BUILD_APP_VERSION} Build-date:- ${BUILD_DATE}"
|
||||||
ARG APP_NAME
|
LABEL maintainer="${BUILD_MAINTAINER}"
|
||||||
ARG APP_USER
|
|
||||||
|
|
||||||
LABEL maintainer="${MAINTAINER}"
|
RUN apk add --no-cache ${BUILD_APPS}
|
||||||
LABEL org.opencontainers.image.title="${APP_NAME}"
|
|
||||||
|
|
||||||
ENV TZ=${TZ}
|
COPY root/ /
|
||||||
ENV USER=${APP_USER}
|
|
||||||
|
|
||||||
RUN apk add --no-cache tzdata ca-certificates
|
EXPOSE 80
|
||||||
|
|
||||||
WORKDIR /app
|
VOLUME ["/config","/app/www"]
|
||||||
COPY ./config /app/config
|
|
||||||
COPY ./data /app/data
|
|
||||||
|
|
||||||
RUN adduser -D ${APP_USER} && chown -R ${APP_USER}:${APP_USER} /app
|
ENTRYPOINT ["/init"]
|
||||||
|
|
||||||
USER ${APP_USER}
|
|
||||||
|
|
||||||
CMD ["sh"]
|
|
||||||
@@ -1,26 +1,23 @@
|
|||||||
## BUILD STAGE
|
## BUILD STAGE
|
||||||
BUILD_TAG=1.00
|
BUILD_TAG=3.23
|
||||||
BUILD_BASE_IMAGE=alpine:${BUILD_TAG}
|
BUILD_BASE_IMAGE=git.pi-farm.de/pi-farm/docker-baseimage-alpine:3.23
|
||||||
## Examples for BUILD_BASE_IMAGE
|
BUILD_MAINTAINER=pi-farm
|
||||||
# alpine:${BUILD_TAG}
|
BUILD_APP_VERSION=v${BUILD_TAG}
|
||||||
# git.pi-farm.de/pi-farm/docker-baseimage-alpine:v${BUILD_TAG}
|
BUILD_APP_NAME=alpine-mirror
|
||||||
#BUILD_ALPINE_ARCH_AMD64=x86_64
|
BUILD_APP_USER=pi
|
||||||
#BUILD_ALPINE_ARCH_AARCH64=aarch64
|
BUILD_APP_UID=1000
|
||||||
#BUILD_S6_ARCH_amd64=x86_64
|
BUILD_APP_GID=1000
|
||||||
#BUILD_S6_ARCH_aarch64=aarch64
|
BUILD_APPS=lighttpd,\
|
||||||
#BUILD_S6_OVERLAY_VERSION=3.2.0.2
|
lighttpd-mod_auth,\
|
||||||
#BUILD_MAINTAINER=pi-farm
|
rsync,\
|
||||||
#BUILD_APP_VERSION=v${BUILD_TAG}
|
vnstat
|
||||||
#BUILD_APP_NAME=basimage-alpine
|
|
||||||
#BUILD_APP_USER=pi
|
|
||||||
#BUILD_APP_GID=1000
|
|
||||||
## ENV STAGE
|
## ENV STAGE
|
||||||
ENV_TZ=Europe/Berlin
|
ENV_TZ=Europe/Berlin
|
||||||
ENV_PUID=1000
|
ENV_PUID=1000
|
||||||
ENV_PGID=1000
|
ENV_PGID=1000
|
||||||
# VOL_CONFIG=./config:/config
|
VOL_CONFIG=./config:/config
|
||||||
# VOL_DATA=./data:/data
|
VOL_DATA=./data:/app/www
|
||||||
# PORT_WEB=8080:80
|
PORT_WEB=8080:80
|
||||||
#PUSH=gitea,dockerhub
|
PUSH=gitea
|
||||||
DESCRIPTION="Example example example"
|
#,dockerhub
|
||||||
|
DESCRIPTION="Alpine Mirror with s6-overlay and lighttpd, rsync, vnstat, cron"
|
||||||
|
|||||||
21
root/defaults/alpine-mirror
Normal file
21
root/defaults/alpine-mirror
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# make sure we never run 2 rsync at the same time
|
||||||
|
lockfile="/tmp/alpine-mirror.lock"
|
||||||
|
if [ -z "$flock" ] ; then
|
||||||
|
exec env flock=1 flock -n $lockfile "$0" "$@"
|
||||||
|
fi
|
||||||
|
src=rsync://rsync.alpinelinux.org/alpine/
|
||||||
|
dest=/app/www/alpine/
|
||||||
|
|
||||||
|
exclude="--exclude v2.* --exclude v3.23 --exclude v3.1 --exclude v3.2 --exclude v3.3 --exclude v3.4 --exclude v3.5 --exclude v3.6 --exclude v3.7 --exclude v3.8 --exclude v3.9 --exclude v3.10 --exclude v3.11 --exclude v3.12 --exclude v3.13 --exclude v3.14 --exclude v3.15 --exclude>
|
||||||
|
mkdir -p "$dest"
|
||||||
|
/usr/bin/rsync \
|
||||||
|
--archive \
|
||||||
|
--update \
|
||||||
|
--hard-links \
|
||||||
|
--delete \
|
||||||
|
--delete-after \
|
||||||
|
--delay-updates \
|
||||||
|
--timeout=600 \
|
||||||
|
$exclude \
|
||||||
|
"$src" "$dest"
|
||||||
25
root/defaults/lighttpd.conf
Normal file
25
root/defaults/lighttpd.conf
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
server.document-root = "/app/www/alpine"
|
||||||
|
|
||||||
|
server.port = 80
|
||||||
|
|
||||||
|
server.username = "pi"
|
||||||
|
server.groupname = "users"
|
||||||
|
|
||||||
|
mimetype.assign = (
|
||||||
|
".html" => "text/html",
|
||||||
|
".txt" => "text/plain",
|
||||||
|
".jpg" => "image/jpeg",
|
||||||
|
".png" => "image/png",
|
||||||
|
".css" => "text/css",
|
||||||
|
".js" => "application/x-javascript",
|
||||||
|
".svg" => "image/svg+xml"
|
||||||
|
)
|
||||||
|
|
||||||
|
dir-listing.activate = "enable"
|
||||||
|
|
||||||
|
server.modules += ( "mod_access", "mod_accesslog", "mod_setenv" )
|
||||||
|
index-file.names = ( "index.html" )
|
||||||
|
server.event-handler = "linux-sysepoll"
|
||||||
|
setenv.add-response-header += (
|
||||||
|
"Cache-Control" => "must-revalidate"
|
||||||
|
)
|
||||||
4
root/defaults/rsyncd.conf
Normal file
4
root/defaults/rsyncd.conf
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
[alpine]
|
||||||
|
path = /app/www/alpine
|
||||||
|
comment = My Alpine Linux Mirror
|
||||||
|
RSYNC_OPTS="--bwlimit=500"
|
||||||
34
root/defaults/stats
Normal file
34
root/defaults/stats
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
output="/app/www/.stats"
|
||||||
|
nic="eth0"
|
||||||
|
|
||||||
|
generate_index() {
|
||||||
|
cat <<-EOF
|
||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="cache-control" content=no-cache">
|
||||||
|
<meta http-equiv="refresh" content="3000">
|
||||||
|
<title>Alpine Linux mirror statistics</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<table border="0">
|
||||||
|
<tr><td><img src="summary.png" alt="summary"></td><td><img src="hours.png" alt="hours"></td></tr>
|
||||||
|
<tr><td rowspan="2"><img src="days.png" alt="days"></td><td><img src="top10.png" alt="top10"></td></tr>
|
||||||
|
<tr><td><img src="months.png" alt="months"></td></tr>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ ! -f "$output"/index.html ]; then
|
||||||
|
mkdir -p $output
|
||||||
|
generate_index > "$output"/index.html
|
||||||
|
fi
|
||||||
|
|
||||||
|
for type in hours days months top10 summary hsummary vsummary; do
|
||||||
|
vnstati --${type} -i $nic -o $output/${type}.png
|
||||||
|
done
|
||||||
16
root/etc/s6-overlay/s6-rc.d/init-lighttpd-config/run
Normal file
16
root/etc/s6-overlay/s6-rc.d/init-lighttpd-config/run
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
#!/usr/bin/with-contenv bash
|
||||||
|
|
||||||
|
echo "Start: init-lighttpd-config run script"
|
||||||
|
|
||||||
|
mkdir -p /config /app/www
|
||||||
|
|
||||||
|
if [ ! -f /config/lighttpd.conf ]; then
|
||||||
|
echo "Copy default-config..."
|
||||||
|
cp /defaults/lighttpd.conf /config/lighttpd.conf
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Set permissions to PUID: ${PUID:-911} and PGID: ${PGID:-1000}"
|
||||||
|
chown -R "${PUID:-911}:${PGID:-1000}" /config
|
||||||
|
chown -R "${PUID:-911}:${PGID:-1000}" /app/www
|
||||||
|
|
||||||
|
echo "Finish: init-lighttpd-config"
|
||||||
1
root/etc/s6-overlay/s6-rc.d/init-lighttpd-config/type
Normal file
1
root/etc/s6-overlay/s6-rc.d/init-lighttpd-config/type
Normal file
@@ -0,0 +1 @@
|
|||||||
|
oneshot
|
||||||
1
root/etc/s6-overlay/s6-rc.d/init-lighttpd-config/up
Normal file
1
root/etc/s6-overlay/s6-rc.d/init-lighttpd-config/up
Normal file
@@ -0,0 +1 @@
|
|||||||
|
/etc/s6-overlay/s6-rc.d/init-lighttpd-config/run
|
||||||
16
root/etc/s6-overlay/s6-rc.d/init-rsync-config/run
Normal file
16
root/etc/s6-overlay/s6-rc.d/init-rsync-config/run
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
#!/usr/bin/with-contenv bash
|
||||||
|
|
||||||
|
echo "Start: init-rsync-config run script"
|
||||||
|
|
||||||
|
mkdir -p /config /app/www
|
||||||
|
|
||||||
|
if [ ! -f /config/rsyncd.conf ]; then
|
||||||
|
echo "Copy default-config..."
|
||||||
|
cp /defaults/rsyncd.conf /config/rsyncd.conf
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Set permissions to PUID: ${PUID:-911} and PGID: ${PGID:-1000}"
|
||||||
|
chown -R "${PUID:-911}:${PGID:-1000}" /config
|
||||||
|
chown -R "${PUID:-911}:${PGID:-1000}" /app/www
|
||||||
|
|
||||||
|
echo "Finish: init-rsync-config"
|
||||||
1
root/etc/s6-overlay/s6-rc.d/init-rsync-config/type
Normal file
1
root/etc/s6-overlay/s6-rc.d/init-rsync-config/type
Normal file
@@ -0,0 +1 @@
|
|||||||
|
oneshot
|
||||||
1
root/etc/s6-overlay/s6-rc.d/init-rsync-config/up
Normal file
1
root/etc/s6-overlay/s6-rc.d/init-rsync-config/up
Normal file
@@ -0,0 +1 @@
|
|||||||
|
/etc/s6-overlay/s6-rc.d/init-rsync-config/run
|
||||||
12
root/etc/s6-overlay/s6-rc.d/init-vnstat-config/run
Normal file
12
root/etc/s6-overlay/s6-rc.d/init-vnstat-config/run
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
#!/usr/bin/with-contenv bash
|
||||||
|
|
||||||
|
echo "Start: init-vnstat-config run script"
|
||||||
|
|
||||||
|
mkdir -p /config /app/www
|
||||||
|
|
||||||
|
if [ ! -f /etc/periodic/15min/stats ]; then
|
||||||
|
echo "Copy default-config..."
|
||||||
|
cp /defaults/stats /etc/periodic/15min/stats
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Finish: init-vnstat-config"
|
||||||
1
root/etc/s6-overlay/s6-rc.d/init-vnstat-config/trype
Normal file
1
root/etc/s6-overlay/s6-rc.d/init-vnstat-config/trype
Normal file
@@ -0,0 +1 @@
|
|||||||
|
oneshot
|
||||||
1
root/etc/s6-overlay/s6-rc.d/init-vnstat-config/up
Normal file
1
root/etc/s6-overlay/s6-rc.d/init-vnstat-config/up
Normal file
@@ -0,0 +1 @@
|
|||||||
|
/etc/s6-overlay/s6-rc.d/init-vnstat-config/run
|
||||||
3
root/etc/s6-overlay/s6-rc.d/svc-cron/dependencies
Normal file
3
root/etc/s6-overlay/s6-rc.d/svc-cron/dependencies
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
init-lighttpd-config
|
||||||
|
init-rsync-config
|
||||||
|
init-vnstat-config
|
||||||
3
root/etc/s6-overlay/s6-rc.d/svc-cron/run
Normal file
3
root/etc/s6-overlay/s6-rc.d/svc-cron/run
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
#!/usr/bin/with-contenv bash
|
||||||
|
|
||||||
|
exec crond -f
|
||||||
1
root/etc/s6-overlay/s6-rc.d/svc-cron/up
Normal file
1
root/etc/s6-overlay/s6-rc.d/svc-cron/up
Normal file
@@ -0,0 +1 @@
|
|||||||
|
longrun
|
||||||
1
root/etc/s6-overlay/s6-rc.d/svc-lighttpd/dependencies
Normal file
1
root/etc/s6-overlay/s6-rc.d/svc-lighttpd/dependencies
Normal file
@@ -0,0 +1 @@
|
|||||||
|
init-lighttpd-config
|
||||||
3
root/etc/s6-overlay/s6-rc.d/svc-lighttpd/run
Normal file
3
root/etc/s6-overlay/s6-rc.d/svc-lighttpd/run
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
#!/usr/bin/with-contenv bash
|
||||||
|
|
||||||
|
exec lighttpd -D -f /config/lighttpd.conf
|
||||||
1
root/etc/s6-overlay/s6-rc.d/svc-lighttpd/up
Normal file
1
root/etc/s6-overlay/s6-rc.d/svc-lighttpd/up
Normal file
@@ -0,0 +1 @@
|
|||||||
|
longrun
|
||||||
Reference in New Issue
Block a user