如何在Dokku实例中关联两个未对外暴露的应用
在Dokku中实现内部服务间的私密调用
核心思路
利用Dokku默认的内部Docker网络,让emailer通过应用名称直接访问api服务,同时禁用api的公网代理,确保其不暴露到外部。
具体操作步骤
禁用
api服务的公网暴露
部署api应用后,执行以下命令关闭公网代理,避免外部访问:dokku proxy:disable api如果之前已经启用过代理,执行该命令会立刻停止公网端口映射。
配置
emailer的内部API地址
在emailer应用中设置API_URL环境变量,直接使用api的应用名称加上容器内部端口(根据你的api服务实际监听端口调整,比如Flask默认5000、Node.js默认3000):dokku config:set emailer API_URL=http://api:5000验证内部访问有效性
进入emailer容器内部,用curl测试是否能正常调用api接口:dokku enter emailer curl http://api:5000/your-api-endpoint返回正常响应则说明配置成功。
注意事项
- 确保
api服务的Procfile正确绑定了容器内部的端口(例如web: gunicorn --bind 0.0.0.0:5000 app:app),不要只绑定127.0.0.1,否则同网络的emailer无法访问。 - Dokku默认将所有应用加入
dokku-network网桥,无需额外配置网络,应用间可直接通过应用名称作为主机名访问。
内容的提问来源于stack exchange,提问作者ydnaklementine
相关产品推荐
相关产品推荐

