From 6cbf41410ecf1cf175f9702b892b97784c5f678f Mon Sep 17 00:00:00 2001 From: acty Date: Tue, 3 Feb 2026 18:11:14 +0900 Subject: [PATCH] feat(01-02): create Docker Compose dev environment with hot reload - docker-compose.yml orchestrates backend service with Air - Bind mount for live code editing with cached consistency - Named volume for persistent /data storage - .air.toml configures Go hot reload on file changes - Targets builder stage from multi-stage Dockerfile --- .air.toml | 44 ++++++++++++++++++++++++++++++++++++++++++++ docker-compose.yml | 18 ++++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 .air.toml create mode 100644 docker-compose.yml diff --git a/.air.toml b/.air.toml new file mode 100644 index 0000000..d36f30e --- /dev/null +++ b/.air.toml @@ -0,0 +1,44 @@ +root = "." +testdata_dir = "testdata" +tmp_dir = "tmp" + +[build] + args_bin = [] + bin = "./tmp/server" + cmd = "go build -o ./tmp/server ./cmd/server" + delay = 1000 + exclude_dir = ["assets", "tmp", "vendor", ".planning", "docker", ".git"] + exclude_file = [] + exclude_regex = ["_test.go"] + exclude_unchanged = false + follow_symlink = false + full_bin = "" + include_dir = [] + include_ext = ["go", "tpl", "tmpl", "html"] + include_file = [] + kill_delay = "0s" + log = "build-errors.log" + poll = false + poll_interval = 0 + rerun = false + rerun_delay = 500 + send_interrupt = false + stop_on_error = false + +[color] + app = "" + build = "yellow" + main = "magenta" + runner = "green" + watcher = "cyan" + +[log] + main_only = false + time = false + +[misc] + clean_on_exit = false + +[screen] + clear_on_rebuild = false + keep_scroll = true diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..8807391 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,18 @@ +services: + backend: + build: + context: . + dockerfile: docker/Dockerfile + target: builder # Stop at build stage for dev + command: air -c .air.toml + ports: + - "32768:32768" + volumes: + - .:/workspace:cached # Bind mount for live editing + - data:/data # Named volume for persistent data + working_dir: /workspace + environment: + - CGO_ENABLED=0 + +volumes: + data: