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
This commit is contained in:
acty
2026-02-03 18:11:14 +09:00
parent 257edf5c6d
commit 6cbf41410e
2 changed files with 62 additions and 0 deletions

44
.air.toml Normal file
View File

@@ -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

18
docker-compose.yml Normal file
View File

@@ -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: