希望你们一切都好!
我读了很多关于这个问题的书,但没有找到对我有用的东西..
说明背景:
我正在用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
谁叫我的MakefileGO_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/