不確定我在這里做錯了什么。我正在嘗試使用持久數(shù)據(jù)庫創(chuàng)建一個 golang/postgres dockerized 項目。以下是文件。當我運行時go run main.go,curl http://localhost:8081/我得到了預期的輸出,但是當我嘗試這個時docker compose up我遇到了問題,但一切似乎都在工作,因為我沒有看到任何錯誤消息postgres-1 | 2022-08-29 05:31:59.703 UTC [1] LOG: database system is ready to accept connections,但是當我嘗試時curl http://localhost:8081/我遇到了錯誤curl: (56) Recv failure: Connection reset by peer。我嘗試完全刪除 postgres 部分,但我仍然遇到同樣的問題。我可以看到 docker 已啟動并正在運行并且端口正在偵聽sudo lsof -i -P -n | grep 8081docker-pr 592069 root 4u IPv4 1760430 0t0 TCP *:8081 (LISTEN)我在 Ubuntu 22.04 上使用它主要去:package mainimport ( "fmt" "log" "net/http")func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "this can be anything") }) http.HandleFunc("/try-it", func(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "it worked!") }) log.Fatal(http.ListenAndServe(":8081", nil))}文件:FROM golang:1.19-alpine3.16WORKDIR /appCOPY go.mod ./RUN go mod downloadCOPY . .RUN go build -o main .RUN go build -v -o /usr/local/bin/app ./...EXPOSE 8081CMD [ "./main" ]docker-compose.yml:version: '3.9'services: api: restart: unless-stopped build: context: . dockerfile: Dockerfile ports: - "8081:8080" depends_on: - postgres networks: - backend postgres: image: postgres restart: unless-stopped ports: - "5001:5432" volumes: - psqlVolume:/var/lib/postgresql/data environment: - POSTGRES_USER=${POSTGRES_USER} - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} - POSTGRES_DB=${POSTGRES_DB} networks: - backendnetworks: backend:volumes: psqlVolume:
1 回答

翻閱古今
TA貢獻1780條經(jīng)驗 獲得超5個贊
docker 容器已啟動并正在運行,但需要在容器和應用程序中映射端口。例如在 main.gohttp.ListenAndServe(":8084", nil)中,應用程序中的這個方法需要映射到容器端口(在本例中:8084)
version: '3.9'
services:
api:
image: api
restart: unless-stopped
build:
context: .
dockerfile: Dockerfile
ports:
- "8083:8084" #host_port:container_port
可以在 docker 正在偵聽的主機端口上發(fā)出 curl 請求(在本例中為:8083)。例如curl http://localhost:8083/。這將向主機發(fā)出請求,該請求將被偵聽端口的 docker 捕獲,:8083然后將請求傳輸?shù)秸趥陕牭娜萜鳎?8084如docker-compose.yml. 如果端口映射不正確,則 curl 將返回curl: (56) Recv failure: Connection reset by peer。感謝您的學習經(jīng)驗,感謝您的所有幫助。
- 1 回答
- 0 關注
- 147 瀏覽
添加回答
舉報
0/150
提交
取消