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

Dockerfile

Blame
  • Dockerfile 2.07 KiB
    # development image
    ARG BASE=alpine:latest
    FROM $BASE AS builder
    
    # install development dependencies
    RUN apk add --no-cache \
      cmake \
      curl \
      dbus-dev \
      g++ \
      gcc \
      git \
      icu-dev \
      icu-libs \
      libressl \
      libressl-dev \
      openldap-dev \
      ninja \
      paxmark \
      qt5-qtbase-dev \
      qt5-qtscript-dev \
      qt5-qtbase-postgresql \
      qt5-qtbase-sqlite
    
    # setup repo
    RUN mkdir /quassel && \
        git clone -b 0.13 --single-branch https://github.com/quassel/quassel /quassel/src && \
        cd /quassel/src && \
        git checkout 0.13.1
    
    # 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
    
    # runtime image
    FROM $BASE
    
    # install runtime dependencies
    RUN apk add --no-cache \
      icu-libs \
      libressl \
      openldap \
      qt5-qtbase \
      qt5-qtscript \
      qt5-qtbase-postgresql \
      qt5-qtbase-sqlite
    
    # copy binaries
    COPY --from=builder /quassel/install/bin /usr/bin/
    
    # setup user environment
    RUN addgroup -g 1000 -S quassel && \
        adduser -S -G quassel -u 1000 -s /bin/bash -h /config quassel
    USER quassel
    VOLUME /config
    
    # expose ports
    EXPOSE 4242/tcp
    EXPOSE 10113/tcp
    
    # setup default configuration
    ENV DB_BACKEND="SQLite"
    ENV AUTH_AUTHENTICATOR="Database"
    ENV DB_PGSQL_USERNAME="quassel"
    ENV DB_PGSQL_PASSWORD=""
    ENV DB_PGSQL_HOSTNAME="localhost"
    ENV DB_PGSQL_PORT="5432"
    ENV DB_PGSQL_DATABASE="quassel"
    ENV AUTH_LDAP_HOSTNAME="ldap://localhost"
    ENV AUTH_LDAP_PORT="389"
    ENV AUTH_LDAP_BIND_DN=""
    ENV AUTH_LDAP_BIND_PASSWORD=""
    ENV AUTH_LDAP_BASE_DN=""
    ENV AUTH_LDAP_FILTER=""
    ENV AUTH_LDAP_UID_ATTRIBUTE="uid"
    
    ENTRYPOINT ["quasselcore", "--configdir", "/config"]