docker - 有没有办法在 Docker 上使用 --link 和 --net=host ?
问题描述
我正在制作一个节点反向代理系统,当我在 Docker 上没有它时,一切都可以 100% 运行,但是当我将它放在 Docker 上时,我无法访问不在同一个 docker 容器中运行的服务。
目前,我的设置是 1x Redis 容器、1x MongoDB 容器和 1x 代理容器(通过 --link homerouter-redis --link homerouter-mongo 链接在一起)。就这样,一切都按预期工作,哇!除了,当我尝试反向代理未在 Docker 内运行的服务时,例如在端口:8080 上,我无法连接。所以,经过一番研究,我发现了 --net=host,但是它成功了,所以我不能使用我的 Redis 和 Mongo 容器,因为它会说连接被拒绝。
我已经搜索了一段时间,似乎找不到解决这个问题的方法,任何帮助将不胜感激!
Docker Compose(在这种情况下未使用,但仍然如此)
version: '3.3'
services:
mongo:
container_name: homerouter-mongo
image: 'mongo:4'
ports:
- 27017:27017
redis:
container_name: homerouter-redis
image: 'redis:5'
command: redis-server
ports:
- 6376:6379
homerouter:
privileged: true
container_name: homerouter
restart: on-failure
build: .
volumes:
- ./:/usr/src/app
- /usr/src/app/node_modules
ports:
- 80:80
links:
- redis
- mongo
depends_on:
- redis
- mongo
command: npm start
Dockerfile
FROM node:10
WORKDIR /usr/src/homerouter
COPY package*.json ./
RUN npm install
COPY . .
CMD ["npm", "run", "start:prod"]
EXPOSE 80
(另外,一个完全题外话的问题,Docker Compose 生产准备好了吗?)
解决方案
回答 我需要做的就是将 --net=host 添加到所有这些,并且在连接时不再使用容器名称(相反,我使用了 127.0.0.1)
推荐阅读
- javascript - 如何使用查询字符串 React-Router 渲染组件
- outlook - 为什么 EWS api 返回 ErrorNonExistentMailbox 错误?
- powershell - 如何使用 PowerShell 在注册表中查找 DWORD 并更改值。DWORD 可能在多个键中,并且事先不知道
- amazon-web-services - EMR conf spark-default 设置
- python - 检查号码范围python
- wpf - 将 FallbackValue 提供给工作的 WPF 绑定以消除警告有什么用处?
- angular - 使用下拉列表第二次过滤表不返回任何内容
- javascript - CraftCMS - CraftQL 查询全局变量总是返回错误
- android - 使用默认 animateLayoutChanges 时滚动视图出现故障
- node.js - googleapis npm 模块文档