Skip to content
Snippets Groups Projects
Select Git revision
  • main default protected
1 result

Dockerfile.v0.13

Blame
  • 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"]