dockerbuild-server

Accept build job and publish to Docker index

Usage

Example systemd unit file:

[Unit]
Description=Docker Build

[Service]
ExecStartPre=/usr/bin/docker pull jkingyens/build-server
ExecStart=/usr/bin/docker run -e AUTH_TOKEN=secretkey -v /home/core/.dockercfg:/.dockercfg -v /var/run/docker.sock:/run/docker.sock  -e DOCKER_USERNAME=username -e DOCKER_PASSWORD=password -e DOCKER_EMAIL=email --rm --name build --publish-all=true jkingyens/build-server
ExecStop=/usr/bin/bash -c "/usr/bin/docker stop build"

Run this on your server and make it accessible to the outside world. Then on your development machine run:

npm install -g dockerbuild

Add these enviroment variables to your local devleopment machine:

  • BUILD_HOST - host of build-server deployment
  • BUILD_PORT - port of build-server deployment
  • BUILD_AUTH - the secret key you set in the AUTH_TOKEN server-side environment variable (see above)

Now you can publish docker images from your local machine by executing publish from your source code directory.

publish <username/repo>

This will tar+gzip your build context, taking into consideration your .gitignore file (so node_modules will not transmit, for instance). It will then run a docker build job on the remote server, and push the resulting image to the public docker index, tagging it as username/repo.