ARG GO_VERSION=1.17.9

FROM golang:${GO_VERSION}-buster as downloader

## Fetch the proof parameters.
## 1. Install the paramfetch binary first, so it can be cached over builds.
## 2. Then copy over the parameters (which could change).
## 3. Trigger the download.
## Output will be in /var/tmp/filecoin-proof-parameters.

RUN go get github.com/filecoin-project/go-paramfetch/paramfetch@master
COPY /proof-parameters.json /
RUN paramfetch 8388608 /proof-parameters.json

ARG LOTUS_COMMIT=b8deee048eaf850113e8626a73f64b17ba69a9f6

## for debug purposes
RUN apt update && apt install -y mesa-opencl-icd ocl-icd-opencl-dev gcc git bzr jq pkg-config libhwloc-dev curl && git clone https://github.com/filecoin-project/lotus.git && cd lotus/ && git checkout ${LOTUS_COMMIT} && make clean && make all && make install

FROM ubuntu:18.04

RUN apt-get update && apt-get install -y ca-certificates llvm clang mesa-opencl-icd ocl-icd-opencl-dev jq gcc pkg-config libhwloc-dev net-tools netcat traceroute iputils-ping wget vim curl telnet iproute2 dnsutils
COPY --from=downloader /var/tmp/filecoin-proof-parameters /var/tmp/filecoin-proof-parameters

## for debug purposes
COPY --from=downloader /usr/local/bin/lotus /usr/local/bin/lll
COPY --from=downloader /usr/local/bin/lotus-miner /usr/local/bin/lm

ENV FULLNODE_API_INFO="/ip4/127.0.0.1/tcp/1234/http"
ENV MINER_API_INFO="/ip4/127.0.0.1/tcp/2345/http"