当使用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连接上运行?
1条答案
按热度按时间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