Python docker中的ngrok无法连接到Django开发服务器
我正在使用本地主机django Web服务器Python docker中的ngrok无法连接到Django开发服务器,python,django,docker,docker-compose,ngrok,Python,Django,Docker,Docker Compose,Ngrok,我正在使用本地主机django Web服务器http://localhost:8000,它工作正常。 同时,我需要ngrok做端口转发,ngrok http8000,它也可以正常工作 然后我想把ngrok、postgres、redis、maildev等都放在docker容器中,除了ngrok,其他的都可以 ngrok无法包含到localhost:8000的数据 我理解为什么,我想是因为ngrok运行在一个单独的“服务器”上,而该服务器上的本地主机没有运行web服务器 我想知道我怎样才能修好它
http://localhost:8000
,它工作正常。
同时,我需要ngrok做端口转发,ngrok http8000
,它也可以正常工作
然后我想把ngrok、postgres、redis、maildev等都放在docker容器中,除了ngrok,其他的都可以
ngrok无法包含到localhost:8000的数据
我理解为什么,我想是因为ngrok运行在一个单独的“服务器”上,而该服务器上的本地主机没有运行web服务器
我想知道我怎样才能修好它
- 我试着在我的docker中用
,它不工作(MacOS)网络模式:“主机”
- 我尝试使用host.docker.internal,但由于我是自由计划用户,ngrok不允许我指定主机名
ngrok:
image: wernight/ngrok
ports:
- '4040:4040'
environment:
- NGROK_PORT=8000
- NGROK_AUTH=${NGROK_AUTH_TOKEN}
network_mode: "host"
更新:
stripe有一个新工具[stripe cli][1]
,可以做同样的事情。
照下面的方法做
stripe-cli:
image: stripe/stripe-cli
command: listen --api-key $STRIPE_SECRET_KEY
--load-from-webhooks-api
--forward-to host.docker.internal:8000/api/webhook/
我最终摆脱了ngrok,用serveo解决了这个问题, 这是代码,以防任何人遇到同样的问题
serveo:
image: taichunmin/serveo
tty: true
stdin_open: true
command: "ssh -o ServerAliveInterval=60 -R 80:host.docker.internal:8000 -o \"StrictHostKeyChecking no\" serveo.net"
我可以通过以下操作使其工作:
python manage.py runserver 0.0.0.0:8000
web:8000
作为ngrok\u PORT
环境变量传入,指示ngrok连接到我的docker compose文件中的web
docker服务/ngrok/.env
):
您可以省去子域和身份验证字段。我通过查看他们的
version: '3.7'
services:
ngrok:
image: wernight/ngrok
depends_on:
- web
env_file:
- ./ngrok/.env
ports:
- 4040:4040
web:
build:
context: ./app
dockerfile: Dockerfile.dev
command: python manage.py runserver 0.0.0.0:8000
env_file:
- ./app/django-project/settings/.env
ports:
- 8000:8000
volumes:
- ./app/:/app/
NGROK_AUTH=your-auth-token-here
NGROK_DEBUG=1
NGROK_PORT=web:8000
NGROK_SUBDOMAIN=(optional)-your-subdomain-here