So many changes sorry.

A. Two new environment vars:
1. WEB_ROOT
the web server will serve from / (/var/www/html) or a deeper directory

2. ARCH
if you only want to mirror amd64 you can use deb-amd64 instead of deb

B. Setup clean.sh to work from postmirror.sh. If postmirror.sh already
exists it is not touched. postmirror.sh can also be
edited to add other commands. It's in /var/www/html/var << this is the
way that apt-mirror works

C. Other little changes.
This commit is contained in:
Andrew Hurley 2020-04-08 21:49:50 +10:00
parent b3e76fe756
commit b5b3be4200
2 changed files with 70 additions and 30 deletions

View File

@ -2,25 +2,27 @@ FROM ubuntu:18.04
RUN \ RUN \
apt update && \ apt update && \
apt install -y apt-mirror apache2 && \ apt install -y apt-mirror apache2 rsync && \
apt autoremove -y && apt clean apt autoremove -y && apt clean
ENV DEBIAN_FRONTEND noninteractive ENV DEBIAN_FRONTEND noninteractive
ENV TIMEOUT 12h ENV TIMEOUT 12h
ENV WEB_ROOT /
ENV MIRROR_URL http://archive.ubuntu.com/ubuntu ENV MIRROR_URL http://archive.ubuntu.com/ubuntu
ENV DIST1 bionic ENV DIST1 bionic
ENV DIST2 focal ENV DIST2 ""
ENV DIST3 "" ENV DIST3 ""
ENV NTHREADS 10 ENV NTHREADS 10
ENV ARCH deb
ENV PUID 1000 ENV PUID 1000
ENV PGID 1000 ENV PGID 1000
RUN mkdir -p /var/www/html/ubuntu
RUN rm -f /var/run/apache2/apache2.pid RUN rm -f /var/run/apache2/apache2.pid
EXPOSE 80 EXPOSE 80
COPY setup.sh /setup.sh COPY setup.sh /setup.sh
VOLUME ["/var/www/html/"] VOLUME ["/var/www/html/"]
CMD ["/bin/bash", "setup.sh"] CMD ["/bin/bash", "setup.sh"]

View File

