【问题标题】:Live Auto Reload of golang apps - Cosmtrek/airgolang 应用程序的实时自动重新加载 - Cosmtrek/air
【发布时间】: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


    【解决方案1】:

    试试

    bin = "./tmp/main.exe

    代替

    bin = "tmp/main.exe"

    希望这对您有所帮助。

    【讨论】:

      【解决方案2】:

      你的代码没问题。

      问题在于 docker 用于主机系统和容器之间文件共享的技术。

      当我尝试不使用 Docker Desktop 而是使用像 Rancher 这样的替代方案时,我在 mac 上遇到了同样的问题,它甚至通过 moby 使用 docker CLI。当我切换回使用 gRPC FUSE、osxfs 和 VirtioFS 的原始 Docker 桌面时——所有这些都运行得很好。

      【讨论】:

        猜你喜欢
        • 2022-01-16
        • 2019-02-08
        • 2015-08-19
        • 2018-06-13
        • 2016-09-13
        • 2018-12-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多