Docker: improve for CRDTs

This:

  * Allows choosing the consensus for the automatic "init" on Docker with
  IPFS_CLUSTER_CONSENSUS.

  * Removes IPFS_PATH and the sed replacements for 0.0.0.0 on RestAPI and
  Ipfsproxy endpoints because these are easily supported by setting env vars
  correctly and pose some security risk when running with net=host.

  * Brings up to date Dockerfile-test and Dockerfile-bundle, even if mostly
  unused.
This commit is contained in:
Hector Sanjuan 2019-08-13 14:43:07 +02:00
parent bd6d01b32e
commit 4556cbe726
6 changed files with 13 additions and 20 deletions

View File

@ -37,6 +37,7 @@ MAINTAINER Hector Sanjuan <hector@protocol.ai>
ENV GOPATH /go ENV GOPATH /go
ENV SRC_PATH /go/src/github.com/ipfs/ipfs-cluster ENV SRC_PATH /go/src/github.com/ipfs/ipfs-cluster
ENV IPFS_CLUSTER_PATH /data/ipfs-cluster ENV IPFS_CLUSTER_PATH /data/ipfs-cluster
ENV IPFS_CLUSTER_CONSENSUS crdt
EXPOSE 9094 EXPOSE 9094
EXPOSE 9095 EXPOSE 9095

View File

@ -1,4 +1,4 @@
FROM golang:1.9-stretch AS builder FROM golang:1.12-stretch AS builder
MAINTAINER Hector Sanjuan <hector@protocol.ai> MAINTAINER Hector Sanjuan <hector@protocol.ai>
# This dockerfile builds cluster and runs it along with go-ipfs. # This dockerfile builds cluster and runs it along with go-ipfs.
@ -22,6 +22,7 @@ MAINTAINER Hector Sanjuan <hector@protocol.ai>
ENV GOPATH /go ENV GOPATH /go
ENV SRC_PATH /go/src/github.com/ipfs/ipfs-cluster ENV SRC_PATH /go/src/github.com/ipfs/ipfs-cluster
ENV IPFS_CLUSTER_PATH /data/ipfs-cluster ENV IPFS_CLUSTER_PATH /data/ipfs-cluster
ENV IPFS_CLUSTER_CONSENSUS crdt
EXPOSE 9094 EXPOSE 9094
EXPOSE 9095 EXPOSE 9095
@ -38,4 +39,4 @@ VOLUME $IPFS_CLUSTER_PATH
ENTRYPOINT ["/sbin/tini", "--", "/usr/local/bin/start-daemons.sh"] ENTRYPOINT ["/sbin/tini", "--", "/usr/local/bin/start-daemons.sh"]
# Defaults for ipfs-cluster-service go here # Defaults for ipfs-cluster-service go here
CMD ["daemon", "--upgrade"] CMD ["daemon"]

View File

