aboutsummaryrefslogtreecommitdiffstats
path: root/Dockerfile
diff options
context:
space:
mode:
authorLeonard Kugis <leonard@kug.is>2025-09-17 18:20:38 +0200
committerLeonard Kugis <leonard@kug.is>2025-09-17 18:20:38 +0200
commitc48fbfb7b85d9c5264be1d68063b8ac3af9e2899 (patch)
tree97c7d27e07392ba8ce303d0e917ee44972e94233 /Dockerfile
downloadcgithub-c48fbfb7b85d9c5264be1d68063b8ac3af9e2899.tar.gz
Initial commit
Diffstat (limited to 'Dockerfile')
-rw-r--r--Dockerfile59
1 files changed, 59 insertions, 0 deletions
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..59862b1
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,59 @@
+FROM debian:bookworm-slim AS assets
+
+RUN apt-get update && \
+ apt-get install -y --no-install-recommends curl ca-certificates && \
+ rm -rf /var/lib/apt/lists/* && \
+ find /var/log -type f -name '*.log*' -delete
+
+RUN mkdir -p /var/www/html/cgit-css && \
+ curl -sSL -o /var/www/html/favicon.ico https://git-scm.com/favicon.ico && \
+ curl -sSL -o /var/www/html/cgit-css/highlight.min.js https://raw.githubusercontent.com/highlightjs/cdn-release/refs/heads/11-stable/build/highlight.min.js && \
+ curl -sSL -o /var/www/html/cgit-css/github.min.css https://raw.githubusercontent.com/highlightjs/cdn-release/refs/heads/11-stable/build/styles/github.min.css && \
+ curl -sSL -o /var/www/html/cgit-css/github-dark.min.css https://raw.githubusercontent.com/highlightjs/cdn-release/refs/heads/11-stable/build/styles/github-dark.min.css && \
+ sed -i '1s/^/@media screen and (prefers-color-scheme: dark) {/' /var/www/html/cgit-css/github-dark.min.css && echo '}' >> /var/www/html/cgit-css/github-dark.min.css && \
+ echo 'User-agent: *\nDisallow: /' >> /var/www/html/robots.txt
+
+FROM debian:bookworm-slim
+
+RUN apt-get update && \
+ apt-get install -y --no-install-recommends apache2 cgit python3-markdown && \
+ rm -rf /var/lib/apt/lists/* && \
+ find /var/log -type f -name '*.log*' -delete
+
+COPY --from=assets /var/www/html /var/www/html
+COPY theme.css /var/www/html/cgit-css/
+COPY head-include.html /var/www/html/cgit-css/
+COPY md2html.py /usr/lib/cgit/filters/
+RUN cp /usr/share/cgit/cgit.css /usr/share/cgit/cgit.png /var/www/html/cgit-css/
+
+RUN echo 'Listen ${APACHE_PORT}' > /etc/apache2/ports.conf && \
+ echo 'ServerName ${APACHE_SERVER_NAME}' >> /etc/apache2/apache2.conf && \
+ sed -e '/^User /d' -e '/^Group /d' -e 's;^PidFile .*;PidFile ${APACHE_RUN_DIR}/apache.pid;gi' -e 's;^ErrorLog .*;ErrorLog /dev/stderr;gi' \
+ -e 's;Require all granted;Require all denied;gi' -e 's;"^\\\\.ht";"^\\.";g' -i /etc/apache2/apache2.conf && \
+ rm -f /etc/apache2/sites-enabled/* /etc/apache2/mods-enabled/* /etc/apache2/conf-enabled/* && \
+ ln -s ../mods-available/mpm_event.load /etc/apache2/mods-enabled/mpm_event.load && \
+ ln -s ../mods-available/mpm_event.conf /etc/apache2/mods-enabled/mpm_event.conf && \
+ ln -s ../mods-available/mime.load /etc/apache2/mods-enabled/mime.load && \
+ ln -s ../mods-available/alias.load /etc/apache2/mods-enabled/alias.load && \
+ ln -s ../mods-available/filter.load /etc/apache2/mods-enabled/filter.load && \
+ ln -s ../mods-available/deflate.load /etc/apache2/mods-enabled/deflate.load && \
+ ln -s ../mods-available/deflate.conf /etc/apache2/mods-enabled/deflate.conf && \
+ ln -s ../mods-available/headers.load /etc/apache2/mods-enabled/headers.load && \
+ ln -s ../mods-available/authn_core.load /etc/apache2/mods-enabled/authn_core.load && \
+ ln -s ../mods-available/authz_core.load /etc/apache2/mods-enabled/authz_core.load && \
+ ln -s ../mods-available/authn_file.load /etc/apache2/mods-enabled/authn_file.load && \
+ ln -s ../mods-available/authz_user.load /etc/apache2/mods-enabled/authz_user.load && \
+ ln -s ../mods-available/auth_basic.load /etc/apache2/mods-enabled/auth_basic.load && \
+ ln -s ../mods-available/cgid.load /etc/apache2/mods-enabled/cgid.load && \
+ echo 'TypesConfig /etc/mime.types\nDeflateAlterETag NoChange' > /etc/apache2/mods-enabled/mime.conf && \
+ echo 'ServerTokens Major\nServerSignature Off\nTraceEnable Off' > /etc/apache2/conf-enabled/security.conf && \
+ echo 'CustomLog /dev/stdout combined' > /etc/apache2/conf-enabled/access-log.conf
+
+COPY cgitrc /etc/
+COPY apache.conf /etc/apache2/sites-enabled/
+
+ENV APACHE_PORT=8080
+ENV APACHE_RUN_DIR=/dev/shm
+ENV APACHE_SERVER_NAME=cgit
+
+ENTRYPOINT ["/sbin/apache2", "-D", "FOREGROUND"]