Skip to content


Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Alt text

A tool that makes debugging of Dockerized Go applications super easy by enabling Debugger and Hot-Reload features, seamlessly.

codecov PkgGoDev Go Report Card License


Homebrew (Linux/macOS)

brew install moshebe/pkg/gebug

Go (Linux/Windows/macOS/any other platform supported by Go)

If you have Go 1.16+, you can install latest released version of gebug directly from source by running:

go install


➜ gebug --help
Gebug helps you setup a fully suited debugging environment of Go application running inside a container.
It enables options like connecting with remote debugger and breakpoints inside the code or 
use hot-reload features which auto-build and run upon new change detected on the source code.

  gebug [command]

Available Commands:
  clean       Clean Gebug stack
  destroy     Destroy the Gebug project
  help        Help about any command
  init        Initialize a Gebug project
  start       Start Gebug services
  ui          Start Gebug web UI
  version     Gebug's version

  -h, --help             help for gebug
  -v, --verbose          enable verbose mode
  -w, --workdir string   your Go application root directory (default ".")

Use "gebug [command] --help" for more information about a command.


Configure workspace for Hot-Reload

Goland Debugger

Visual Studio Code Debugger

How Does It Work

Nothing special, no voodoo. Gebug just handles the Dockerfile and docker-compose configuration files generation with a easy-to-use command line utility.
You can find the generated files in your project under .gebug directory.
We are all programmers and I know you like to play with your toys, so feel free to edit any of those files in order to fit your use-case. Just make sure to run gebug start --skip-generate so the next run won't override your changes.

Let's examine the config.yaml fields so you will feel more comfortable editing as you wish:

Field Default Description
name application/project name
output_binary /app output binary artifact inside the runtime container
build_command go build -o {{.output_binary}} build command inside the runtime container. Note you can reference other configuration fields. When enabling Debugger -gcflags="all=-N -l" will be appended to the build command to stop compiler optimization and symbol removing
run_command {.output_binary}} run command, probably most of the time will just be the binary artifact path
runtime_image golang:1.18 base Docker image for the runtime container
debugger_enabled false whether to enable delve debugger inside the container or just use hot-reload
debugger_port 40000 delve debugger listen port, relevant only if debugger_enabled was set
expose_ports [] list of ports to expose inside the container. Uses the same syntax as docker-compose for mapping between host and container ports(e.g: "8080:8080"). No need to add the delve debugger listen port as it will be auto-added
networks [] list of docker external networks to join. if no network is selected, a new one will be created
environment [] list of environment variables to be set inside the container. Syntax: FOO=BAR or just FOO which will take the variable FOO from host and set it with its value

Web UI

If you prefer a web interface over a terminal or YAML file, you can simply run the following command in your Gebug project directory

gebug ui

A simple web application will be opened and let you control the Gebug configuration of your project directly from your browser.


Gebug is released under the Apache 2.0 license. See LICENSE.