如何访问http://host.docker.internal:80在docker compose构建中



我的dock-compose.yml看起来像这个

services:
goporxy:
image: goproxy/goproxy
container_name: goporxy
hostname: goporxy
restart: always
volumes:
- ./goporxy:/go
ports:
- "80:8081" 
goserver:
build: 
context: ./
dockerfile: ./Dockerfile
container_name: goserver
hostname: goserver
restart: always
depends_on:
- goporxy

如果建立它,得到错误

go: github.com/Joker/hpp@v1.0.0: Get "http://host.docker.internal:80/github.com/%21joker/hpp/@v/v1.0.0.mod": dial tcp 192.168.65.2:80: connect: connection refused

但如果我在docker-compose up之前运行docker run -d -p80:8081 goproxy/goproxy,并在docker-compose.yml 中删除goporxy

goporxy纠正功能并开始下载依赖项

(在goserver Dockerfile中,我设置了类似RUN go env -w GOPROXY=http://host.docker.internal:80,direct的goproxy(

我想用docker compse同时做两件事,怎么办?

docker compose syas:dependens_on在启动web之前不会等待db和redis"就绪",只会等到它们启动之后。如果您需要等待服务准备就绪,请参阅控制启动顺序以了解有关此问题的更多信息和解决策略

以下是详细信息:[https://docs.docker.com/compose/startup-order/]

实际上,您可以在容器开始执行命令之前运行shell。shell将ping api或访问您的web来判断容器是否准备好,然后启动真正的服务。有现成的解决方案。SH脚本被称为";等待";。只需下载shell并将其添加到dockerfile 中

RUN apt-get -q update && apt-get -qy install netcat

然后将其添加到docker-compose.yml 中

command: sh -c './wait-for.sh "the server depended:port" -- "the code run the server"'

相关内容

最新更新