Skip to content

Commit

Permalink
hack: add docker-compose file for development
Browse files Browse the repository at this point in the history
This adds a simple docker compose file for development. The development
version of buildkit will build with the dockerfile, set debug to true,
use a tcp address to be compatible with the remote driver, and enable
the debug image through delve to allow for remote debugging.

It also configures additional services for help with development. At
the moment, this only includes jaeger for collecting traces but can also
include additional services in the future for things like metrics
collection.

Signed-off-by: Jonathan A. Sternberg <jonathan.sternberg@docker.com>
  • Loading branch information
jsternberg committed Jan 5, 2024
1 parent 8849789 commit 3787d26
Show file tree
Hide file tree
Showing 4 changed files with 88 additions and 0 deletions.
40 changes: 40 additions & 0 deletions hack/compose
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
#!/usr/bin/env bash

# Use to set up a dev environment for buildkit.
# Not meant for production deployments.
# Use the same way you would use docker compose.
#
# $ hack/compose up -d --build
#
# Can be extended for local development by adding
# a compose.override.yaml file to the same directory.
#
# Additional config files for extra services can
# also be placed in the same folder and they will
# be automatically ignored by git.
#
# To access the newly created development buildkit,
# use either:
#
# $ buildctl --addr tcp://127.0.0.1:1234 ...
#
# or alternatively configure a new builder with buildx.
#
# $ docker buildx create \
# --bootstrap \
# --name dev \
# --driver remote \
# tcp://127.0.0.1:1234
# $ docker buildx --builder dev ...

. $(dirname $0)/util
set -eu -o pipefail

filesDir=$(dirname $0)/composefiles

args=(compose '-f' "$filesDir/compose.yaml")
if [ -f "$filesDir/compose.override.yaml" ]; then
args+=('-f' "$filesDir/compose.override.yaml")
fi

dockerCmd "${args[@]}" "$@"
8 changes: 8 additions & 0 deletions hack/composefiles/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# Exclude everything to allow this folder to be used for other service
# configurations.
*

# Specifically allow certain configuration files.
!.gitignore
!buildkitd.toml
!compose.yaml
5 changes: 5 additions & 0 deletions hack/composefiles/buildkitd.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
debug = true

[grpc]
address = [ "tcp://0.0.0.0:1234" ]
debugAddress = "0.0.0.0:6060"
35 changes: 35 additions & 0 deletions hack/composefiles/compose.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
name: buildkit
services:
buildkit:
container_name: buildkit-dev
build:
context: ../..
args:
BUILDKIT_DEBUG: 1
image: moby/buildkit:local
ports:
- 127.0.0.1:1234:1234
- 127.0.0.1:5000:5000
- 127.0.0.1:6060:6060
restart: always
privileged: true
environment:
DELVE_PORT: 5000
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT: http://jaeger:4317
configs:
- source: buildkit_config
target: /etc/buildkit/buildkitd.toml
volumes:
- buildkit:/var/lib/buildkit

jaeger:
image: jaegertracing/all-in-one:latest
ports:
- 127.0.0.1:16686:16686

volumes:
buildkit:

configs:
buildkit_config:
file: ./buildkitd.toml

0 comments on commit 3787d26

Please sign in to comment.