docker - Reflex Golang与docker,docker-compose和makefile

标签 docker go makefile docker-compose dockerfile

希望你们一切都好!
我读了很多关于这个问题的书,但没有找到对我有用的东西..
说明背景:
我正在用go编写rest api,但此处显示的代码是出于可读性的伪代码。
我将docker与docker-compose结合使用,后者构建了一个CMD一个makefile的dockerfile,而我对dev env的反射存在问题。 Reflex已启动,但更改后不会重新加载。
我可能会错过一些东西,我是Go和Docker的新手:)
确定代码时间:
我的docker-compose.yaml:

version: "3"
services:
  app:
    build: .
    ports:
      - "80:8000"
    volumes:
      - appsrc:/app
    environment:
      CODE_ENV: dev
    networks:
      - apbp-network

networks:
  apbp-network:
    driver: bridge
volumes:
  appsrc:
谁叫我的Dockerfile:
FROM golang:latest

WORKDIR /app

COPY . .

RUN make --no-print-directory install

CMD make --no-print-directory run
谁叫我的Makefile
GO_PROJECT_NAME := test

go_prep_build:
    @echo "\n....Preparing installation environment for $(GO_PROJECT_NAME)...."
    go get github.com/cespare/reflex

go_dep_install:
    @echo "\n....Installing dependencies for $(GO_PROJECT_NAME)...."
    go mod download

go_build:
    @echo "\n....Building $(GO_PROJECT_NAME)...."
    go build -o test ./cmd/test

go_run:
    @echo "\n....Running $(GO_PROJECT_NAME)...."
    ./test


# Project rules
install:
    $(MAKE) go_prep_build
    $(MAKE) go_dep_install
    $(MAKE) go_build

run:
    reflex --start-service -r '\.go$$' make restart


restart:
    @$(MAKE) go_build
    @$(MAKE) go_run

.PHONY: go_prep_build go_dep_install go_build go_run install run restart reflex
我的./cmd/test文件:
package main

import (
    "fmt"
    "net/http"
)

func main() {
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        fmt.Fprintf(w, "hello world")
    })

    http.ListenAndServe(":8000", nil)
}

一切正常,只是我的reflex命令在更改后不会重新加载,例如将hello world更改为hello world 2不会重建。
我的输出:
app_1  | reflex --start-service -r '\.go$' make restart
app_1  | [00] Starting service
app_1  | [00] 
app_1  | [00] ....Building apbp....
app_1  | [00] go build -o test ./cmd/test
app_1  | [00] 
app_1  | [00] ....Running apbp....
app_1  | [00] ./test
我从字面上看一直坚持下去,我认为这是我误会的一件事,所以如果有人可以帮助解释这一点,真的很受欢迎:)
感谢阅读,如果您需要更多信息,请问我:)

最佳答案

好的,只是我的卷阻止了重新加载,但是我不明白为什么这样做,所以如果有人可以解释它,那将是受欢迎的!
我只是将docker-compose.yaml更改为:

version: "3"
services:
  app:
    build: .
    ports:
      - "80:8000"
    volumes:
      - .:/app
    environment:
      CODE_ENV: dev
    networks:
      - apbp-network

networks:
  apbp-network:
    driver: bridge
感谢您的答复和时间!

关于docker - Reflex Golang与docker,docker-compose和makefile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63962911/

相关文章:

python - 使用 docker 在 Jupyter Notebook 上导入错误 : No module named. ..

带有 channel 和 WaitGroup 的 Golang select 语句

java - Docker 统计 100% 内存

docker - `kind create cluster`的--network选项有什么作用?

go - 为什么 golang reflect.MakeSlice 返回不可寻址的值

c++ - boost 和 cpp-netlib 使编译错误

c - 几个 Eclipse C/C++ 问题

gradle - 如何从源代码(即github存储库)安装Rundeck?

docker - 无法使用马拉松运行Docker容器

parsing - 无法将字符串解析为具有时区偏移量的时间,其中包含RFC3339带有看似矛盾的错误