# Dockerfile for Citadel
+#
+# Copyright (c) 2019-2022 by the citadel.org team
+#
+# This program is open source software. Use, duplication, or disclosure
+# is subject to the terms of the GNU General Public License, version 3.
+
+# This script implements a two stage build. In the first stage we load in a full set of
+# development tools and build all of the components, including a version of Berkeley DB newer than
+# the one supplied in the repo. Everything in /usr/local is copied into the second stage, which
+# is built with only runtime libraries to keep the image small.
+
+####################################################################################################
# Debian Slim has all of the architectures we build on (amd64, i386, arm32)
# The first stage build will bring in all of our development tools.
RUN apt -y install gcc bison make zlib1g-dev libldap2-dev libssl-dev gettext libical-dev libexpat1-dev curl libcurl4-openssl-dev git autoconf automake netbase libreadline-dev
# Build our own local copy of Berkeley DB, because the one included with the system libs is too old.
-# For the container ... we're going to do static binaries because disk is cheap and the Gotards are doing it this way now too.
+# We will install it to /usr/local and carry it over to the second stage build.
RUN sh -c 'mkdir /tmp/db_build && \
cd /tmp/db_build && \
curl -k https://easyinstall.citadel.org/db-6.2.32.NC.tar.gz | tar xvzf - && \
####################################################################################################
-# Second stage build is runtime only.
+# Second stage build only needs runtime libraries.
FROM debian:bullseye-slim AS final-stage
# All long term persistent data goes here. Any volume driver may be used.
terms of the GNU General Public License, version 3. It runs
on the Linux operating system, which uses the Linux kernel.
-This repository contains the elements to build a Docker container for
-the Citadel system. We hope that this will eventually become a mainstream
-distribution method for the software, replacing the problematic packages
-that continue falling out of date in individual Linux/Linux distributions.
+This builds a container that hosts the entire Citadel system, including the Citadel Server,
+along with WebCit and all supporting libraries. We are containerizing it to make it easy
+to deploy, not to turn it into a microservice, so please don't bother with the comments about
+containerizing a monolithic application.
+
+The container exposes a multitude of ports and expects a persistent volume to be mounted
+to /citadel-data , where the database, TLS key/certificate, and any uploaded files will be
+stored. It also accepts a build variable `branch` which can be set to any valid branch or
+tag in the git repository from which to build the container.
To build the container image, simply run the following command from this
directory: