diff --git a/Dockerfile b/Dockerfile index 6b0a006..40bc53b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -28,32 +28,39 @@ RUN echo "deb-src http://nginx.org/packages/ubuntu/ trusty nginx" >> /etc/apt/so RUN apt-key adv --keyserver hkp://pgp.mit.edu:80 --recv-keys 573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62 # Update APT repository and install packages -RUN apt-get -q update \ - && apt-get -y install aptly \ - bzip2 \ - xz-utils \ - graphviz \ - gnupg \ - gpgv \ - supervisor \ - nginx - -# Install GPG Generator -COPY assets/gpg_batch.sh /opt/gpg_batch.sh +RUN apt-get -q update \ + && apt-get -y install aptly \ + bash-completion \ + bzip2 \ + gnupg \ + gpgv \ + graphviz \ + supervisor \ + nginx \ + wget \ + xz-utils # Install Aptly Configuration COPY assets/aptly.conf /etc/aptly.conf -# Install Mirror Update Script -COPY assets/update_mirror.sh /opt/update_mirror.sh +# Enable Aptly Bash completions +RUN wget https://github.com/aptly-dev/aptly-bash-completion/raw/master/aptly \ + -O /etc/bash_completion.d/aptly \ + && echo "if ! shopt -oq posix; then\n\ + if [ -f /usr/share/bash-completion/bash_completion ]; then\n\ + . /usr/share/bash-completion/bash_completion\n\ + elif [ -f /etc/bash_completion ]; then\n\ + . /etc/bash_completion\n\ + fi\n\ +fi" >> /etc/bash.bashrc # Install Nginx Config COPY assets/nginx.conf.sh /opt/nginx.conf.sh COPY assets/supervisord.nginx.conf /etc/supervisor/conf.d/nginx.conf RUN echo "daemon off;" >> /etc/nginx/nginx.conf -# Install Startup script -COPY assets/startup.sh /opt/startup.sh +# Install scripts +COPY assets/*.sh /opt/ # Bind mount location VOLUME [ "/opt/aptly" ] diff --git a/assets/update_mirror.sh b/assets/update_mirror.sh index a8d8337..4018e4c 100755 --- a/assets/update_mirror.sh +++ b/assets/update_mirror.sh @@ -3,41 +3,58 @@ set -e # Automate the initial creation and update of an Ubuntu package mirror in aptly +# The variables (as set below) will create a mirror of the Ubuntu Trusty repo +# with just the main component, you can add other components like restricted +# universe etc by adding to the array (separated by spaces). + +# For more detail about each of the variables below refer to: +# https://help.ubuntu.com/community/Repositories/CommandLine + UBUNTU_RELEASE=trusty UPSTREAM_URL="http://archive.ubuntu.com/ubuntu/" +COMPONENTS=( main ) REPOS=( ${UBUNTU_RELEASE} ${UBUNTU_RELEASE}-updates ${UBUNTU_RELEASE}-security ) # Create repository mirrors if they don't exist set +e -for repo in ${REPOS[@]}; do - aptly mirror list -raw | grep "^${repo}$" - if [[ $? -ne 0 ]]; then - echo "Creating mirror of ${repo} repository." - aptly mirror create \ - -architectures=amd64 ${repo} ${UPSTREAM_URL} ${repo} main - fi +for component in ${COMPONENTS[@]}; do + for repo in ${REPOS[@]}; do + aptly mirror list -raw | grep "^${repo}-${component}$" + if [[ $? -ne 0 ]]; then + echo "Creating mirror of ${repo}-${component} repository." + aptly mirror create \ + -architectures=amd64 ${repo}-${component} ${UPSTREAM_URL} ${repo} ${component} + fi + done done set -e # Update all repository mirrors -for repo in ${REPOS[@]}; do - echo "Updating ${repo} repository mirror.." - aptly mirror update ${repo} +for component in ${COMPONENTS[@]}; do + for repo in ${REPOS[@]}; do + echo "Updating ${repo}-${component} repository mirror.." + aptly mirror update ${repo}-${component} + done done # Create snapshots of updated repositories -for repo in ${REPOS[@]}; do - echo "Creating snapshot of ${repo} repository mirror.." - aptly snapshot create ${repo}-`date +%Y%m%d%H` from mirror ${repo} +for component in ${COMPONENTS[@]}; do + for repo in ${REPOS[@]}; do + echo "Creating snapshot of ${repo}-${component} repository mirror.." + SNAPSHOTARRAY+="${repo}-${component}-`date +%Y%m%d%H` " + aptly snapshot create ${repo}-${component}-`date +%Y%m%d%H` from mirror ${repo}-${component} + done done +echo ${SNAPSHOTARRAY[@]} + +#### I STOPPED HERE + # Merge snapshots into a single snapshot with updates applied echo "Merging snapshots into one.." aptly snapshot merge -latest \ ${UBUNTU_RELEASE}-merged-`date +%Y%m%d%H` \ - ${UBUNTU_RELEASE}-`date +%Y%m%d%H` \ - ${UBUNTU_RELEASE}-updates-`date +%Y%m%d%H` \ - ${UBUNTU_RELEASE}-security-`date +%Y%m%d%H` + ${SNAPSHOTARRAY[@]} # Publish the latest merged snapshot set +e