hacks/solanad.dockerfile/Dockerfile

95 lines
2.0 KiB
Docker

FROM ubuntu:focal as builder
ENV DEBIAN_FRONTEND noninteractive
# this is the hash of solana-1.3.14
ENV VERSION c8f4bfca90e5087f77dd11921b75231c5fa30151
RUN apt update && apt install -y \
clang \
cmake \
curl \
git \
golang \
lcov \
libssl-dev \
libudev-dev \
llvm \
mscgen \
net-tools \
pkg-config \
rsync \
sudo \
zlib1g-dev \
unzip
RUN curl https://sh.rustup.rs -sSf | sh -s -- -y
RUN . $HOME/.cargo/env && rustup component add rustfmt && rustup update
RUN git clone \
https://github.com/solana-labs/solana.git \
/usr/local/src/solana && \
cd /usr/local/src/solana && \
git checkout $VERSION
WORKDIR /usr/local/src/solana
RUN . $HOME/.cargo/env && cargo build --release
# kept crashing docker desktop, hard locks on OOM instead of doing
# something sensible. fuck closed source, proprietary software.
#RUN . $HOME/.cargo/env && cargo cargo test
#RUN . $HOME/.cargo/env rustup install nightly && cargo +nightly bench
RUN cd target/release && \
rm -f *.so *.d *.rlib && \
mv -v * /usr/local/bin
FROM ubuntu:focal as runner
COPY --from=builder /usr/local/bin/* /usr/local/bin/
ENV DEBIAN_FRONTEND noninteractive
ENV PATH $PATH:/usr/local/bin
RUN apt update && apt install -y \
runit \
runit-systemd
COPY ./supervise.sh /usr/local/sbin/supervise.sh
RUN mkdir -p /etc/service/solanad
COPY ./run.solanad /etc/service/solanad/run
RUN chmod +x /etc/service/*/run
#RUN solana transaction-count
#RUN solana-gossip spy --entrypoint devnet.solana.com:8001
RUN mkdir -p /var/lib/solana && chown nobody:nogroup /var/lib/solana
ENV HOME /var/lib/solana
WORKDIR /var/lib/solana
USER nobody:nogroup
ENV NETWORK_URL https://devnet.solana.com
#RUN solana config set --url http://devnet.solana.com
VOLUME /var/lib/solana
# rpc
EXPOSE 8899
# this daemon is stupid
EXPOSE 8000
EXPOSE 8001
EXPOSE 8002
EXPOSE 8003
EXPOSE 8004
EXPOSE 8005
EXPOSE 8005
EXPOSE 8006
EXPOSE 8007
EXPOSE 8008
EXPOSE 8009
EXPOSE 8010
USER root
WORKDIR /
CMD [ "/bin/sh", "/usr/local/sbin/supervise.sh" ]