Docker Deployments

Setting up a bridgechain can easily be accomplished using Docker. This provides the added advantage that you no longer need to run your node on Ubuntu 18.04.

Installing Docker CE

Docker supports all major operating systems but functions best when ran and controlled from a Linux based distribution. You can find installation guides here.

Clone the Deployer

The deployer is bundled with a Dockerfile and its dependencies, which we will build ourselves into an image. Clone the deployer to get started.

git clone git@github.com:SwipeChain/swipechain-deployer
cd deployer

Building the Image

Inside deployer/docker you find the Dockerfile which specifies the build instructions for our image.

FROM ubuntu:xenial

ARG CONFIG_PATH=docker/config.json
ARG NODE_PORT=4100
ARG EXPLORER_PORT=4200
ARG USER=deployer

ENV USER $USER
ENV TERM linux

ENV DEPLOYER_HOME /home/$USER
ENV CONFIG_PATH $CONFIG_PATH
ENV NODE_PORT $NODE_PORT
ENV EXPLORER_PORT $EXPLORER_PORT
ENV NVM_DIR $DEPLOYER_HOME/.nvm

RUN apt-get update && \
    apt-get install -y jq git curl sudo

RUN useradd -m $USER && echo "$USER:$USER" | chpasswd && adduser $USER sudo && \
    echo "%$USER  ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers

RUN echo "debconf debconf/frontend select Noninteractive" | sudo debconf-set-selections
RUN echo "#!/bin/sh\nexit 0" > /usr/sbin/policy-rc.d

USER $USER

COPY . $DEPLOYER_HOME
COPY ./docker/docker-entrypoint.sh /

RUN sudo chmod +x /docker-entrypoint.sh && \
    sudo chown $USER /docker-entrypoint.sh

RUN curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash && \
    . $DEPLOYER_HOME/.nvm/nvm.sh && \
    nvm install 8.9.1 && \
    cd $DEPLOYER_HOME && \
    ./bridgechain.sh install-node --config "$CONFIG_PATH" --autoinstall-deps --non-interactive && \
    ./bridgechain.sh install-explorer --config "$CONFIG_PATH" --skip-deps --non-interactive

EXPOSE $NODE_PORT
EXPOSE $EXPLORER_PORT

ENTRYPOINT ["/bin/bash", "-c"]
CMD ["./docker-entrypoint.sh"]

To build the docker image, enter:

docker build -t $IMAGE_NAME .

Where IMAGE_NAME is whatever you want it to be. If you have a hub.docker.com account, mydockerusername:deployer:latest would be suitable so that you can push it to your registry later on.

Running the Deployer

To run your BridgeChain and associated services, execute:

$ docker run -p 4100:4100 -p 4200:4200 -d deployer

Node API (port forwarded): http://127.0.0.1:4100/api/ Explorer (port forwarded): http://127.0.0.1:4200/