Setup with docker-s6
Created by Gustaf Neumann Vlad V, last modified by Vlad V 22 Sep 2022, at 11:20 PM
Basic installation
A quick way to install and test-drive OpenACS is via docker. The s6 docker images were developed by Vlad and use the docker overlay structures as supported by docker-compose, which is a tool for defining and running multi-container Docker applications.
The minimal setup for testing is to get the repository
git clone https://github.com/oupfiz5/openacs-s6 cd openacs-s6/src
and to run it there, e.g.
docker compose up
This command installs OpenACS (oacs-5-10) from GitHub, PostgreSQL (14.1) and NaviServer 4.99.23 and starts the server on port 8080. We are planning to merge and probably move this repository to the OpenACS project on GitHub.
More advanced installations
In some cases, a developer might need more control over versions used, running multiple different OpenACS versions and instances in parallel, etc. Docker allows composing newly configured setups more or less on the fly via specifying more command line options, or via .env files. Such a setup can be provided by creating the docker-compose setup on a common place on the machine and by creating multiple .env files.
git clone https://github.com/oupfiz5/openacs-s6 /var/www/openacs/docker-s6 cd /var/www/openacs/docker-s6/src
Create in this directory e.g. a file named oacs1.env with the following content:
# * Define port and project name COMPOSE_PROJECT_NAME="${COMPOSE_PROJECT_NAME:-oacs-8071}" # * Using potentially different compose files COMPOSE_FILE="${COMPOSE_FILE:-docker-compose.yaml}" # * Common TZ="${TZ:-UTC}" # * Postgres PGDATABASE="${PGDATABASE:-openacs}" PGHOST="${PGHOST:-postgres}" PGPASSWORD="${PGPASSWORD:-testing}" PGPORT="${PGPORT:-5432}" PGUSER="${PGUSER:-openacs}" POSTGRES_DB="${PGDATABASE}" POSTGRES_PASSWORD="${PGPASSWORD}" POSTGRES_REPOSITORY="postgres" POSTGRES_TAG="14.1-alpine" POSTGRES_USER="${PGUSER}" # * OpenACS NS_CONF="${NS_CONF:-/usr/local/ns/conf/openacs-config.tcl}" OACS_REPOSITORY="${OACS_REPOSITORY:-oupfiz5}" OACS_IMAGE_NAME="${OACS_IMAGE_NAME:-openacs-s6}" OACS_IMAGE_TAG="${OACS_IMAGE_TAG:-v3-oacs-5-10}" OACS_LISTEN_PORT="${OACS_LISTEN_PORT:-8071}" oacs_httpport='8000' oacs_db_user="${PGUSER}" oacs_db_passwod="${PGPASSWORD}" oacs_db_name="${PGDATABASE}" oacs_db_host="${PGHOST}" oacs_db_port="${PGPORT}" oacs_ipaddress='0.0.0.0'
Important variables are the listen port (OACS_LISTEN_PORT), the project name (COMPOSE_PROJECT_NAME) for running multiple instances at the same time without conflicting. In order to install other versions than the default (v3-oacs-5-10), the variable OACS_TAG can be used. See for more details the README file on GitHub (openacs-s6). For multiple instances, multiple such .env-files can be created.
To use an .env file oacs1.env one can run it as follows
(cd /var/www/openacs/docker-s6/src; docker compose up --env-file oacs1.env)
or run it in daemon mode by adding a “-d” after up.
Preliminaries
To use this setup, recent versions of docker and docker-compose are needed. There is a constant development, especially on docker-compose. The setup is tested with docker-compose 1.27 (as provided by macPorts on macOS) and with docker compose v2.10.2 under Linux. For docker compose under Linux, it is usually sufficient to get the binary (single file) from the docker download pages.