Manual Deployment

Note: you must have a Docker engine available. If you do not have Docker see docs.docker.com to get started.

student-849825_1280

This will show how to manually deploy the containers in case you want to use an existing Swarm deployment, etc. This method assumes you have a fresh Docker Engine. This also assumes you are using a non-TLS setup.

Note: This assumes a similar setup to the automated install. You can replace components as needed.

Datastore

As mentioned, Shipyard uses RethinkDB for the datastore. First we will launch a RethinkDB container.

$> docker run \
    -ti \
    -d \
    --restart=always \
    --name shipyard-rethinkdb \
    rethinkdb

Discovery

To enable Swarm leader election, we must use an external key value store from the Swarm container. For this example, we will use etcd however, you can use any key/value backend supported by Swarm.

$> docker run \
    -ti \
    -d \
    -p 4001:4001 \
    -p 7001:7001 \
    --restart=always \
    --name shipyard-discovery \
    microbox/etcd -name discovery
ship-2471965_1280

Proxy

By default, the Docker Engine only listens on a socket. We could re-configure the Engine to use TLS or you can use a proxy container. This is a very lightweight container that simply forwards requests from TCP to the Unix socket that Docker listens on.

Note: You do not need this if you are using a manual TCP / TLS configuration.

$> docker run \
    -ti \
    -d \
    -p 2375:2375 \
    --hostname=$HOSTNAME \
    --restart=always \
    --name shipyard-proxy \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -e PORT=2375 \
    shipyard/docker-proxy:latest

No

Swarm Manager

This will run a Swarm container configured to manage.

$> docker run \
    -ti \
    -d \
    --restart=always \
    --name shipyard-swarm-manager \
    swarm:latest \
    manage --host tcp://0.0.0.0:3375 etcd://<IP-OF-HOST>:4001
computer-3368242_1280

Swarm Agent

This will run a Swarm container configured to manage.

$> docker run \
    -ti \
    -d \
    --restart=always \
    --name shipyard-swarm-manager \
    swarm:latest \
    manage --host tcp://0.0.0.0:3375 etcd://<IP-OF-HOST>:4001

Controller

This runs the Shipyard Controller.

$> docker run \
    -ti \
    -d \
    --restart=always \
    --name shipyard-controller \
    --link shipyard-rethinkdb:rethinkdb \
    --link shipyard-swarm-manager:swarm \
    -p 8080:8080 \
    shipyard/shipyard:latest \
    server \
    -d tcp://swarm:3375

Once the controller is launched and the controller has initialized the datastore you should be able to login via http://[ip-of-host]:8080.