Select Git revision
Dockerfile.v0.13
-
Janne Mareike Koschinski authoredJanne Mareike Koschinski authored
Dockerfile.v0.13 5.54 KiB
# development image
ARG BASE=alpine:3.10
FROM $BASE AS builder
# install development dependencies
RUN apk add --no-cache \
cmake \
curl \
dbus-dev \
g++ \
gcc \
git \
libressl \
libressl-dev \
openldap-dev \
ninja \
paxmark \
boost-dev \
qt5-qtbase-dev \
qt5-qtbase-postgresql \
qt5-qtbase-sqlite \
qt5-qtscript-dev
ARG QUASSEL_VERSION="0.13.1"
# setup repo
RUN mkdir /quassel && \
git clone -b 0.13 --single-branch https://github.com/quassel/quassel /quassel/src && \
cd /quassel/src && \
if [ ! -z "$QUASSEL_VERSION" ]; then \
git checkout $QUASSEL_VERSION; \
fi
# generate build files
RUN mkdir /quassel/build && \
cd /quassel/build && \
CXXFLAGS="-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -fPIE -pie -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now" \
cmake \
-GNinja \
-DCMAKE_INSTALL_PREFIX=/quassel/install \
-DCMAKE_BUILD_TYPE="Release" \
-DUSE_QT5=ON \
-DWITH_KDE=OFF \
-DWANT_QTCLIENT=OFF \
-DWANT_CORE=ON \
-DWANT_MONO=OFF \
/quassel/src
# build binaries
RUN cd /quassel/build && \
ninja && \
ninja install && \
paxmark -m /quassel/install/bin/quasselcore
# generate empty directory so docker doesn’t break
RUN mkdir -p /quassel/install/lib_fix_docker_copy
# runtime image
FROM $BASE
# install runtime dependencies
RUN apk add --no-cache \
bash \
boost \
libressl \
libldap \
qt5-qtbase \
qt5-qtbase-postgresql \
qt5-qtbase-sqlite \
qt5-qtscript
# copy binaries
COPY --from=builder /quassel/install/bin /usr/bin/
COPY --from=builder /quassel/install/lib* /usr/lib/
# setup user environment
RUN addgroup -g 1000 -S quassel && \
adduser -S -G quassel -u 1000 -s /bin/sh -h /config quassel
USER quassel
VOLUME /config
# expose ports
EXPOSE 4242/tcp
EXPOSE 10113/tcp
# Specify the directory holding configuration files, the SQlite database and the SSL certificate.
ENV CONFIG_DIR="/config"
# The address(es) quasselcore will listen on.
ENV QUASSEL_LISTEN="::,0.0.0.0"
# The port quasselcore will listen at.
ENV QUASSEL_PORT="4242"
# Don't restore last core's state.
ENV NORESTORE="false"
# Use users' quasselcore username as ident reply. Ignores each user's configured ident setting.
ENV STRICT_IDENT="false"
# Enable internal ident daemon.
ENV IDENT_ENABLED="false"
# The address(es) quasselcore will listen on for ident requests. Same format as --listen.
ENV IDENT_LISTEN="::1,127.0.0.1"
# The port quasselcore will listen at for ident requests. Only meaningful with --ident-daemon.
ENV IDENT_PORT="10113"
# Enable oidentd integration. In most cases you should also enable --strict-ident.
ENV OIDENTD_ENABLED="false"
# Set path to oidentd configuration file.
ENV OIDENTD_CONF_FILE=""
# Require SSL for remote (non-loopback) client connections.
ENV SSL_REQUIRED="false"
# Specify the base64 encoded data for the SSL certificate.
ENV SSL_CERT_DATA=""
# Specify the path to the SSL certificate.
ENV SSL_CERT_FILE=""
# Specify the base64 encoded data for the SSL certificate.
ENV SSL_KEY_DATA=""
# Specify the path to the SSL key.
ENV SSL_KEY_FILE=""
# Enable metrics API.
ENV METRICS_ENABLED="false"
# The address(es) quasselcore will listen on for metrics requests. Same format as --listen.
ENV METRICS_LISTEN="::1,127.0.0.1"
# The port quasselcore will listen at for metrics requests. Only meaningful with --metrics-daemon.
ENV METRICS_PORT="9558"
# Supports one of Debug|Info|Warning|Error; default is Info.
ENV LOGLEVEL="Info"
# Enable logging of all SQL queries to debug log, also sets --loglevel Debug automatically
ENV DEBUG_ENABLED="false"
# Enable logging of all raw IRC messages to debug log, including passwords! In most cases you should also set --loglevel Debug
ENV DEBUG_IRC_ENABLED="false"
# Limit raw IRC logging to this network ID. Implies --debug-irc
ENV DEBUG_IRC_ID=""
# Enable logging of all parsed IRC messages to debug log, including passwords! In most cases you should also set --loglevel Debug
ENV DEBUG_IRC_PARSED_ENABLED="false"
# Limit parsed IRC logging to this network ID. Implies --debug-irc-parsed
ENV DEBUG_IRC_PARSED_ID=""
# Load configuration from environment variables.
ENV CONFIG_FROM_ENVIRONMENT="false"
# Specify the database backend. Allowed values: SQLite or PostgreSQL
ENV DB_BACKEND="SQLite"
# If the backend is PostgreSQL, specify the database user username
ENV DB_PGSQL_USERNAME="quassel"
# If the backend is PostgreSQL, specify the database user password
ENV DB_PGSQL_PASSWORD=""
# If the backend is PostgreSQL, specify the hostname of the database
ENV DB_PGSQL_HOSTNAME="localhost"
# If the backend is PostgreSQL, specify the port of the database
ENV DB_PGSQL_PORT="5432"
# If the backend is PostgreSQL, specify the database of the PostgreSQL cluster
ENV DB_PGSQL_DATABASE="quassel"
# Specify the authenticator backend. Allowed values: Database or Ldap
ENV AUTH_AUTHENTICATOR="Database"
# If the authenticator is Ldap, specify the hostname of the directory server
ENV AUTH_LDAP_HOSTNAME="ldap://localhost"
# If the authenticator is Ldap, specify the port of the directory server
ENV AUTH_LDAP_PORT="389"
# If the authenticator is Ldap, specify the bind dn
ENV AUTH_LDAP_BIND_DN=""
# If the authenticator is Ldap, specify the bind password
ENV AUTH_LDAP_BIND_PASSWORD=""
# If the authenticator is Ldap, specify the base dn
ENV AUTH_LDAP_BASE_DN=""
# If the authenticator is Ldap, specify the filter query
ENV AUTH_LDAP_FILTER=""
# If the authenticator is Ldap, specify the attribute to be used as userid
ENV AUTH_LDAP_UID_ATTRIBUTE="uid"
ADD src/docker-entrypoint.sh /
ENTRYPOINT ["/docker-entrypoint.sh"]