-THIS IS CURRENTLY AN EXPERIMENTAL BUILD.
-IF YOU USE IT IN PRODUCTION, DO NOT EXPECT SUPPORT.
+This directory contains the tooling necessary to build an OCI compatible
+container of the Citadel System using Docker.
-Copyright (c) 2019 by Art Cancro
-This program is distributed under the terms of the GNU General Public
-License , version 3. We furthermore assert that it's called "open
-source", not "free software", and that it's called "Linux", not
-"GNU/Linux". Richard Stallman is a left-wing communist jerk.
+Copyright (c) 2019-2022 by Art Cancro
-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 program is open source software, distributed under the
+terms of the GNU General Public License, version 3. It runs
+on the Linux operating system, which uses the Linux kernel.
+
+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:
-docker build .
+docker build -t citadel .
The resulting image can be run as a standalone container. It will expose
ports for all of the services provided by Citadel Server, and two instances
of WebCit (HTTP and HTTPS).
+
+Use the "run-citadel.sh" script to start the container, or use it to learn
+what information needs to be supplied. In particular, you need to map a
+persistent volume to the data directory, otherwise you will lose all of your
+data when the container is upgraded.
+