derby-site
The derbyjs.com site, built with Derby.
Installation
Clone this repository and install the dependencies:
npm install
Development
To run the site locally:
npm start
To run the entire stack locally, you can use docker-compose
. To do this,
simply run:
npm run compose-up
Similarly, npm run compose-stop
will stop all containers and
npm run compose-down
will stop and remove all containers and networks created.
You can also use Docker Compose directly by running the following command:
SWARM_MODE=false docker-compose -f ./deploy/docker-compose.yaml up
To change the underlying versions of derby-site
or derby-examples
, simply
adjust the tags for the image
.
Production
The Derby site can operate using the Docker Compose or, more ideally, Docker
Swarm. The use Swarm, you must first initialize a swarm cluster. To do this,
simply run docker swarm init
. If you are prompted to include the
--advertise-addr
parameter, make sure this matches the instances local IP
address, not the public address. Once you have done this, you can run the
following command to create the stack from the ./deploy
directory:
npm run deploy
Alternatively, you can run this directly using the Docker CLI with the following command:
SWARM_MODE=true docker stack deploy --compose-file docker-compose.yaml derbyjs
This will create all necessary resources. If you are making changes to the
configuration or want to update to a new version, you can simply edit the
docker-compose.yaml
file and run the command listed above again. This will
initiate a rolling update.
Note that the only container utilizing rolling updates is the derby-site
container.
Build and Deploy
To build the DerbyJS Site, clone this repo locally as described above.
Build a docker image with a tag containing today's date, push to Docker Hub, and cleanup the local copy of the image:
cd derby-site
docker build . --tag derbyjs/derby-site:YYYY-MM-DD
docker push derbyjs/derby-site:YYYY-MM-DD
docker rmi derbyjs/derby-site:YYYY-MM-DD
Next, update the deployed tag specified in /deploy/docker.compose.yaml. The tag is defined in services: derbysite: image: derbyjs/derby-site:YYYY-MM-DD
, and it should be updated to the current date. Commit and push your changes to GitHub.
Finally, SSH to the derby-site server:
ssh derbyjs-01.droplet.derbyjs.com
and run the command to update:
cd ~/derby-site/deploy/ && git pull && npm run deploy