我正在尝试思考如何访问作为docker-compose服务一部分运行的其他容器。
我见过很多关于通过其他容器内的服务名称访问容器的答案,但也有很多教程只是使用带有公开端口的本地主机。
所以我只是想弄清楚何时使用哪个以及为什么它会这样工作。
我的示例应用程序是:https ://github.com/daniil/full-stack-js-docker-tutorial
在其中,我有一个 NGINX 服务器将 ui 和 api 服务映射在一起,但事后我意识到,在我的 React 容器 (3000:3000) 内部,我实际上可以通过以下方式访问 Express 容器 (5050:5050)向 发送 axios 请求http://localhost:5050。
但同时如果我尝试通过本地主机连接到我的 MySQL 容器(9906:3306),它不起作用,我必须用作db主机,即容器名称。
有人可以帮我理解这一切是如何运作的吗:
http://localhost:SERVICE_PORT,它是否可以在 React 服务中工作,因为它是浏览器请求?即:axioshttp://api:5050在 React / axios 请求内部使用,是因为没有主机解析吗?http://localhost:9906|3306连接到我的数据库服务?localhost:5050从我的 React 容器中仍然可以看到 API 服务器在另一个容器中的 5050 上运行?