Running Concourse Locally on Windows
Update 3: Ok, got this all documented, cleaned up, and pushed to Github: vagrant-concourse-local.
Update 2: Bosh deployment also didn’t work on Windows. I did
finally manage to get builds working. Rough recipe was: use Vagrant
(from the Windows shell) to spin up an Ubuntu box. Run vault,
postgres, and concourse via docker-compose (I wanted to use Vault
because that’s how I am used to managing secrets, although unsealing
is a pain). I need to debug having everything come up after a reboot
and clean up the Vagrantfile
, then I will publish something.
Update: Turns out the instructions below did NOT work. Next
attempt was to try to run the concourse/lite
box via Vagrant;
still no dice, then saw it was deprecated anyway. Currently trying a
VirtualBox lite deployment via
concourse-bosh-deployment
.
I just spent a fair amount of time getting Concourse running locally on my Windows PC, and figured I might as well write it all down in case someone else runs into all this. In my case, I recently learned Concourse and wanted to use it for CI/CD for some hobby projects, but didn’t want to just run it in AWS since I wouldn’t be using it that often.
For context, I have a regular Home edition of Windows 10, which means that I can’t run the nifty Docker Desktop for Windows (boo) and have to run the older Docker Toolbox that installs VirtualBox and then runs Docker inside a Linux VM.
I grabbed a docker-compose.yml
file from
the Concourse tutorial
site, ran docker-compose up -d
,
and…couldn’t connect to the UI in my browser.
After much poking around, I finally figured out that you can’t use
localhost (127.0.0.1) to talk to Concourse, but have to use the local
NAT IP address of the VM. You can find this by running
docker-machine
from the “Docker Quickstart” shell
that comes with Docker Toolbox:
So in my case I can navigate to http://192.168.99.100:8080/ and get the Concourse UI.
The other updates I made to the
docker-compose.yml
were to create a named volume
(docker volume create concourse-data
) so I can re-mount the database if my PC
reboots, and, most importantly, to populate the
CONCOURSE_EXTERNAL_URL
environment variable for the
concourse
container, so that
redirect URLs will get properly generated to use the NAT
address. That’s it! Here’s the working Docker Compose file (you can
run it with
docker-compose up -d
in a
Docker Quickstart shell):
Note: It can take quite a bit for the database to initialize
itself the first time, and the Concourse UI won’t listen on its socket
until it can talk to the database, which means if you get a
“connection refused” you might just need to wait a little longer. A
little docker logs -f
goes a long way here!