簡體   English   中英

Cloud Run and Revel 容器

[英]Cloud Run and Revel Container

我有一個使用 revel 容器化在 docker 鏡像中構建的簡單站點。 我正在嘗試在 Cloud Run 中運行此映像。 不幸的是,當我轉到該站點的 URL 時,我在瀏覽器中看到了 502 和此日志行

2020/10/30 17:27:07 http: proxy error: dial tcp 0.0.0.0:16166: connect: connection refused

我認為它與端口有關,但我嘗試將端口最初映射到 9898,但我仍然在日志行中看到一個隨機端口號。 目前,我按照 GCP 文檔的建議將我的 revel 應用程序中的端口設置為${PORT}

我應該提到我可以毫無問題地在本地部署容器。

Dockerfile:

FROM golang:1.15 AS build
ENV CGO_ENABLED 0
ADD . /go/src/app

# Install revel framework
RUN go get -u github.com/revel/revel
RUN go get -u github.com/revel/cmd/revel
# Run revel app
EXPOSE ${PORT}
ENTRYPOINT revel run -a /go/src/app -p ${PORT} -m dev

Revel app.conf 片段:

# The IP address on which to listen.
http.addr = 0.0.0.0

# The port on which to listen.
http.port = ${PORT}

更新:建議使用 8080 的硬編碼端口,看看是否有效。 我仍然看到 502。我再次嘗試在本地運行它,看起來 revel 正在嘗試在一個端口上設置,然后在另一個端口上作為反向代理進行偵聽。 所以除非我認為這可能是一個狂歡問題而不是 Cloud Run 問題

docker run --publish 8080:8080 app
Revel executing: run a Revel application
Changed detected, recompiling
Parsing packages, (may require download if not cached)... Completed
INFO  02:34:24    app     run.go:34: Running revel server
INFO  02:34:24    app   plugin.go:9: Go to /@tests to run the tests.
Revel engine is listening on.. 0.0.0.0:44795

Time to recompile 8.0340966s
Revel proxy is listening, point your browser to : 8080

注意最后一行Revel proxy is listening, point your browser to : 8080Revel engine is listening on.. 0.0.0.0:44795也在Revel engine is listening on.. 0.0.0.0:44795

因此,經過進一步調查和討論后,似乎當您通過revel run運行 revel 應用程序時,會在隨機端口上設置代理,而該連接失敗了。 此外,通過revel run的最大好處是部署代碼的熱交換,這在部署上下文中是不必要的。 所以這里的解決方案是通過revel build構建應用程序並以這種方式運行該應用程序,以便只有應用程序端口用於連接。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM