【发布时间】:2022-12-04 08:40:04
【问题描述】:
我正在尝试在 docker 中自动重新加载 golang 应用程序。我正在使用 cosmtrek/air 来做这件事,它在我的 Windows 10 机器上似乎没问题。但是当我使用 docker 时,代码没有重建。 这是文件结构
-cmd
-api
-main.go
.air.toml
docker-compose.dev.yml
Dockerfile.dev
go.mod
go.sum
这是我的码头文件
FROM golang:1.18.3-alpine3.15
WORKDIR /app
COPY go.mod go.sum /app/
RUN go mod download && go mod verify
RUN go install github.com/cosmtrek/air@latest
COPY ./ /app/
CMD "air"
这是我的 docker-compose.dev.yml 文件
version: '3.8'
services:
backend:
container_name: go-backend-test
build:
context: .
dockerfile: ./Dockerfile.dev
volumes:
- ./:/app
问题是,如果我更改 main.go 或任何 go 文件中的任何内容,即使我将 sh 放入卷正在更新的 docker 容器中,日志也不会使用新代码进行更新。它似乎没有重建。但是它工作正常并在我的 Windows 机器上重建。 这是我的 .air.toml 文件
root = "."
testdata_dir = "testdata"
tmp_dir = "tmp"
[build]
args_bin = []
bin = "tmp/main.exe"
cmd = "go build -o ./tmp/main.exe ./cmd/api/."
delay = 1000
exclude_dir = ["assets", "tmp", "vendor", "testdata"]
exclude_file = []
exclude_regex = ["_test.go"]
exclude_unchanged = false
follow_symlink = false
full_bin = ""
include_dir = []
include_ext = ["go", "tpl", "tmpl", "html"]
kill_delay = "0s"
log = "build-errors.log"
send_interrupt = false
stop_on_error = true
[color]
app = ""
build = "yellow"
main = "magenta"
runner = "green"
watcher = "cyan"
[log]
time = false
[misc]
clean_on_exit = true
[screen]
clear_on_rebuild = true
一整天都在为这个话题着急。提前感谢您的想法!
【问题讨论】:
标签: docker go docker-compose dockerfile