@ -27,6 +27,9 @@ MAINTAINER Hector Sanjuan <hector@protocol.ai>
ENV GOPATH /go ENV GOPATH /go
ENV SRC_PATH /go/src/github.com/ipfs/ipfs-cluster ENV SRC_PATH /go/src/github.com/ipfs/ipfs-cluster
ENV IPFS_CLUSTER_PATH /data/ipfs-cluster ENV IPFS_CLUSTER_PATH /data/ipfs-cluster
ENV IPFS_CLUSTER_CONSENSUS crdt
ENV IPFS_CLUSTER_RESTAPI_HTTPLISTENMULTIADDRESS /ip4/0.0.0.0/tcp/9094
ENV IPFS_CLUSTER_IPFSPROXY_LISTENMULTIADDRESS /ip4/0.0.0.0/tcp/9095
EXPOSE 9094 EXPOSE 9094
EXPOSE 9095 EXPOSE 9095
@ -34,7 +37,7 @@ EXPOSE 9096
COPY --from=builder $GOPATH/bin/ipfs-cluster-service /usr/local/bin/ipfs-cluster-service COPY --from=builder $GOPATH/bin/ipfs-cluster-service /usr/local/bin/ipfs-cluster-service
COPY --from=builder $GOPATH/bin/ipfs-cluster-ctl /usr/local/bin/ipfs-cluster-ctl COPY --from=builder $GOPATH/bin/ipfs-cluster-ctl /usr/local/bin/ipfs-cluster-ctl
COPY --from=builder $SRC_PATH/docker/test-entrypoint.sh /usr/local/bin/start-daemons.sh COPY --from=builder $SRC_PATH/docker/test-entrypoint.sh /usr/local/bin/test-entrypoint.sh
COPY --from=builder $SRC_PATH/docker/random-stopper.sh /usr/local/bin/random-stopper.sh COPY --from=builder $SRC_PATH/docker/random-stopper.sh /usr/local/bin/random-stopper.sh
COPY --from=builder $SRC_PATH/docker/random-killer.sh /usr/local/bin/random-killer.sh COPY --from=builder $SRC_PATH/docker/random-killer.sh /usr/local/bin/random-killer.sh
COPY --from=builder $SRC_PATH/docker/wait-killer-stopper.sh /usr/local/bin/wait-killer-stopper.sh COPY --from=builder $SRC_PATH/docker/wait-killer-stopper.sh /usr/local/bin/wait-killer-stopper.sh
@ -55,7 +58,7 @@ RUN mkdir -p $IPFS_CLUSTER_PATH && \
USER ipfs USER ipfs
VOLUME $IPFS_CLUSTER_PATH VOLUME $IPFS_CLUSTER_PATH
ENTRYPOINT ["/usr/local/bin/start-daemons.sh"] ENTRYPOINT ["/usr/local/bin/test-entrypoint.sh"]
# Defaults would go here # Defaults would go here
CMD ["daemon"] CMD ["daemon"]

View File

@ -21,16 +21,8 @@ if [ -e "${IPFS_CLUSTER_PATH}/service.json" ]; then
echo "Found IPFS cluster configuration at ${IPFS_CLUSTER_PATH}" echo "Found IPFS cluster configuration at ${IPFS_CLUSTER_PATH}"
else else
echo "This container only runs ipfs-cluster-service. ipfs needs to be run separately!" echo "This container only runs ipfs-cluster-service. ipfs needs to be run separately!"
echo "Initializing default configuration" echo "Initializing default configuration..."
ipfs-cluster-service init ipfs-cluster-service init --consensus "${IPFS_CLUSTER_CONSENSUS}"
if [ -n "$IPFS_API" ]; then
echo "Using \$IPFS_API as value for ipfs_connector.ipfshttp.node_multiaddress in configuration"
sed -i "s;/ip4/127\.0\.0\.1/tcp/5001;$IPFS_API;" "${IPFS_CLUSTER_PATH}/service.json"
fi
echo "Warning: By default, the API and Proxy endpoints will listen on 0.0.0.0!"
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 fi
exec ipfs-cluster-service $@ exec ipfs-cluster-service $@

View File

@ -33,9 +33,7 @@ ipfs-cluster-service --version
if [ -e "${IPFS_CLUSTER_PATH}/service.json" ]; then if [ -e "${IPFS_CLUSTER_PATH}/service.json" ]; then
echo "Found IPFS cluster configuration at ${IPFS_CLUSTER_PATH}" echo "Found IPFS cluster configuration at ${IPFS_CLUSTER_PATH}"
else else
ipfs-cluster-service init ipfs-cluster-service init --consensus "${IPFS_CLUSTER_CONSENSUS}"
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 fi
exec ipfs-cluster-service $@ exec ipfs-cluster-service $@

View File

@ -33,9 +33,7 @@ if [ -e "$IPFS_CLUSTER_PATH/service.json" ]; then
echo "Found IPFS cluster configuration at $IPFS_CLUSTER_PATH" echo "Found IPFS cluster configuration at $IPFS_CLUSTER_PATH"
else else
export CLUSTER_SECRET="" export CLUSTER_SECRET=""
ipfs-cluster-service init ipfs-cluster-service init --consensus "${IPFS_CLUSTER_CONSENSUS}"
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 fi
ipfs-cluster-service --debug $@ & ipfs-cluster-service --debug $@ &