我正在运行一个码头工人:docker run -p 8080:8080 -t admin没有localhost:8080响应,但我运行了go run admin/main.goI can reachlocalhost:8080我知道关于这个问题有很多问题,我调查了一切:使用正确的端口:8080:8080在我的本地计算机上运行时,我能够访问服务器:检查服务器是否提供正确的端口。这是我的 Dockerfile - 公开正确的端口 8080:FROM --platform=linux/amd64 golang:1.19.3-bullseye# Install grpcRUN go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.2 && \ go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.28WORKDIR /appCOPY . .# Install protoc and zip system libraryRUN apt-get update && apt-get install -y zip && apt-get install -y tree && \ mkdir /opt/protoc && cd /opt/protoc && wget https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0/protoc-3.7.0-linux-x86_64.zip && \ unzip protoc-3.7.0-linux-x86_64.zip# Copy the grpc proto file and generate the go module# RUN /opt/protoc/bin/protoc --proto_path=/app --go_out=/app --go_opt=paths=source_relative --go-grpc_out=/app --go-grpc_opt=paths=source_relative /app/proto/textbear.proto /app/proto/server.protoRUN /opt/protoc/bin/protoc --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative proto/textbear.proto db/proto/db.proto server/proto/server.protoRUN go mod downloadEXPOSE 8080RUN go build -o /admin admin/main.goENTRYPOINT ["/admin"]我可能遗漏了一些明显的东西。
1 回答
繁花不似锦
TA贡献1851条经验 获得超4个赞
我的管理容器依赖于数据库容器网络。我的管理容器正在使用该localhost地址并导致管理容器卡住等待连接到数据库容器。我通过将地址从 更改为localhost来修复db,因为 docker compose 将为所有图像生成主机,管理员可以使用主机db名与数据库通信。
这是我的 Dockerfile:
version: '3'
services:
admin:
image: admin
ports:
- "8080:8080"
db:
image: db
ports:
- "50052:50052"
server:
image: server
ports:
- "50051:50051"
- 1 回答
- 0 关注
- 78 浏览
添加回答
举报
0/150
提交
取消