当我在/cmd文件夹中有main.go而不是根目录时,我一直收到这个错误:

| building...
| no Go files in /app
| failed to build, error: exit status 1

这是我的Dockerfile:

FROM golang:1.22.1-alpine

WORKDIR /app

COPY . .

RUN go mod download

RUN go build -o main .

CMD ["/app/main"]

这是我的docker-compose.yaml%文件:

version: "3"

services:
  main:
    container_name: myapp
    build:
      context: .
      dockerfile: ./Dockerfile
    ports:
      - ${GRPC_PORT}:9090
      - ${REST_PORT}:8080
    volumes:
      - .:/app
    develop:
    watch:
      - action: rebuild
        files:
          - ./**/*.go
          - ./go.mod
          - ./go.sum

我已经try 了许多与卷和工作目录有关的事情,但不知道如何从cmd文件夹构建和执行.

推荐答案

解决了!

Dockerfile

FROM golang:latest

RUN mkdir /app
WORKDIR /app
ADD . /app

RUN go get github.com/githubnemo/CompileDaemon
RUN go install github.com/githubnemo/CompileDaemon

ENTRYPOINT CompileDaemon --build="go build -o tmp/main cmd/main.go" --command=./tmp/main

docker-compose.yaml

version: "3"
services:
  app:
    build: .
    container_name: go-docker-live-reload
    volumes:
      - ./:/app

下面是一个示例repo和解释文章:

Go相关问答推荐

CGO Linux到Windows交叉编译中的未知类型名称

Go在使用HTTP代理时如何处理DNS请求?

Golang文本/模板序列范围

为什么(编码器).EncodeElement忽略";,innerxml";标记?

带有一个新变量的Go冒号等于运算符

迭代字符串并用映射值替换原始字符串中的值的惯用方法

go mod tidy会自动升级go.mod中的go版本吗?

这种合并排序的实现有什么问题?

Yocto 无法交叉编译 GoLang Wails 应用程序

Go 信号处理程序不处理终端窗口关闭

如何处理 Go 的 firebase admin sdk 错误?

如何将文件上传到 Google Drive,并与使用服务帐户和 Golang 的任何人共享

如何将一片十六进制字节转换为整数

如何在 golang 中同时加载 .env 文件和 os 环境变量

在 Go 中读取数字行

什么是无效字符实体 &ccb

GOENV 只能使用 OS 环境设置

如何使用 context.WithCancel 启动和停止每个会话的心跳?

try 创建新的 etcdv3 客户端时出现pc error: code = Unavailable desc = error reading from server: EOF

在 etcd 键值存储中禁用历史记录