diff options
Diffstat (limited to 'docker/cgit')
-rw-r--r-- | docker/cgit/Dockerfile | 23 | ||||
-rwxr-xr-x | docker/cgit/docker-entrypoint.sh | 14 | ||||
-rwxr-xr-x | docker/cgit/docker-init.py | 22 |
3 files changed, 59 insertions, 0 deletions
diff --git a/docker/cgit/Dockerfile b/docker/cgit/Dockerfile new file mode 100644 index 0000000..187cf10 --- /dev/null +++ b/docker/cgit/Dockerfile @@ -0,0 +1,23 @@ +FROM httpd + + +EXPOSE 80 +EXPOSE 443 + + +ARG DEBIAN_FRONTEND=noninteractive +RUN apt-get update + +RUN apt-get install -y \ + cgit \ + python3 + +RUN : \ + && a2enmod cgi + + +COPY docker-init.py / +COPY docker-entrypoint.sh / + +ENTRYPOINT ["/docker-entrypoint.sh"] +CMD ["init"] diff --git a/docker/cgit/docker-entrypoint.sh b/docker/cgit/docker-entrypoint.sh new file mode 100755 index 0000000..102d46c --- /dev/null +++ b/docker/cgit/docker-entrypoint.sh @@ -0,0 +1,14 @@ +#!/bin/sh + + +if [ "${1}" = "init" ]; then + service apache2 start + + /docker-init.py + + # TODO: https://git-scm.com/docs/gitweb#_generating_projects_list_using_gitweb + + tail -f /dev/null +else + exec "$@" +fi diff --git a/docker/cgit/docker-init.py b/docker/cgit/docker-init.py new file mode 100755 index 0000000..c5b47b8 --- /dev/null +++ b/docker/cgit/docker-init.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python3 + + +import sys, os +import re + + +with open("/etc/cgitrc", "r") as file: cgitrc = file.read() + + +for env_name, env_value in os.environ.items(): + if env_name.startswith('CGIT_'): + rc_name = env_name[5:].lower().replace('_', '-') + p = re.compile(r"({0}=)([\w\d]+)".format(rc_name)) + + if p.search(cgitrc): + cgitrc = p.sub(r"\1{0}".format(env_value), cgitrc) + else: + cgitrc += ("\n" + "{0}={1}".format(rc_name, env_value) + "\n") + + +with open("/etc/cgitrc", "w") as file: file.write(cgitrc) |