Docker
Eggdrop has an official Docker image! While most things work the same, there are a few new errors that pop up, and ways to implement it. A docker-compose.yml example is hosted at https://github.com/eggheads/eggdrop-docker/blob/master/docker-compose.yml
Loading Tcl Packages
Many scripts require extra OS packages to be installed in order to function, such as tcl-tls, tcl-lib and libsqlite3-tcl. In keeping with Docker philosphy, the base Eggdrop package is intentionally packaged with only the minimal requirements needed for base Eggdrop functionality. However, users may easily add add packages when starting a container from the command line like this:
docker run -i eggdrop sh -c 'apk add tcl-lib tcl-tls && exec /home/eggdrop/eggdrop/entrypoint.sh eggdrop.conf'
For a docker-compose file, you can add the following line in the build section:
build: context: . dockerfile_inline: | FROM eggdrop:latest RUN apk add tcl-lib tcl-tls
Commonly Seen Errors
- When using a docker-compose file started from scratch, you may see the error message
"END OF FILE ON TERMINAL"
at startup. To fix this, add
stdin_open: true
to the docker-compose.yml file.
- In docker images for 1.9.3, 1.9.4, and 1.9.5, even after installing packages like tcl-lib and tcl-tls, Eggdrop still can't use them. This is because the install location for Tcl packages in alpine 3.18 and 3.19 do not match the install location of the version compiled by the Eggdrop image, causing errors similar to
can't find package
or similar when runningpackage require tls
or similar. To tell Eggdrop where to look for Tcl packages installed by the apk package manager, pass the environmental flag via docker command line-e TCLLIBPATH=/usr/lib
or via the partyline if the .tcl command is enabled by.tcl set env(TCLLIBPATH) /usr/lib
. If using compose, you can also edit the doker-compose.yml file and add:
environment: TCLLIB: /usr/lib