@ -3,39 +3,39 @@
TARGETFILE="/etc/apt/mirror.list" TARGETFILE="/etc/apt/mirror.list"
echo "configuring [$TARGETFILE] MIRROR_URL=[$MIRROR_URL]" echo "configuring [$TARGETFILE] MIRROR_URL=[$MIRROR_URL]"
echo " DIST1=[$DIST1] DIST2=[$DIST2]" echo " DIST1=[$DIST1] DIST2=[$DIST2] DIST3=[$DIST3]"
echo "#### config #### echo "#### config ####
set base_path /var/www/html/ubuntu set base_path /var/www/html/
set nthreads $NTHREADS set nthreads $NTHREADS
set _tilde 0" \ set _tilde 0" \
> "$TARGETFILE" > "$TARGETFILE"
if [[ ! -z "$DIST1" ]]; then if [[ ! -z "$DIST1" ]]; then
echo "# for release $DIST1 echo "# for release $DIST1
deb $MIRROR_URL $DIST1 main restricted universe multiverse $ARCH $MIRROR_URL $DIST1 main restricted universe multiverse
deb $MIRROR_URL $DIST1-updates main restricted universe multiverse $ARCH $MIRROR_URL $DIST1-updates main restricted universe multiverse
deb $MIRROR_URL $DIST1-backports main restricted universe multiverse $ARCH $MIRROR_URL $DIST1-backports main restricted universe multiverse
deb $MIRROR_URL $DIST1-security main restricted universe multiverse $ARCH $MIRROR_URL $DIST1-security main restricted universe multiverse
deb $MIRROR_URL $DIST1-proposed main restricted universe multiverse" >> "$TARGETFILE" $ARCH $MIRROR_URL $DIST1-proposed main restricted universe multiverse" >> "$TARGETFILE"
fi fi
if [[ ! -z "$DIST2" ]]; then if [[ ! -z "$DIST2" ]]; then
echo "# for release $DIST2 echo "# for release $DIST2
deb $MIRROR_URL $DIST2 main restricted universe multiverse $ARCH $MIRROR_URL $DIST2 main restricted universe multiverse
deb $MIRROR_URL $DIST2-updates main restricted universe multiverse $ARCH $MIRROR_URL $DIST2-updates main restricted universe multiverse
deb $MIRROR_URL $DIST2-backports main restricted universe multiverse $ARCH $MIRROR_URL $DIST2-backports main restricted universe multiverse
deb $MIRROR_URL $DIST2-security main restricted universe multiverse $ARCH $MIRROR_URL $DIST2-security main restricted universe multiverse
deb $MIRROR_URL $DIST2-proposed main restricted universe multiverse" >> "$TARGETFILE" $ARCH $MIRROR_URL $DIST2-proposed main restricted universe multiverse" >> "$TARGETFILE"
fi fi
if [[ ! -z "$DIST3" ]]; then if [[ ! -z "$DIST3" ]]; then
echo "# for release $DIST3 echo "# for release $DIST3
deb $MIRROR_URL $DIST3 main restricted universe multiverse $ARCH $MIRROR_URL $DIST3 main restricted universe multiverse
deb $MIRROR_URL $DIST3-updates main restricted universe multiverse $ARCH $MIRROR_URL $DIST3-updates main restricted universe multiverse
deb $MIRROR_URL $DIST3-backports main restricted universe multiverse $ARCH $MIRROR_URL $DIST3-backports main restricted universe multiverse
deb $MIRROR_URL $DIST3-security main restricted universe multiverse $ARCH $MIRROR_URL $DIST3-security main restricted universe multiverse
deb $MIRROR_URL $DIST3-proposed main restricted universe multiverse" >> "$TARGETFILE" $ARCH $MIRROR_URL $DIST3-proposed main restricted universe multiverse" >> "$TARGETFILE"
fi fi
echo "# for EXTRAS echo "# for EXTRAS
@ -45,22 +45,59 @@ $EXTRA3
$EXTRA4 $EXTRA4
$EXTRA5 $EXTRA5
#clean http://archive.ubuntu.com/ubuntu" >> "$TARGETFILE" clean $MIRROR_URL" >> "$TARGETFILE"
echo "content of [$TARGETFILE] is..." echo "content of [$TARGETFILE] is..."
echo "-------------------------------------" echo "-------------------------------------"
cat "$TARGETFILE" cat "$TARGETFILE" |sed -E "s~^(.*)$~>>> \1~g"
echo "-------------------------------------" echo "-------------------------------------"
echo
rm -f /var/run/apache2/apache2.pid rm -f /var/run/apache2/apache2.pid
echo "hacking www-data to become PUID=$PUID PGID=$PGID" echo "hacking www-data and apt-mirror to become PUID=$PUID PGID=$PGID"
SEDEX="s/www-data:x:[0-9]+:[0-9]+:/www-data:x:${PUID}:${PGID}:/g" SEDEX="s~(www-data|apt-mirror):x:[0-9]+:[0-9]+:~\1:x:${PUID}:${PGID}:~g"
echo "sed /etc/passwd with [$SEDEX]" sed -ri "$SEDEX" /etc/passwd
cat /etc/passwd | \ echo "regex: $SEDEX"
sed -E $SEDEX > /tmp/passy echo "-------------------------------------"
cp /tmp/passy /etc/passwd grep -E '(www-data|apt-mirror)' /etc/passwd |sed -E "s~^(.*)$~>>> \1~g"
rm /tmp/passy echo "-------------------------------------"
echo
echo "adding server name"
echo $'\nServerName apt-mirror' >> /etc/apache2/apache2.conf
echo "-------------------------------------"
grep -E 'ServerName' /etc/apache2/apache2.conf |sed -E "s~^(.*)$~>>> \1~g"
echo "-------------------------------------"
echo
echo "changing default site document root to $WEB_ROOT"
SEDEX="s~DocumentRoot\s+\/var\/www\/html\s*$~DocumentRoot \/var\/www\/html${WEB_ROOT}~"
sed -Ei "$SEDEX" /etc/apache2/sites-available/000-default.conf
echo "regex: $SEDEX"
echo "-------------------------------------"
grep -E 'DocumentRoot' /etc/apache2/sites-available/000-default.conf |sed -E "s~^(.*)$~>>> \1~g"
echo "-------------------------------------"
echo
echo "if no postmirror.sh then create and set to call clean.sh"
mkdir -p /var/www/html/var;
if [[ ! -f /var/www/html/var/postmirror.sh ]]; then
echo $'#!/bin/bash\ncd "${0%/*}"\necho "$(pwd)/clean.sh"\nsleep 5\n$(pwd)/clean.sh\n' > /var/www/html/var/postmirror.sh; fi
echo "-------------------------------------"
cat /var/www/html/var/postmirror.sh |sed -E "s~^(.*)$~>>> \1~g"
echo "-------------------------------------"
echo
echo "Changing ownership of all files on /var/www/html to apt-mirror"
chown -R apt-mirror:apt-mirror /var/www/html
echo
echo "starting apache server" echo "starting apache server"
service apache2 start service apache2 start
@ -70,6 +107,7 @@ echo "TIMEOUT is ${TIMEOUT}"
while true; do while true; do
echo "[$(date)] Starting apt-mirror" echo "[$(date)] Starting apt-mirror"
apt-mirror apt-mirror
#sleep 60
echo "[$(date)] Completed" echo "[$(date)] Completed"
echo "[$(date)] Sleeping $TIMEOUT to execute apt-mirror again ======" echo "[$(date)] Sleeping $TIMEOUT to execute apt-mirror again ======"
sleep "$TIMEOUT" sleep "$TIMEOUT"