Skip to content

Instantly share code, notes, and snippets.

@colthreepv
Last active February 6, 2020 06:55
Show Gist options
  • Star 8 You must be signed in to star a gist
  • Fork 4 You must be signed in to fork a gist
  • Save colthreepv/6b818cfcf296dc1b5c2cf15eb76a140e to your computer and use it in GitHub Desktop.
Save colthreepv/6b818cfcf296dc1b5c2cf15eb76a140e to your computer and use it in GitHub Desktop.
Concourse CI inside Docker compose v2
version: '2'
services:
concourse-db:
image: postgres:9.5
volumes: ['database:/database']
environment:
POSTGRES_DB: concourse
POSTGRES_USER: concourse
POSTGRES_PASSWORD: changeme
PGDATA: /database
restart: on-failure:10
concourse-web:
image: concourse/concourse
command: web
ports: ['8080:8080']
volumes: ['web-keys:/concourse-keys']
depends_on: [keys, concourse-db]
extra_hosts: ['dockerhost:$DOCKERHOST']
environment:
CONCOURSE_BASIC_AUTH_USERNAME: colthreepv
CONCOURSE_BASIC_AUTH_PASSWORD: allthewin
CONCOURSE_EXTERNAL_URL: http://dockerhost:8080
CONCOURSE_POSTGRES_DATA_SOURCE: |-
postgres://concourse:changeme@concourse-db:5432/concourse?sslmode=disable
dns:
- 8.8.8.8
- 8.8.4.4
restart: on-failure:10
concourse-worker:
image: concourse/concourse
privileged: true
command: worker
depends_on: [keys]
volumes: ['worker-keys:/concourse-keys']
environment:
CONCOURSE_TSA_HOST: concourse-web
CONCOURSE_GARDEN_ADDRESS: concourse-worker
CONCOURSE_BAGGAGECLAIM_ADDRESS: concourse-worker
CONCOURSE_GARDEN_FORWARD_ADDRESS: concourse-worker
CONCOURSE_BAGGAGECLAIM_FORWARD_ADDRESS: concourse-worker
CONCOURSE_GARDEN_DNS_SERVER: 8.8.8.8
dns:
- 8.8.8.8
- 8.8.4.4
restart: on-failure:10
keys:
build: .
volumes:
- web-keys:/keys/web
- worker-keys:/keys/worker
volumes:
database: { external: { name: concourse-db } }
web-keys: { external: { name: concourse-web-keys } }
worker-keys: { external: { name: concourse-worker-keys } }
FROM alpine:latest
RUN apk update && apk upgrade && \
apk add --no-cache \
openssh
RUN mkdir -p /keys/web /keys/worker
CMD ssh-keygen -t rsa -f /keys/web/tsa_host_key -N '' && \
ssh-keygen -t rsa -f /keys/web/session_signing_key -N '' && \
ssh-keygen -t rsa -f /keys/worker/worker_key -N '' && \
cp /keys/worker/worker_key.pub /keys/web/authorized_worker_keys && \
cp /keys/web/tsa_host_key.pub /keys/worker
docker volume create --name concourse-db
docker volume create --name concourse-web-keys
docker volume create --name concourse-worker-keys
DOCKERHOST=192.168.56.51 docker-compose up
@colthreepv
Copy link
Author

colthreepv commented Nov 16, 2016

I am still experimenting with this docker-compose as I don't exactly know how all the gears work inside Concourse CI.
Mostly triaging bugs I have encountered while trying to get it running.

Please comment for any insight, thanks

@VolkerK
Copy link

VolkerK commented Nov 24, 2016

You can simply remove the links attribute.
By default all containers in a docker compose file are in the same network.
So the simplest version 2 file would look like this:

version: '2'
services:
  concourse-db:
    image: postgres:9.5
    environment:
      POSTGRES_DB: concourse
      POSTGRES_USER: concourse
      POSTGRES_PASSWORD: changeme
      PGDATA: /database

  concourse-web:
    image: concourse/concourse
    command: web
    ports: ["8080:8080"]
    volumes: ["./keys/web:/concourse-keys"]
    environment:
      CONCOURSE_BASIC_AUTH_USERNAME: concourse
      CONCOURSE_BASIC_AUTH_PASSWORD: changeme
      CONCOURSE_EXTERNAL_URL: "${CONCOURSE_EXTERNAL_URL}"
      CONCOURSE_POSTGRES_DATA_SOURCE: |-
        postgres://concourse:changeme@concourse-db:5432/concourse?sslmode=disable

  concourse-worker:
    image: concourse/concourse
    privileged: true
    command: worker
    volumes: ["./keys/worker:/concourse-keys"]
    environment:
      CONCOURSE_TSA_HOST: concourse-web```

@deitch
Copy link

deitch commented Dec 21, 2016

How did you get this to work? Whenever I do, I run into the DNS issue with 127.0.0.11 copied into the worker runc containers, and thus unable to resolve, leading all tasks to hang on initializing.

See concourse/concourse#347 and the start of resolution at cloudfoundry/guardian#42

@deitch
Copy link

deitch commented Dec 21, 2016

Ha! It works! if you add the line:

      CONCOURSE_GARDEN_DNS_SERVER: 8.8.8.8

@berinle
Copy link

berinle commented Feb 21, 2017

@deitch... thanks for the pointers. It worked for me. Just for others that stumble on this as well (+ future me ;)), this should go in the environment section of the concourse-worker

...
  concourse-worker:
    image: concourse/concourse
    privileged: true
    command: worker
    volumes: ["./keys/worker:/concourse-keys"]
    environment:
      CONCOURSE_TSA_HOST: concourse-web
      CONCOURSE_GARDEN_DNS_SERVER: 8.8.8.8

@mbjelac
Copy link

mbjelac commented Apr 28, 2017

this works!
i tried before with adding dns config to concourse-worker, but looks like concourse-web also needs it.

... maybe the extra worker envs did the trick:

      CONCOURSE_GARDEN_ADDRESS: concourse-worker
      CONCOURSE_BAGGAGECLAIM_ADDRESS: concourse-worker
      CONCOURSE_GARDEN_FORWARD_ADDRESS: concourse-worker
      CONCOURSE_BAGGAGECLAIM_FORWARD_ADDRESS: concourse-worker

using "regular" volume mounts (no volume containers).

@suhlig
Copy link

suhlig commented Aug 12, 2017

👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment