docker 如何在Vapor上设置ngrok,使其在本地使用自有域?

qqrboqgw  于 2023-04-29  发布在  Docker
关注(0)|答案(1)|浏览(117)

当使用docker容器在Vapor服务器应用程序上设置ngrok时,我无法使用自己的自定义域创建安全的Web连接。
我想使用我的docker-compose.yml文件来读取安装程序中的ngrok.yml文件,但我使用命令行获得了更好的结果。
假设拥有的域是:api.personal_domain.com。来自www.example的CNAME DNS记录 www.example.com 添加到我的域提供商。
我运行这个命令来启动localhost上的“安全Web连接”。

$ docker run -it -e NGROK_AUTHTOKEN=<NGROK_PERSONAL_TOKEN> ngrok/ngrok http 127.0.0.1:4040 --domain=api.personal_domain.com

但是404 Not Found仍然发生故障。我可以看到服务器没有收到请求。

这是在Vapor应用上做的postgres数据库的配置:

app.databases.use(.postgres(
  hostname: "api.personal_domain.com",
  port: 4040,
  username: "user_stackoverflow",
  password: "password_stackoverflow",
  database: "personal_domain_db_develop"
), as: .psql)

以下是docker-compose.yml文件中的设置:

ngrok:
  image: ngrok:latest
  restart: unless-stopped
  command:
    - "start"
    - "--all"
    - "--config"
    - "/etc/ngrok.yml"
  volumes:
    - ./ngrok.yml:/etc/ngrok.yml
  ports:
    - 4040:

ngrok.yml文件是这样设置的:

version: "2"
authtoken: <NGROK_PERSONAL_TOKEN>
tunnels:
 server:
  addr: 5433
  proto: http
  host_header: localhost
  domain: api.personal_domain.com

在那里,我在终端中运行$ docker compose up,但出现错误。

[+] Running 1/1
 ✘ ngrok Error                                                                            2.1s 
Error response from daemon: pull access denied for ngrok, repository does not exist or may require 'docker login': denied: requested access to the resource is denied

我希望在使用docker在localhost上开发服务器时有一个安全的HTTPS连接。
如何正确地设置ngrok隧道,使Vapor应用程序在本地安全的Web连接上运行?

qgelzfjb

qgelzfjb1#

PM在这里。正如@john-hanley所提到的,你应该在你的docker compose文件中使用image: ngrok/ngrok:latest。这里是using ngrok with Docker的ngrok文档页面的链接。
另外,我注意到在你的第一个docker命令中,你正在使用端口4040,这恰好是ngrok默认用于本地检查接口和代理API的端口。根据你的配置文件,你需要的docker命令是:
docker run --net=host -it -e NGROK_AUTHTOKEN=xyz ngrok/ngrok:latest http 5433 --domain api.personal_domain.com
如果您在Mac或Windows计算机上,则命令为:
docker run -it -e NGROK_AUTHTOKEN=xyz ngrok/ngrok:latest http host.docker.internal:5433 --domain api.personal_domain.com

相关问题