diff --git a/ci/docker-solana/Dockerfile b/ci/docker-solana/Dockerfile index 0fe5f379b..9916955b5 100644 --- a/ci/docker-solana/Dockerfile +++ b/ci/docker-solana/Dockerfile @@ -1,5 +1,13 @@ FROM debian:stretch + +# JSON RPC port +EXPOSE 8899/tcp + +# Install libssl RUN apt update && \ apt-get install -y libssl-dev && \ rm -rf /var/lib/apt/lists/* -COPY cargo-install/bin /usr/bin/ + +COPY usr/bin /usr/bin/ +ENTRYPOINT [ "/usr/bin/solana-entrypoint.sh" ] +CMD [""] diff --git a/ci/docker-solana/README.md b/ci/docker-solana/README.md index aad37e739..2a9ea9b78 100644 --- a/ci/docker-solana/README.md +++ b/ci/docker-solana/README.md @@ -1,5 +1,17 @@ ## Minimal Solana Docker image - This image is automatically updated by CI https://hub.docker.com/r/solanalabs/solana/ + +### Usage: +Run the latest beta image: +```bash +$ docker run --rm -p 8899:8899 solanalabs/solana:beta +``` + +Run the latest edge image: +```bash +$ docker run --rm -p 8899:8899 solanalabs/solana:edge +``` + +Port *8899* is the JSON RPC port, which is used by clients to communicate with the network. diff --git a/ci/docker-solana/build.sh b/ci/docker-solana/build.sh index 1a96c6fa7..568841e0f 100755 --- a/ci/docker-solana/build.sh +++ b/ci/docker-solana/build.sh @@ -16,9 +16,10 @@ if [[ -z $CHANNEL ]]; then exit 0 fi -rm -rf cargo-install/ +rm -rf usr/ ../docker-run.sh solanalabs/rust:1.29.1 \ - cargo install --path . --root ci/docker-solana/cargo-install + cargo install --path . --root ci/docker-solana/usr +cp -f entrypoint.sh usr/bin/solana-entrypoint.sh docker build -t solanalabs/solana:$CHANNEL . diff --git a/ci/docker-solana/entrypoint.sh b/ci/docker-solana/entrypoint.sh new file mode 100755 index 000000000..67d239db1 --- /dev/null +++ b/ci/docker-solana/entrypoint.sh @@ -0,0 +1,23 @@ +#!/bin/bash -ex + +export RUST_LOG=solana=info +export RUST_BACKTRACE=1 + +solana-keygen -o /config/leader-keypair.json +solana-keygen -o /config/drone-keypair.json + +solana-genesis --tokens=1000000000 --ledger /ledger < /config/drone-keypair.json +solana-fullnode-config --keypair=/config/leader-keypair.json -l > /config/leader-config.json + +solana-drone --keypair /config/drone-keypair.json --network 127.0.0.1:8001 & +drone=$! +solana-fullnode --identity /config/leader-config.json --ledger /ledger/ & +fullnode=$! + +abort() { + kill "$drone" "$fullnode" +} + +trap abort SIGINT SIGTERM +wait "$fullnode" +kill "$drone" "$fullnode"