A tool that makes debugging of Dockerized Go applications super easy by enabling Debugger and Hot-Reload features, seamlessly.
go get -u github.com/moshebe/gebug
➜ 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.
Usage:
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
version Gebug's version
Flags:
-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.
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.14 | 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. |
Gebug is released under the Apache 2.0 license. See LICENSE.