From 0c9f729662377e0c17f17ec0e1517d288669c81c Mon Sep 17 00:00:00 2001 From: ZenGround0 Date: Fri, 16 Jun 2017 06:07:08 -0700 Subject: [PATCH] Docker test image build (#103) * First draft of test dockerfile build * Test dockerfile, build works, container runs and cluster tests go through * Removed fifo for output * renaming dockerfile --- Dockerfile-test | 34 ++++++++++++++++++++++++++ docker/test-entrypoint.sh | 50 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 84 insertions(+) create mode 100644 Dockerfile-test create mode 100644 docker/test-entrypoint.sh diff --git a/Dockerfile-test b/Dockerfile-test new file mode 100644 index 00000000..4214c130 --- /dev/null +++ b/Dockerfile-test @@ -0,0 +1,34 @@ +FROM ipfs/go-ipfs:release +MAINTAINER Hector Sanjuan + +EXPOSE 9094 +EXPOSE 9095 +EXPOSE 9096 + +ENV GOPATH /go +ENV PATH /go/bin:$PATH +ENV SRC_PATH /go/src/github.com/ipfs/ipfs-cluster +ENV IPFS_CLUSTER_PATH /data/ipfs-cluster + +VOLUME $IPFS_CLUSTER_PATH + +COPY . $SRC_PATH + +RUN apk add --no-cache --virtual cluster-deps make musl-dev go git \ + && apk add --no-cache jq \ + && go get -u github.com/whyrusleeping/gx \ + && go get -u github.com/whyrusleeping/gx-go \ + && cd $SRC_PATH \ + && gx install --global \ + && gx-go rewrite \ + && go build \ + && make -C ipfs-cluster-service install \ + && make -C ipfs-cluster-ctl install \ + && cp docker/test-entrypoint.sh /usr/local/bin/start-daemons.sh \ + && chmod +x /usr/local/bin/start-daemons.sh \ + && apk del --purge cluster-deps \ + && cd / && rm -rf /go/src /go/bin/gx /go/bin/gx-go + +ENTRYPOINT ["/usr/local/bin/start-daemons.sh"] + +CMD ["$IPFS_CLUSTER_OPTS"] diff --git a/docker/test-entrypoint.sh b/docker/test-entrypoint.sh new file mode 100644 index 00000000..4d1b92c2 --- /dev/null +++ b/docker/test-entrypoint.sh @@ -0,0 +1,50 @@ +#!/bin/sh + +set -e +user=ipfs +repo="$IPFS_PATH" +echo "Version 0.4" + +if [ `id -u` -eq 0 ]; then + # ensure folders are writeable + su-exec "$user" test -w "$repo" || chown -R -- "$user" "$repo" + su-exec "$user" test -w "$IPFS_CLUSTER_PATH" || chown -R -- "$user" "$IPFS_CLUSTER_PATH" + # restart script with new privileges + exec su-exec "$user" "$0" "$@" +fi + +# Second invocation with regular user +echo "Second invocation" + +if [ `id -u` -eq 0 ]; then + # ensure directories are writable + su-exec "$user" test -w "$repo" || chown -R -- "$user" "$repo" + su-exec "$user" test -w "$IPFS_CLUSTER_PATH" || chown -R -- "$user" "$IPFS_CLUSTER_PATH" + exec su-exec "$user" "$0" "$@" +fi + +ipfs version + +if [ -e "$repo/config" ]; then + echo "Found IPFS fs-repo at $repo" +else + ipfs init + ipfs config Addresses.API /ip4/0.0.0.0/tcp/5001 + ipfs config Addresses.Gateway /ip4/0.0.0.0/tcp/8080 +fi + +ipfs daemon --migrate=true & +sleep 3 + +ipfs-cluster-service --version + +if [ -e "$IPFS_CLUSTER_PATH/service.json" ]; then + echo "Found IPFS cluster configuration at $IPFS_CLUSTER_PATH" +else + ipfs-cluster-service init + sed -i 's/127\.0\.0\.1\/tcp\/9094/0.0.0.0\/tcp\/9094/' "$IPFS_CLUSTER_PATH/service.json" + sed -i 's/127\.0\.0\.1\/tcp\/9095/0.0.0.0\/tcp\/9095/' "$IPFS_CLUSTER_PATH/service.json" +fi +ipfs-cluster-service $@ & +echo "Daemons launched" +exec tail -f /dev/null