docker - 如何允许 docker 容器通过 localhost 与另一个容器通信
问题描述
我有一个独特的情况,我需要能够通过自定义本地域(example.test)访问容器,我已将其添加到/etc/hosts
指向127.0.0.1
. 我用于 OIDC 的库使用此域来重定向浏览器,如果它是内部 docker 主机名,显然浏览器将无法解析。
我试过将它指向example.test,但它说它无法连接。我也试过查找 docker 网络的私有 ip,结果只是超时。
解决方案
在文件中添加network_mode: host
调用应用程序的服务定义docker-compose.yml
。这允许对 localhost 的调用被路由到服务器的 localhost 而不是容器的 localhost。
例如
码头工人-compose.yml
version: '3.7'
services:
mongodb:
image: mongo:latest
restart: always
logging:
driver: local
environment:
MONGO_INITDB_ROOT_USERNAME: ${DB_ADMIN_USERNAME}
MONGO_INITDB_ROOT_PASSWORD: ${DB_ADMIN_PASSWORD}
ports:
- 27017:27017
volumes:
- mongodb_data:/data/db
callingapp:
image: <some-img>
restart: always
logging:
driver: local
env_file:
- callingApp.env
ports:
- ${CALLING_APP_PORT}:${CALLING_APP_PORT}
depends_on:
- mongodb
network_mode: host // << Add this line
app:
image: <another-img>
restart: always
logging:
driver: local
depends_on:
- mongodb
env_file:
- app.env
ports:
- ${APP_PORT}:${APP_PORT}
volumes:
mongodb_data:
推荐阅读
- wordpress - 仅使用 WordPress 作为发布数据库来提供您自己的自定义站点
- java - 嗨我正在尝试从离子角度应用程序构建方舟,在构建过程中出现错误
- javascript - JSDoc 重载函数不适用于 TypeScript
- c++ - (CMake 构建)致命错误 LNK1181:无法打开输入文件 'glew.lib'
- sql - 本机查询在 h2 上返回结果,但不在 jpa 存储库中
- sql-server - Visual Studio 数据库项目在本地计算机上构建,但在构建服务器上失败
- python - 从 git 安装 python API
- javascript - 允许最终值通过后,有没有办法完成流?
- ios - 通过本机 facebook 应用程序的授权错误
- go - golang中的依赖注入