我无法让两个容器进行通信。我在不同的项目中有2个单独的docker-compose.yml
文件。
第一个是:
version: '2'
services:
myapp:
tty: true
image: 'bitnami/laravel:latest'
labels:
kompose.service.type: nodeport
ports:
- 3000:3000
expose:
- "3000"
volumes:
- ./:/app
networks:
default:
external:
name: "laravel"
第二个:
app:
build:
context: .
dockerfile: ./docker/app/Dockerfile
image: bla/bla
container_name: my-app
ports:
- "80:80"
- "443:443"
networks:
default:
external:
name: "laravel"
当进入浏览器或从终端到localhost:3000
卷曲时,我得到了响应。如果我进入myapp
容器,我也可以卷曲(这确实并不奇怪)。
但是我无法做到这一点,所以我进入了app
容器并获得了答复。相反,我得到:
卷曲:(7)无法连接到本地主机端口3000:连接被拒绝
答案 0 :(得分:1)
当您访问容器中的localhost时,您访问的是容器本身,而不是主机。
例如,如果您想访问主机上的端口,则对此进行一些讨论:https://forums.docker.com/t/accessing-host-machine-from-within-docker-container/14248/5
但是您需要访问同一主机上的另一个容器。通常,使用本地主机是一种不好的做法,因为将来将容器移动到另一个主机时,您会忘记它,并且系统会崩溃。
如果您仍然想要这样做,则需要在Docker中创建网桥。
您可以找到与网桥相关的文档:https://docs.docker.com/network/network-tutorial-standalone/