# This Dockerfile is used for cluster testing - it produces a much larger image
# and includes all of Go as well as some utilities.

FROM golang:1.19

LABEL maintainer "dev@pilosa.com"

COPY . /go/src/github.com/featurebasedb/featurebase/

# download pumba for fault injection
ADD https://github.com/alexei-led/pumba/releases/download/0.6.0/pumba_linux_amd64 /pumba
RUN chmod +x /pumba

# add docker client to pause/unpause nodes
RUN apt update
RUN apt install -y docker.io

# add docker-compose so tests can use it for stuff
ADD https://github.com/docker/compose/releases/latest/download/docker-compose-Linux-x86_64 /usr/local/bin/docker-compose
RUN chmod +x /usr/local/bin/docker-compose

RUN cd /go/src/github.com/featurebasedb/featurebase/cmd/featurebase && \
    go test -covermode=atomic -coverpkg=../../... -c -tags testrunmain -o featurebase && \
    cp /go/src/github.com/featurebasedb/featurebase/cmd/featurebase/featurebase /featurebase


COPY NOTICE /NOTICE

COPY ./internal/clustertests /go/src/github.com/featurebasedb/featurebase/internal/clustertests

EXPOSE 10101
VOLUME /data

ENTRYPOINT ["bash", "-c"]
CMD ["/featurebase", "-test.run=TestRunMain", "-test.coverprofile=/results/coverage.out", "server", "--data-dir", "/data", "--bind", "http://0.0.0.0:10101"]
