8 Commits

5 changed files with 32 additions and 24 deletions

View File

@@ -1,4 +1,4 @@
FROM phusion/baseimage:0.9.18 FROM phusion/baseimage:0.11
VOLUME /var/mirror VOLUME /var/mirror
@@ -7,7 +7,7 @@ RUN echo "#!/bin/sh\nexit 101" > /usr/sbin/policy-rc.d
# phusion baseimage says i'm not supposed to do this # phusion baseimage says i'm not supposed to do this
# and i don't care: # and i don't care:
RUN apt-get update && apt-get upgrade -y RUN apt-get update && apt-get upgrade -y
RUN apt-get install -y run-one nginx make debmirror RUN apt-get install -y run-one nginx make debmirror xz-utils
ADD ./mirror /opt/mirror ADD ./mirror /opt/mirror
ADD ./mirror.run /etc/service/mirror/run ADD ./mirror.run /etc/service/mirror/run
@@ -22,6 +22,6 @@ RUN \
mkdir -p $GNUPGHOME && \ mkdir -p $GNUPGHOME && \
chmod go-rwx $GNUPGHOME && \ chmod go-rwx $GNUPGHOME && \
gpg --import /usr/share/keyrings/ubuntu-archive-keyring.gpg && \ gpg --import /usr/share/keyrings/ubuntu-archive-keyring.gpg && \
cp $GNUPGHOME/pubring.gpg $GNUPGHOME/trustedkeys.gpg cp $GNUPGHOME/pubring.kbx $GNUPGHOME/trustedkeys.kbx
EXPOSE 80 EXPOSE 80

View File

@@ -1,13 +1,8 @@
# sneak/ubuntumirror # sneak/ubuntumirror
Docker container for syncing trusty and xenial ubuntu LTS mirrors Docker container for syncing bionic ubuntu LTS mirrors
to reduce network traffic and speed up build times. to reduce network traffic and speed up build times.
I recommend deploying this with a `--dns 172.17.0.1` in your
`/etc/default/docker` and dnsmasq bound to 172.17.0.1:53 to rewrite
`archive.ubuntu.com` to `172.17.0.1` (which this image will be listening and
serving on).
Then even your builds (where you can't specify links) will go fast. Then even your builds (where you can't specify links) will go fast.
# Levers # Levers
@@ -19,6 +14,8 @@ Then even your builds (where you can't specify links) will go fast.
* default `main,universe`. * default `main,universe`.
* You may want `main,universe,restricted,multiverse`. Will use lots of * You may want `main,universe,restricted,multiverse`. Will use lots of
disk. disk.
* `UBUNTU_MIRROR_PROJECTS`
* default `xenial,xenial-updates,xenial-security,xenial-backports,bionic,bionic-updates,bionic-security,bionic-backports`.
* `UBUNTU_MIRROR_SOURCE` * `UBUNTU_MIRROR_SOURCE`
* default `archive.ubuntu.com`. * default `archive.ubuntu.com`.
* You may want `xx.archive.ubuntu.com` (where `xx` is your country * You may want `xx.archive.ubuntu.com` (where `xx` is your country
@@ -30,14 +27,8 @@ Then even your builds (where you can't specify links) will go fast.
# Example dnsmasq setup # Example dnsmasq setup
``` ```
apt-get update && apt-get -y install dnsmasq apt update && apt -y install dnsmasq
cat > /etc/dnsmasq.d/docker <<EOF echo address=/mirrors.ubuntu.com/172.17.0.1 > /etc/dnsmasq.d/ubuntu-mirror-local
no-resolv
server=8.8.8.8
server=8.8.4.4
EOF
echo "172.17.0.1 archive.ubuntu.com" >> /etc/hosts
service dnsmasq restart
``` ```
Then, just add `--dns 172.17.0.1` to your /etc/default/docker opts Then, just add `--dns 172.17.0.1` to your /etc/default/docker opts

View File

@@ -16,13 +16,12 @@ debmirror \
--no-source \ --no-source \
-s ${MIRROR_CATEGORIES:-main,universe} \ -s ${MIRROR_CATEGORIES:-main,universe} \
-h ${UBUNTU_MIRROR_SOURCE:-archive.ubuntu.com} \ -h ${UBUNTU_MIRROR_SOURCE:-archive.ubuntu.com} \
-d trusty,trusty-updates,trusty-security,trusty-backports \ -d ${UBUNTU_MIRROR_PROJECTS:-bionic,bionic-updates,bionic-security,bionic-backports} \
-d xenial,xenial-updates,xenial-security,xenial-backports \
--ignore-small-errors \ --ignore-small-errors \
-r /ubuntu \ -r /ubuntu \
--getcontents \
--progress \ --progress \
--method=http \ --method=http \
$DST/ubuntu $DST/ubuntu
chmod -R a+rX $DST chmod -R a+rX $DST

View File

@@ -1,4 +1,7 @@
deb mirror://mirrors.ubuntu.com/mirrors.txt trusty main universe # this can't be {us.,}archive.ubuntu.org because on the box
deb mirror://mirrors.ubuntu.com/mirrors.txt trusty-updates main universe # with dnsmasq changing that host to itself, rebuilding this fails
deb mirror://mirrors.ubuntu.com/mirrors.txt trusty-backports main universe # unless the container is running already
deb mirror://mirrors.ubuntu.com/mirrors.txt trusty-security main universe deb http://mirrors.sonic.net/ubuntu bionic main universe
deb http://mirrors.sonic.net/ubuntu bionic-updates main universe
deb http://mirrors.sonic.net/ubuntu bionic-backports main universe
deb http://mirrors.sonic.net/ubuntu bionic-security main universe

15
start-local-mirror.sh Normal file
View File

@@ -0,0 +1,15 @@
#!/bin/bash
docker rm -f local-ubuntu-mirror
docker run -d --name local-ubuntu-mirror \
-v /storage/mirrors/ubuntu/ubuntu:/var/mirror/ubuntu \
--env UBUNTU_MIRROR_SOURCE=us.archive.ubuntu.com \
--env MIRROR_INTERVAL_SECONDS=10800 \
--env MIRROR_CATEGORIES=main,universe,restricted,multiverse \
--env MIRROR_ARCHITECTURES=amd64 \
--env UBUNTU_MIRROR_PROJECTS=bionic,bionic-updates,bionic-security,bionic-backports \
--dns 8.8.8.8 \
--dns 8.8.4.4 \
-p 172.17.0.1:80:80 \
--restart unless-stopped \
sneak/ubuntumirror:latest