docker中的ngrok无法连接到Django开发服务器

问题描述 投票:1回答:2

我正在使用localhost django网络服务器http://localhost:8000,该服务器工作正常。同时,我需要ngrok进行端口转发ngrok http 8000,它也可以正常工作。

然后,我想将ngrok,postgres,redis,maildev等全部放入docker容器中,除ngrok之外,其他所有东西都可以正常工作。

ngrok无法包含到localhost:8000。

[我理解为什么,我想是因为ngrok在单独的'服务器'上运行,并且该服务器上的本地主机没有运行Web服务器。

我想知道如何解决它。

  • 我在docker-compose文件中尝试了network_mode: "host",它不起作用(MacOS)。
  • 我尝试使用host.docker.internal,但由于我是自由计划用户,因此ngrok不允许我指定主机名。

任何帮助表示赞赏!谢谢。

这是我的docker-compose文件:

    ngrok:
        image: wernight/ngrok
        ports:
            - '4040:4040'
        environment:
            - NGROK_PORT=8000
            - NGROK_AUTH=${NGROK_AUTH_TOKEN}
        network_mode: "host"
python django docker docker-compose ngrok
2个回答
3
投票

更新:

条带具有一个新工具[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,改用Servo解决了这个问题,这是代码,以防有人遇到相同的问题

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"

0
投票

我能够通过执行以下操作使其起作用:

  1. 使用以下命令指示Django绑定到端口8000:python manage.py runserver 0.0.0.0:8000
  2. [通过将web作为web:8000环境变量传入,指示ngrok连接到我的docker组成文件中的NGROK_PORT docker服务。

我在下面粘贴了我的设置的截断版本。

docker-compose.yml

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/.env:]

NGROK_AUTH=your-auth-token-here
NGROK_DEBUG=1
NGROK_PORT=web:8000
NGROK_SUBDOMAIN=(optional)-your-subdomain-here

您可以忽略子域和身份验证字段。我通过查看他们的docker entrypoint

来解决这个问题
© www.soinside.com 2019 - 2024. All rights reserved.