mirror of
https://github.com/arcan1s/ahriman.git
synced 2025-04-24 15:27:17 +00:00
* Allow to use single web instance for any repository * some improvements * drop includes from user home directory, introduce new variables to docker The old solution didn't actually work as expected, because devtools configuration belongs to filesystem (as well as sudo one), so it was still required to run setup command. In order to handle additional repositories, the POSTSETUP and PRESETUP commands variables have been introduced. FAQ has been updated as well * raise 404 in case if repository is unknown
65 lines
2.8 KiB
Docker
65 lines
2.8 KiB
Docker
FROM archlinux:base
|
|
|
|
# image configuration
|
|
ENV AHRIMAN_ARCHITECTURE="x86_64"
|
|
ENV AHRIMAN_DEBUG=""
|
|
ENV AHRIMAN_FORCE_ROOT=""
|
|
ENV AHRIMAN_HOST="0.0.0.0"
|
|
ENV AHRIMAN_MULTILIB="yes"
|
|
ENV AHRIMAN_OUTPUT=""
|
|
ENV AHRIMAN_PACKAGER="ahriman bot <ahriman@example.com>"
|
|
ENV AHRIMAN_PACMAN_MIRROR=""
|
|
ENV AHRIMAN_PORT=""
|
|
ENV AHRIMAN_POSTSETUP_COMMAND=""
|
|
ENV AHRIMAN_PRESETUP_COMMAND=""
|
|
ENV AHRIMAN_REPOSITORY="aur-clone"
|
|
ENV AHRIMAN_REPOSITORY_SERVER=""
|
|
ENV AHRIMAN_REPOSITORY_ROOT="/var/lib/ahriman/ahriman"
|
|
ENV AHRIMAN_UNIX_SOCKET=""
|
|
ENV AHRIMAN_USER="ahriman"
|
|
ENV AHRIMAN_VALIDATE_CONFIGURATION="yes"
|
|
|
|
# install environment
|
|
## update pacman.conf with multilib
|
|
RUN echo "[multilib]" >> "/etc/pacman.conf" && \
|
|
echo "Include = /etc/pacman.d/mirrorlist" >> "/etc/pacman.conf"
|
|
## install minimal required packages
|
|
RUN pacman --noconfirm -Syu binutils fakeroot git make sudo
|
|
## create build user
|
|
RUN useradd -m -d "/home/build" -s "/usr/bin/nologin" build && \
|
|
echo "build ALL=(ALL) NOPASSWD: ALL" > "/etc/sudoers.d/build"
|
|
COPY "docker/install-aur-package.sh" "/usr/local/bin/install-aur-package"
|
|
## install package dependencies
|
|
## darcs is not installed by reasons, because it requires a lot haskell packages which dramatically increase image size
|
|
RUN pacman -Sy --noconfirm --asdeps devtools git pyalpm python-cerberus python-inflection python-passlib python-requests python-srcinfo && \
|
|
pacman -Sy --noconfirm --asdeps python-build python-flit python-installer python-wheel && \
|
|
pacman -Sy --noconfirm --asdeps breezy mercurial python-aiohttp python-aiohttp-cors python-boto3 python-cryptography python-jinja python-requests-unixsocket python-systemd rsync subversion && \
|
|
runuser -u build -- install-aur-package python-aioauth-client python-aiohttp-apispec-git python-aiohttp-jinja2 \
|
|
python-aiohttp-debugtoolbar python-aiohttp-session python-aiohttp-security
|
|
|
|
## FIXME since 1.0.4 devtools requires dbus to be run, which doesn't work now in container
|
|
COPY "docker/systemd-nspawn.sh" "/usr/local/bin/systemd-nspawn"
|
|
|
|
# install ahriman
|
|
## copy tree
|
|
COPY --chown=build . "/home/build/ahriman"
|
|
## create package archive and install it
|
|
RUN cd "/home/build/ahriman" && \
|
|
make VERSION=$(python -c "from src.ahriman import __version__; print(__version__)") archlinux && \
|
|
cp ./*-src.tar.xz "package/archlinux" && \
|
|
cd "package/archlinux" && \
|
|
runuser -u build -- makepkg --noconfirm --install --skipchecksums && \
|
|
cd / && rm -r "/home/build/ahriman"
|
|
|
|
# cleanup unused
|
|
RUN find "/var/cache/pacman/pkg" -type f -delete
|
|
RUN pacman -Qdtq | pacman -Rscn --noconfirm -
|
|
|
|
VOLUME ["/var/lib/ahriman"]
|
|
|
|
# minimal runtime ahriman setup
|
|
COPY "docker/entrypoint.sh" "/usr/local/bin/entrypoint"
|
|
ENTRYPOINT ["entrypoint"]
|
|
# default command
|
|
CMD ["repo-update", "--refresh"]
|