登录
首页 >  Golang >  Go问答

Go HTTP服务器在Docker中返回空响应

来源:stackoverflow

时间:2024-03-02 15:45:26 152浏览 收藏

学习知识要善于思考,思考,再思考!今天golang学习网小编就给大家带来《Go HTTP服务器在Docker中返回空响应》,以下内容主要包含等知识点,如果你正在学习或准备学习Golang,就都不要错过本文啦~让我们一起来看看吧,能帮助到你就更好了!

问题内容

我只是按照 docker 文档示例进行操作,我在 dockerfile 中有这些行

from golang:1.18-buster as build
workdir /app
copy go.mod .
copy go.sum .
run go mod download
copy *.go ./
run go build -o /docker-gs-ping-roach

from gcr.io/distroless/base-debian10
workdir /
copy --from=build /docker-gs-ping-roach /docker-gs-ping-roach
expose 4433
user nonroot:nonroot
entrypoint ["/docker-gs-ping-roach"]

docker-compose.yaml 中:

version: '3.8'

services:
  docker-gs-ping-roach:
    depends_on:
      - roach
    build:
      context: .
    container_name: rest-server
    hostname: rest-server
    networks:
      - mynet
    ports:
      - 8000:8000
      - 4433:4433
    environment:
      - PGUSER=${PGUSER:-totoro}
      - PGPASSWORD=${PGPASSWORD:?database password not set}
      - PGHOST=${PGHOST:-db}
      - PGPORT=${PGPORT:-26257}
      - PGDATABASE=${PGDATABASE:-mydb}
    deploy:
      restart_policy:
        condition: on-failure
  roach:
    image: cockroachdb/cockroach:latest-v20.1
    container_name: roach
    hostname: db
    networks:
      - mynet
    ports:
      - 26257:26257
      - 8080:8080
    volumes:
      - roach:/cockroach/cockroach-data
    command: start-single-node --insecure

volumes:
  roach:

networks:
  mynet:
    driver: bridge

终端中没有显示错误,数据库正在 http://localhost:8080/ 上运行,但是当我访问 http://localhost:4433 上的 go 应用程序时,出现此错误

curl:(52)来自服务器的空回复

我检查了容器以确保我到达了正确的端口:


正确答案


我不确定您从哪里获得端口 4433 或 8000。

The docs 显示 -p 80:8080,因此请更改您的端口以使用它。

更具体地说,Go 应用程序的 Web 服务器默认为 start on port 8080,但这与 CockroachDB 冲突,因此您需要在主机上更改它。

或者需要定义HTTP_PORT=4433,则4433:4433的端口映射就可以了。

以上就是《Go HTTP服务器在Docker中返回空响应》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>