Compare commits
No commits in common. "master" and "20190320" have entirely different histories.
18
.drone.yml
18
.drone.yml
@ -1,18 +0,0 @@
|
|||||||
kind: pipeline
|
|
||||||
name: default
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: docker
|
|
||||||
image: plugins/docker
|
|
||||||
network_mode: bridge
|
|
||||||
settings:
|
|
||||||
repo: sneak/ubuntumirror
|
|
||||||
username:
|
|
||||||
from_secret: docker_username
|
|
||||||
password:
|
|
||||||
from_secret: docker_password
|
|
||||||
tags:
|
|
||||||
- ${DRONE_BRANCH//\//-}-${DRONE_COMMIT_SHA:0:8}
|
|
||||||
- ${DRONE_COMMIT_SHA}
|
|
||||||
- ${DRONE_BRANCH/\//-}
|
|
||||||
- latest
|
|
28
Dockerfile
28
Dockerfile
@ -2,33 +2,6 @@ FROM phusion/baseimage:0.11
|
|||||||
|
|
||||||
VOLUME /var/mirror
|
VOLUME /var/mirror
|
||||||
|
|
||||||
ENV MIRROR_UPDATE_INTERVAL_SECONDS 43200
|
|
||||||
ENV UBUNTU_MIRROR_ARCHITECTURES amd64
|
|
||||||
# set to anything but 'false' to mirror source code as well
|
|
||||||
ENV UBUNTU_ENABLE_SOURCE_MIRRORING false
|
|
||||||
ENV UBUNTU_MIRROR_CATEGORIES main,universe,restricted,multiverse,main/debian-installer
|
|
||||||
ENV UBUNTU_MIRROR_UPSTREAM archive.ubuntu.com
|
|
||||||
ENV UBUNTU_MIRROR_UPSTREAM_PATH /ubuntu
|
|
||||||
ENV UBUNTU_MIRROR_PROJECTS bionic,bionic-updates,bionic-security,bionic-backports,focal,focal-updates,focal-security,focal-backports
|
|
||||||
|
|
||||||
# The following is the URL populated in /mirrors.txt as used by mirror://
|
|
||||||
# protocol scheme in sources.list
|
|
||||||
# the idea is that you can DNS rewrite 'mirrors.ubuntu.com' to this mirror
|
|
||||||
# and it will return a "list" of mirrors that includes only itself.
|
|
||||||
# then you can safely use something like the following in your sources.list
|
|
||||||
# and it will work with max speed on your own dns-rewritten lan and in the
|
|
||||||
# unmodified datacenter talking to the real mirrors.ubuntu.com:
|
|
||||||
#
|
|
||||||
# MURM="main universe restricted multiverse"
|
|
||||||
# C="$(lsb_release -cs)"
|
|
||||||
# M="mirror://mirrors.ubuntu.com/mirrors.txt"
|
|
||||||
# echo "deb $M $C $MURM" > /etc/apt/sources.list.new
|
|
||||||
# echo "deb $M $C-updates $MURM" >> /etc/apt/sources.list.new
|
|
||||||
# echo "deb $M $C-backports $MURM" >> /etc/apt/sources.list.new
|
|
||||||
# echo "deb $M $C-security $MURM" >> /etc/apt/sources.list.new
|
|
||||||
# mv /etc/apt/sources.list.new /etc/apt/sources.list
|
|
||||||
ENV THIS_MIRROR_URL http://172.17.0.1/ubuntu/
|
|
||||||
|
|
||||||
ADD ./sources.list /etc/apt/sources.list
|
ADD ./sources.list /etc/apt/sources.list
|
||||||
RUN echo "#!/bin/sh\nexit 101" > /usr/sbin/policy-rc.d
|
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
|
||||||
@ -51,5 +24,4 @@ RUN \
|
|||||||
gpg --import /usr/share/keyrings/ubuntu-archive-keyring.gpg && \
|
gpg --import /usr/share/keyrings/ubuntu-archive-keyring.gpg && \
|
||||||
cp $GNUPGHOME/pubring.kbx $GNUPGHOME/trustedkeys.kbx
|
cp $GNUPGHOME/pubring.kbx $GNUPGHOME/trustedkeys.kbx
|
||||||
|
|
||||||
|
|
||||||
EXPOSE 80
|
EXPOSE 80
|
||||||
|
@ -1,70 +1,36 @@
|
|||||||
# sneak/ubuntumirror
|
# sneak/ubuntumirror
|
||||||
|
|
||||||
Docker image for syncing ubuntu LTS mirrors to reduce network traffic and
|
Docker container for syncing bionic ubuntu LTS mirrors
|
||||||
speed up build times.
|
to reduce network traffic and speed up build times.
|
||||||
|
|
||||||
Then even your builds (where you can't specify links to other containers by
|
Then even your builds (where you can't specify links) will go fast.
|
||||||
hostname) will go fast.
|
|
||||||
|
|
||||||
# Levers
|
# Levers
|
||||||
|
|
||||||
## Paths
|
* `MIRROR_ARCHITECTURES`
|
||||||
|
|
||||||
The mirror stores all the data in a docker volume at path
|
|
||||||
`/var/mirror/ubuntu`. Map that somewhere else if you like.
|
|
||||||
|
|
||||||
## Environment Variables
|
|
||||||
|
|
||||||
* `UBUNTU_MIRROR_ARCHITECTURES`
|
|
||||||
* default `amd64`.
|
* default `amd64`.
|
||||||
* You may want `i386,amd64`.
|
* You may want `i386,amd64`.
|
||||||
* `UBUNTU_MIRROR_CATEGORIES`
|
* `MIRROR_CATEGORIES`
|
||||||
* Default `main,universe,restricted,multiverse`. Will use lots of disk.
|
* default `main,universe`.
|
||||||
* You may want `main,universe`.
|
* You may want `main,universe,restricted,multiverse`. Will use lots of
|
||||||
|
disk.
|
||||||
* `UBUNTU_MIRROR_PROJECTS`
|
* `UBUNTU_MIRROR_PROJECTS`
|
||||||
* Default
|
* default `xenial,xenial-updates,xenial-security,xenial-backports,bionic,bionic-updates,bionic-security,bionic-backports`.
|
||||||
`bionic,bionic-updates,bionic-security,bionic-backports,focal,focal-updates,focal-security,focal-backports`.
|
* `UBUNTU_MIRROR_SOURCE`
|
||||||
* You may want only `focal,focal-updates,focal-security,focal-backports`.
|
|
||||||
* `UBUNTU_MIRROR_UPSTREAM` - upstream server to mirror from
|
|
||||||
* 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
|
||||||
code).
|
code).
|
||||||
* `UBUNTU_ENABLE_SOURCE_MIRRORING` - do we want to mirror all the source code too?
|
* `MIRROR_INTERVAL_SECONDS` - mirror sync interval
|
||||||
* Default ``
|
|
||||||
* You may want `1` if you want to use up even more disk for your mirror
|
|
||||||
* `MIRROR_UPDATE_INTERVAL_SECONDS` - mirror update interval
|
|
||||||
* default `43200` (12h)
|
* default `43200` (12h)
|
||||||
* You may want `10800` (3h)
|
* You may want `10800` (3h)
|
||||||
|
|
||||||
# Example Startup
|
# Example dnsmasq setup
|
||||||
|
|
||||||
```
|
```
|
||||||
docker rm -f local-ubuntu-mirror
|
apt update && apt -y install dnsmasq
|
||||||
docker run -d --name local-ubuntu-mirror \
|
echo address=/mirrors.ubuntu.com/172.17.0.1 > /etc/dnsmasq.d/ubuntu-mirror-local
|
||||||
-v /storage/mirrors/ubuntu:/var/mirror/ubuntu \
|
|
||||||
--env MIRROR_UPDATE_INTERVAL_SECONDS=3600 \
|
|
||||||
--env UBUNTU_MIRROR_ARCHITECTURES=amd64 \
|
|
||||||
--env UBUNTU_MIRROR_UPSTREAM=us.archive.ubuntu.com \
|
|
||||||
--env UBUNTU_MIRROR_PROJECTS=focal,focal-updates,focal-security,focal-backports \
|
|
||||||
-p 8080:80 \
|
|
||||||
--restart unless-stopped \
|
|
||||||
sneak/ubuntumirror@sha256:7de7cc8245106bb574029a2dedca5aa218af08d802b989cdc7857fb57f876a02
|
|
||||||
```
|
```
|
||||||
|
|
||||||
# Example CapRover Definition File
|
Then, just add `--dns 172.17.0.1` to your /etc/default/docker opts
|
||||||
|
and bounce the docker daemon. Future containers will talk to your local
|
||||||
```
|
mirror.
|
||||||
{
|
|
||||||
"schemaVersion": 2,
|
|
||||||
"imageName": "sneak/ubuntumirror@sha256:7de7cc8245106bb574029a2dedca5aa218af08d802b989cdc7857fb57f876a02"
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
# Author
|
|
||||||
|
|
||||||
sneak <[sneak@sneak.berlin](mailto:sneak@sneak.berlin)>
|
|
||||||
|
|
||||||
# License
|
|
||||||
|
|
||||||
This software is released into the public domain.
|
|
||||||
|
|
||||||
|
15
docker-compose.yml
Normal file
15
docker-compose.yml
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
version: '2.0'
|
||||||
|
|
||||||
|
services:
|
||||||
|
mirror:
|
||||||
|
hostname: mirror
|
||||||
|
image: sneak/ubuntumirror
|
||||||
|
build: .
|
||||||
|
network_mode: bridge
|
||||||
|
volumes:
|
||||||
|
- "/mnt/scratch/mirror:/var/mirror"
|
||||||
|
ports:
|
||||||
|
- "172.17.0.1:80:80"
|
||||||
|
environment:
|
||||||
|
- UBUNTU_MIRROR_SOURCE=de.archive.ubuntu.com
|
||||||
|
- MIRROR_CATEGORIES=main,universe,restricted
|
@ -6,8 +6,8 @@ export HOME=/root
|
|||||||
# cleanup previous runs
|
# cleanup previous runs
|
||||||
rm -rf /var/mirror/ubuntu/.temp
|
rm -rf /var/mirror/ubuntu/.temp
|
||||||
|
|
||||||
while sleep 1 ; do
|
while true ; do
|
||||||
cd /opt/mirror && make
|
cd /opt/mirror && make
|
||||||
|
|
||||||
sleep ${MIRROR_UPDATE_INTERVAL_SECONDS}
|
sleep ${MIRROR_INTERVAL_SECONDS:-43200}
|
||||||
done
|
done
|
||||||
|
34
mirror/syncubuntu.sh
Normal file → Executable file
34
mirror/syncubuntu.sh
Normal file → Executable file
@ -4,42 +4,24 @@ set -x
|
|||||||
THISDIR="$(cd $(dirname "$BASH_SOURCE") && pwd -P)"
|
THISDIR="$(cd $(dirname "$BASH_SOURCE") && pwd -P)"
|
||||||
DST="/var/mirror"
|
DST="/var/mirror"
|
||||||
|
|
||||||
echo "$THIS_MIRROR_URL" > $DST/mirrors.txt
|
echo "http://172.17.0.1/ubuntu/" > $DST/mirrors.txt
|
||||||
chmod a+r $DST/mirrors.txt
|
chmod a+r $DST/mirrors.txt
|
||||||
|
|
||||||
mkdir -p "$DST/ubuntu"
|
mkdir -p "$DST/ubuntu"
|
||||||
|
|
||||||
export GNUPGHOME="/etc/debmirror/ubuntu"
|
export GNUPGHOME="/etc/debmirror/ubuntu"
|
||||||
|
|
||||||
SOURCEOPT="--nosource"
|
|
||||||
if [[ "$UBUNTU_ENABLE_SOURCE_MIRRORING" != "false" ]]; then
|
|
||||||
SOURCEOPT="--source"
|
|
||||||
fi
|
|
||||||
|
|
||||||
DONE=0
|
|
||||||
|
|
||||||
DIDIST="$(
|
|
||||||
echo -n "$UBUNTU_MIRROR_PROJECTS" | tr "," "\n" | grep -v "\-" | tr "\n" ","
|
|
||||||
)"
|
|
||||||
|
|
||||||
while [[ $DONE -eq 0 ]]; do
|
|
||||||
debmirror \
|
debmirror \
|
||||||
-a ${UBUNTU_MIRROR_ARCHITECTURES} \
|
-a ${MIRROR_ARCHITECTURES:-amd64} \
|
||||||
-s ${UBUNTU_MIRROR_CATEGORIES} \
|
--no-source \
|
||||||
-h ${UBUNTU_MIRROR_UPSTREAM} \
|
-s ${MIRROR_CATEGORIES:-main,universe} \
|
||||||
-d ${UBUNTU_MIRROR_PROJECTS} \
|
-h ${UBUNTU_MIRROR_SOURCE:-archive.ubuntu.com} \
|
||||||
$SOURCEOPT \
|
-d ${UBUNTU_MIRROR_PROJECTS:-bionic,bionic-updates,bionic-security,bionic-backports} \
|
||||||
--di-dist="$DIDIST" \
|
|
||||||
--di-arch=arches \
|
|
||||||
--ignore-small-errors \
|
--ignore-small-errors \
|
||||||
-r "$UBUNTU_MIRROR_UPSTREAM_PATH" \
|
-r /ubuntu \
|
||||||
--getcontents \
|
--getcontents \
|
||||||
--progress \
|
--progress \
|
||||||
--method=http \
|
--method=http \
|
||||||
$DST/ubuntu
|
$DST/ubuntu
|
||||||
if [[ $? -eq 0 ]]; then
|
|
||||||
DONE=1
|
|
||||||
fi
|
|
||||||
chmod -R a+rX $DST
|
chmod -R a+rX $DST
|
||||||
sleep 1
|
|
||||||
done
|
|
||||||
|
@ -3,14 +3,11 @@ worker_processes auto;
|
|||||||
|
|
||||||
pid /var/run/nginx.pid;
|
pid /var/run/nginx.pid;
|
||||||
|
|
||||||
error_log /dev/stdout info;
|
|
||||||
|
|
||||||
events {
|
events {
|
||||||
worker_connections 1024;
|
worker_connections 1024;
|
||||||
}
|
}
|
||||||
|
|
||||||
http {
|
http {
|
||||||
access_log /dev/stdout;
|
|
||||||
include /etc/nginx/mime.types;
|
include /etc/nginx/mime.types;
|
||||||
default_type application/octet-stream;
|
default_type application/octet-stream;
|
||||||
|
|
||||||
@ -33,12 +30,12 @@ http {
|
|||||||
|
|
||||||
index index.html index.htm;
|
index index.html index.htm;
|
||||||
|
|
||||||
location /ubuntu/ {
|
#location /ubuntu/ {
|
||||||
# # alias, not root!
|
# # alias, not root!
|
||||||
# # trailing slash important!
|
# # trailing slash important!
|
||||||
# alias /var/mirror/ubuntu/;
|
# alias /var/mirror/ubuntu/;
|
||||||
autoindex on;
|
# autoindex on;
|
||||||
}
|
#}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
11
sources.list
11
sources.list
@ -1,4 +1,7 @@
|
|||||||
deb mirror://mirrors.ubuntu.com/mirrors.txt bionic main universe restricted multiverse
|
# this can't be {us.,}archive.ubuntu.org because on the box
|
||||||
deb mirror://mirrors.ubuntu.com/mirrors.txt bionic-updates main universe restricted multiverse
|
# with dnsmasq changing that host to itself, rebuilding this fails
|
||||||
deb mirror://mirrors.ubuntu.com/mirrors.txt bionic-security main universe restricted multiverse
|
# unless the container is running already
|
||||||
deb mirror://mirrors.ubuntu.com/mirrors.txt bionic-backports main universe restricted multiverse
|
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
15
start-local-mirror.sh
Normal 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
|
Loading…
Reference in New Issue
Block a user