diff --git a/README.md b/README.md index 53342e2..ec23e20 100644 --- a/README.md +++ b/README.md @@ -4,4 +4,10 @@ The build files of an nginx:alpine mkdocs container that fetches from git. ## Building with Podman +The containerfile of either `mkdocs-git` or `mkdocs-git-multilang` can be build with [podman](https://podman.io/) by executing the following in the working directory (either `mkdocs-git/monolang` or `mkdocs-git/multilang`): +``` shell-session +sh$ podman build --network=pasta -f mkdocs-git.containerfile -t mkdocs-git:latest +``` + +An mkdocs-git container may then be deployed by specifying the git repository URL in the `GIT_REPO_URL` environment variable and additionally for the multilang version the list of languages in the `WIKI_LANG` environment variable. \ No newline at end of file diff --git a/monolang/mkdocs-git b/monolang/mkdocs-git index 60a65d9..27d1b54 100644 --- a/monolang/mkdocs-git +++ b/monolang/mkdocs-git @@ -1,6 +1,18 @@ #!/bin/sh +# Redirect standard error to standard output exec 2>&1 + +# Activate the Python virtual environment +source ${VIRTUAL_ENV}/bin/activate + +# Check if the /mkdocs/repo directory exists +# If it does not exist, clone the repository from the specified GIT_REPO_URL find /mkdocs/repo || git clone $GIT_REPO_URL /mkdocs/repo + +# Change directory to the cloned repository and pull the latest changes cd /mkdocs/repo && git pull + +# Build mkdocs using the configuration file located at /mkdocs/repo/mkdocs.yml +# The output will be directed to /usr/share/nginx/html exec mkdocs build -f /mkdocs/repo/mkdocs.yml -d /usr/share/nginx/html \ No newline at end of file diff --git a/multilang/mkdocs-git-multilang b/multilang/mkdocs-git-multilang index e9a7dc5..a1e741d 100644 --- a/multilang/mkdocs-git-multilang +++ b/multilang/mkdocs-git-multilang @@ -1,9 +1,20 @@ #!/bin/sh +# Redirect standard error to standard output exec 2>&1 + +# Activate the Python virtual environment +source ${VIRTUAL_ENV}/bin/activate + +# Check if the /mkdocs/repo directory exists +# If it does not exist, clone the repository from the specified GIT_REPO_URL find /mkdocs/repo || git clone $GIT_REPO_URL /mkdocs/repo + +# Change directory to the cloned repository and pull the latest changes cd /mkdocs/repo && git pull +# Build mkdocs using the configuration file of each lang +# The output will be directed the subsequent lang directory in /usr/share/nginx/html for lang in $WIKI_LANG do mkdocs build -f /mkdocs/repo/config/${lang}/mkdocs.yml -d /usr/share/nginx/html/${lang} diff --git a/multilang/mkdocs-git-multilang.containerfile b/multilang/mkdocs-git-multilang.containerfile index 92e3d5d..94650ee 100644 --- a/multilang/mkdocs-git-multilang.containerfile +++ b/multilang/mkdocs-git-multilang.containerfile @@ -1,25 +1,39 @@ FROM nginx:alpine +# Set environment variables ENV PORT="80" -COPY default.conf.env /etc/nginx/conf.d/default.conf.env +ENV VIRTUAL_ENV="/mkdocs" +ENV PATH="$VIRTUAL_ENV/bin:$PATH" -RUN apk add envsubst \ - && touch /docker-entrypoint.d/port.sh \ - && echo "exec envsubst < /etc/nginx/conf.d/default.conf.env > /etc/nginx/conf.d/default.conf && nginx -s reload" > /docker-entrypoint.d/port.sh \ - && chmod 776 /docker-entrypoint.d/port.sh - -RUN apk add git \ - && apk add mkdocs \ - && apk add mkdocs-material \ - && apk add py3-regex +# Install necessary packages +RUN apk add --no-cache git python3 envsubst +# Create work directory RUN mkdir /mkdocs WORKDIR /mkdocs +# Create virtual environment +RUN python -m venv $VIRTUAL_ENV + +# Install necessary packages in virtual environment +RUN pip install --no-cache-dir mkdocs mkdocs-material + +# Configure nginx environment +COPY default.conf.env /etc/nginx/conf.d/default.conf.env + +# Configure entrypoints +RUN touch /docker-entrypoint.d/port.sh \ + && echo "exec envsubst < /etc/nginx/conf.d/default.conf.env > /etc/nginx/conf.d/default.conf && nginx -s reload" > /docker-entrypoint.d/port.sh \ + && chmod 776 /docker-entrypoint.d/port.sh + +# Configure cron COPY root /etc/crontabs/root + +# Configure mkdocs-git-multilang COPY mkdocs-git-multilang /bin/mkdocs-git-multilang RUN chmod 744 /bin/mkdocs-git-multilang +# Configure cron entrypoints RUN touch /docker-entrypoint.d/cron.sh \ && echo "exec crond" > /docker-entrypoint.d/cron.sh \ && chmod 776 /docker-entrypoint.d/cron.sh \ No newline at end of file