Docker

From EggWiki
Revision as of 15:30, 9 September 2024 by Geo (talk | contribs) (Add Tcl error msgs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

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 running package 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