parent
72b6f05c8d
commit
7bab68fe31
@ -0,0 +1,58 @@ |
||||
ARG ATHEME_UID=10000 |
||||
ARG ATHEME_VERSION=7.2.10-r2 |
||||
ARG BUILD_CONTRIB_MODULES= |
||||
|
||||
FROM alpine:latest AS builder |
||||
ARG ATHEME_VERSION |
||||
ARG BUILD_CONTRIB_MODULES |
||||
ARG MAKE_NUM_JOBS |
||||
|
||||
# Install build-deps and runtime deps |
||||
RUN apk add --no-cache \ |
||||
build-base \ |
||||
pkgconf \ |
||||
openssl-dev \ |
||||
git |
||||
|
||||
# libexecinfo is used by contrib/gen_echoserver |
||||
RUN test -z "$BUILD_CONTRIB_MODULES" || apk add --no-cache libexecinfo-dev |
||||
|
||||
# Checkout from Git - we need to manually bump the libmowgli snapshot to fix compilation against musl |
||||
# This will be fixed when 7.3 releases |
||||
RUN git clone \ |
||||
-b v${ATHEME_VERSION} \ |
||||
--depth=1 \ |
||||
--recursive \ |
||||
https://github.com/atheme/atheme.git /atheme-src |
||||
|
||||
WORKDIR /atheme-src |
||||
|
||||
RUN cd libmowgli-2 && \ |
||||
git pull origin master |
||||
|
||||
# Configure and build |
||||
RUN ./configure \ |
||||
--prefix=/srv/atheme $(test -z "$BUILD_CONTRIB_MODULES" || echo --enable-contrib) && \ |
||||
make -j${MAKE_NUM_JOBS:-$(nproc)} && \ |
||||
make install |
||||
|
||||
|
||||
FROM alpine:latest |
||||
ARG ATHEME_UID |
||||
ARG BUILD_CONTRIB_MODULES |
||||
|
||||
# openssl: used by some hashing and SASL algorithms |
||||
# msmtp: used to route mail to an external mail server |
||||
RUN apk add --no-cache \ |
||||
openssl \ |
||||
msmtp \ |
||||
ca-certificates \ |
||||
&& (test -z "$BUILD_CONTRIB_MODULES" || apk add --no-cache libexecinfo) |
||||
|
||||
RUN adduser -D -u $ATHEME_UID atheme |
||||
|
||||
COPY --from=builder --chown=atheme /srv/atheme /srv/atheme |
||||
|
||||
COPY root/ / |
||||
|
||||
ENTRYPOINT ["/entrypoint.sh"] |
@ -0,0 +1,34 @@ |
||||
#!/bin/sh |
||||
|
||||
DATADIR=/srv/data/etc |
||||
|
||||
mkdir -p "$DATADIR" |
||||
|
||||
chown atheme:atheme -R "$DATADIR" |
||||
|
||||
if [ ! -e $DATADIR/atheme.conf ]; then |
||||
echo "Configuration file not found. Generating it..." |
||||
cp /srv/atheme/etc/atheme.conf.example $DATADIR/atheme.conf |
||||
fi |
||||
|
||||
if ! test -w "$DATADIR/"; then |
||||
echo "ERROR: $DATADIR must be mounted to a directory writable by UID $ATHEME_UID" |
||||
exit 1 |
||||
fi |
||||
|
||||
DBPATH="$DATADIR/services.db" |
||||
if test -f "$DBPATH" && ! test -r "$DBPATH"; then |
||||
echo "ERROR: $DBPATH must be readable by UID $ATHEME_UID" |
||||
exit 1 |
||||
fi |
||||
|
||||
TMPPATH="$DATADIR/services.db.new" |
||||
if test -f "$TMPPATH" && ! test -w "$TMPPATH"; then |
||||
echo "ERROR: $TMPPATH must either not exist or be writable by UID $ATHEME_UID" |
||||
exit 1 |
||||
fi |
||||
|
||||
rm -f /srv/atheme/var/atheme.pid |
||||
su atheme -c "/srv/atheme/bin/atheme-services \ |
||||
-c $DATADIR/atheme.conf \ |
||||
-n" |
@ -1,20 +1,20 @@ |
||||
#!/bin/sh |
||||
|
||||
mkdir -p /srv/config /srv/logs |
||||
mkdir -p /srv/data/etc /srv/data/logs |
||||
|
||||
chown ircd:ircd -R /srv/config /srv/logs |
||||
chown solanum:solanum -R /srv/data |
||||
|
||||
if [ ! -e /srv/config/ircd.conf ]; then |
||||
if [ ! -e /srv/data/etc/ircd.conf ]; then |
||||
echo "Configuration file not found. Generating it..." |
||||
cp /srv/ircd/etc/ircd.conf.example /srv/config/ircd.conf |
||||
cp /srv/solanum/etc/ircd.conf.example /srv/data/etc/ircd.conf |
||||
fi |
||||
|
||||
if [ ! -e /srv/config/ircd.motd ]; then |
||||
if [ ! -e /srv/data/etc/ircd.motd ]; then |
||||
echo "MOTD file not found. Generating it..." |
||||
cp /srv/ircd/etc/ircd.motd /srv/config/ircd.motd |
||||
cp /srv/solanum/etc/ircd.motd /srv/data/etc/ircd.motd |
||||
fi |
||||
|
||||
su ircd -c "/srv/ircd/bin/solanum \ |
||||
-configfile /srv/config/ircd.conf \ |
||||
-logfile /srv/logs/ircd.logs \ |
||||
su solanum -c "/srv/solanum/bin/solanum \ |
||||
-configfile /srv/data/etc/ircd.conf \ |
||||
-logfile /srv/data/logs/ircd.logs \ |
||||
-foreground" |
||||
|
Loading…
Reference in new issue