Docker Installation
These instructions are for installing ASL3 within a Docker container. The utility of this is low because of the host-container kernel dependencies. Use of a normal installation is recommended.
Host / Container Kernel Compatibility
As app_rpt.so requires the DAHDI kernel modules, the container must be hosted on a Debian 12 system. The container must be able to compile the kernel module (using DKMS) for the exact kernel version provided to the container from the Host OS. Currently, the container must be recomposed after a reboot into a new kernel.
Advanced Concept
Use of Asterisk/app_rpt within a Docker container is not a trivial undertaking. The Docker structure is provided due to requests from the community but it is not the recommended way to install and use AllStarLink as it requires more configuration, not less, than a traditional installation.
Limited Support
Installation of Asterisk/app_rpt in a container is not a primary platform for AllStarLink v3. Updates, fixes, and support will occur on as "as available" basis. Users of the container are requested to help the project.
Git Repository
Create the directory /docker
(or use whatever is preferred), cd
to it,
and check out the Git repository containing the Docker configuration.
All commands on the rest of this page assume they are being run from
the directory containing the root of the Git repository.
For this manual page, the path used is /docker/ASL3-Docker
.
The Git repository is located at https://github.com/AllstarLink/asl3-docker. The following general steps can be used:
mkdir /docker
cd /docker
git clone https://github.com/AllStarLink/ASL3-Docker.git
cd ASL3-Docker
If the repository has already been checked out, but simply needs the latest
information, do git pull origin main
from the /docker/ASL3-Docker
directory.
For example:
cd /docker/ASL3-Docker
git pull origin main
System Requirements
The AllStarLink3 container will require about 2G of space available
to /var/lib/docker
.
Container Composition
Construct the docker container with:
docker compose up -d --build --force-recreate
The script asl3-init.sh
is used during the composition process to build the
system. Alterations for composing should be added here when possible
instead of the Dockerfile
or docker-compose.yml
. Do not delete
the fake-systemctl
- that is needed to simulate systemd configurations for
successful package installation.
Container Configuration
Configuration of Asterisk/ASL3 within the container is best done using
the asl-menu
program. This is invoked with:
docker exec -it allstarlink3 asl-menu
Restarting Asterisk for Config Changes
Due to the workings of containers, the "Restart Asterisk" functions
of asl-menu do not work. Changes make to the configuration
requires a container restart - docker restart allstarlink3
.
It is possible to use the Asterisk command rpt restart
to reload
app_rpt but that is not always reliable.
Interacting with Asterisk
Interacting with asterisk in the container is done using asterisk-cli.sh
:
docker exec -it allstarlink3 /asl3/asterisk-cli.sh
Viewing Asterisk Logs
Logs are viewed with docker logs allstarlink3
.
Stopping and Starting the Container
After the docker compose
command, the container will be running
with the initial configuration of Asterisk and app_rpt. The following
commands may be used to manage the container:
docker stop allstarlink3
- Stops the containerdocker start allstarlink3
- Starts the containerdocker restart allstarlink3
- Restart the container (effectively a stop/start)
The container will start on boot of the Host OS unless otherwise configured.
Container Rebuild After Host Kernel Upgrade
As stated above, the container must be managed in lock-step with the underlying kernel of the host operating system. After the kernel of the host has been upgraded, the container must be upgraded as well. The easiest way to do this is simply top stop and recompose the container:
docker stop allstarlink3
docker compose up -d --build --force-recreate
Upon start after the recomposition, DAHDI will be installed and working for the upgraded kernel.