Commit bf6496dd authored by jan.koester's avatar jan.koester
Browse files

tes

parent 68251fba
Loading
Loading
Loading
Loading
Loading
+69 −0
Original line number Diff line number Diff line
FROM node:alpine AS build
WORKDIR /build

RUN apk update --no-cache && apk upgrade --no-cache
RUN apk add --no-cache cmake ninja clang alpine-sdk yaml-dev brotli-dev json-c-dev util-linux-dev compiler-rt

# Build all libraries with ThreadSanitizer
ENV CC=clang
ENV CXX=clang++
ENV CXXFLAGS="-g -O1 -fno-omit-frame-pointer -fsanitize=thread"
ENV CFLAGS="-g -O1 -fno-omit-frame-pointer -fsanitize=thread"
ENV LDFLAGS="-fsanitize=thread"

RUN git clone https://tuxist.de/git/jan.koester/libcmdplus.git && \
    mkdir libcmdplus/build && \
    cd libcmdplus/build && cmake ../ -G Ninja -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS="-fPIC -g -O1 -fsanitize=thread" -DCMAKE_C_FLAGS="-fPIC -g -O1 -fsanitize=thread" -DCMAKE_EXE_LINKER_FLAGS="-fsanitize=thread" -DCMAKE_SHARED_LINKER_FLAGS="-fsanitize=thread" && ninja install

RUN git clone https://tuxist.de/git/tuxist/uuidplus.git && \
    mkdir uuidplus/build && \
    cd uuidplus/build && cmake ../ -G Ninja -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS="-g -O1 -fsanitize=thread" -DCMAKE_C_FLAGS="-g -O1 -fsanitize=thread" -DCMAKE_EXE_LINKER_FLAGS="-fsanitize=thread" -DCMAKE_SHARED_LINKER_FLAGS="-fsanitize=thread" && ninja install

RUN git clone https://tuxist.de/git/jan.koester/libnetplus.git && \
    mkdir libnetplus/build && \
    cd libnetplus/build && cmake ../ -G Ninja -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS="-g -O1 -fsanitize=thread" -DCMAKE_C_FLAGS="-g -O1 -fsanitize=thread" -DCMAKE_EXE_LINKER_FLAGS="-fsanitize=thread" -DCMAKE_SHARED_LINKER_FLAGS="-fsanitize=thread" && ninja install

RUN git clone https://tuxist.de/git/jan.koester/libhtmlpp.git && \
    mkdir libhtmlpp/build && \
    cd libhtmlpp/build && cmake ../ -G Ninja -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS="-g -O1 -fsanitize=thread" -DCMAKE_C_FLAGS="-g -O1 -fsanitize=thread" -DCMAKE_EXE_LINKER_FLAGS="-fsanitize=thread" -DCMAKE_SHARED_LINKER_FLAGS="-fsanitize=thread" && ninja install

RUN git clone https://tuxist.de/git/jan.koester/libhttppp.git && \
    mkdir libhttppp/build && \
    cd libhttppp/build && cmake ../ -G Ninja -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS="-g -O1 -fsanitize=thread" -DCMAKE_C_FLAGS="-g -O1 -fsanitize=thread" -DCMAKE_EXE_LINKER_FLAGS="-fsanitize=thread" -DCMAKE_SHARED_LINKER_FLAGS="-fsanitize=thread" && ninja install

RUN git clone https://tuxist.de/git/jan.koester/libconfplus.git && \
    mkdir libconfplus/build && \
    cd libconfplus/build && cmake ../ -G Ninja -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS="-fPIC -g -O1 -fsanitize=thread" -DCMAKE_C_FLAGS="-fPIC -g -O1 -fsanitize=thread" -DCMAKE_EXE_LINKER_FLAGS="-fsanitize=thread" -DCMAKE_SHARED_LINKER_FLAGS="-fsanitize=thread" && ninja install

RUN git clone https://tuxist.de/git/tuxist/libparitypp.git && \
    mkdir libparitypp/build && \
    cd libparitypp/build && cmake ../ -G Ninja -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS="-g -O1 -fsanitize=thread" -DCMAKE_C_FLAGS="-g -O1 -fsanitize=thread" -DCMAKE_EXE_LINKER_FLAGS="-fsanitize=thread" -DCMAKE_SHARED_LINKER_FLAGS="-fsanitize=thread" && ninja install

RUN git clone https://tuxist.de/git/jan.koester/authdb.git && \
    mkdir authdb/build && \
    cd authdb/build && cmake ../ -G Ninja -DCMAKE_BUILD_TYPE=Debug -DBUILD_BINDINGS=OFF -DDATAPATH:PATH=/usr/local/share/authdb -DCMAKE_CXX_FLAGS="-g -O1 -fsanitize=thread" -DCMAKE_C_FLAGS="-g -O1 -fsanitize=thread" -DCMAKE_EXE_LINKER_FLAGS="-fsanitize=thread" -DCMAKE_SHARED_LINKER_FLAGS="-fsanitize=thread" && ninja install

# --- Runtime stage ---
FROM node:alpine

RUN addgroup authdb && \
    adduser authdb -h /var/lib/authdb -S -G authdb

RUN apk update && apk upgrade && \
    apk add --no-cache yaml brotli openssl json-c libuuid libstdc++ \
    clang-libs compiler-rt

RUN mkdir -p /etc/authdb/certs /var/lib/authdb /usr/local/share/authdb /var/log/authdb && \
    chown -R authdb:authdb /var/lib/authdb /var/log/authdb

COPY --from=build /usr/local/bin/authdb /usr/local/bin/
COPY --from=build /usr/local/lib /usr/local/lib/
COPY --from=build /usr/local/lib/authdb /usr/local/lib/authdb
COPY --from=build /usr/local/share/authdb /usr/local/share/authdb

EXPOSE 9090 4433

# TSan options: log_path writes reports to file, second_deadlock_stack shows both sides
ENV TSAN_OPTIONS="history_size=7 second_deadlock_stack=1 log_path=/var/log/authdb/tsan.log"

CMD ["authdb", "-f", "true", "-c", "yaml:///etc/authdb/config.yaml"]
+58 −0
Original line number Diff line number Diff line
services:
  authdb1:
    build:
      context: .
      dockerfile: Dockerfile.tsan
    container_name: authdb1
    hostname: node1
    cap_add:
      - SYS_PTRACE
    security_opt:
      - seccomp:unconfined
    volumes:
      - ./config-node1.yaml:/etc/authdb/config.yaml:ro
      - ./certs:/etc/authdb/certs:ro
    ports:
      - "9091:9090"
    networks:
      - cluster

  authdb2:
    build:
      context: .
      dockerfile: Dockerfile.tsan
    container_name: authdb2
    hostname: node2
    cap_add:
      - SYS_PTRACE
    security_opt:
      - seccomp:unconfined
    volumes:
      - ./config-node2.yaml:/etc/authdb/config.yaml:ro
      - ./certs:/etc/authdb/certs:ro
    ports:
      - "9092:9090"
    networks:
      - cluster

  authdb3:
    build:
      context: .
      dockerfile: Dockerfile.tsan
    container_name: authdb3
    hostname: node3
    cap_add:
      - SYS_PTRACE
    security_opt:
      - seccomp:unconfined
    volumes:
      - ./config-node3.yaml:/etc/authdb/config.yaml:ro
      - ./certs:/etc/authdb/certs:ro
    ports:
      - "9093:9090"
    networks:
      - cluster

networks:
  cluster:
    driver: bridge