我想用Docker运行一个webapp和一个数据库,有没有办法用docker-compose文件连接两个Docker (webApp Docker容器在一台机器上,db docker容器在另一台机器上),我是说两台独立的服务器这是我的Mongodb docker-compose文件
version: '2'
services:
mongodb_container:
image: mongo:latest
restart: unless-stopped
ports:
- 27017:27017
volumes:
- mongodb_data_container:/data/db这是我的demowebapp docker-compose文件
version: '2'
services:
demowebapp:
image: demoapp:latest
restart: unless-stopped
volumes:
- ./uploads:/app/uploads
environment:
- PORT=3000
- ROOT_URL=http://localhost
- MONGO_URL=mongodb://35.168.21.133/demodb
ports:
- 3000:3000有谁能建议我怎么做吗?
发布于 2020-04-22 13:55:29
只使用一个带有compose version: 2的docker-compose.yml,就无法在两台不同的机器上部署两个服务。这就是使用stack.yml和群组模式的version: 3的用途。
但是,您可以使用两个docker-compose.yml版本2部署到两台不同的计算机,但必须使用不同的主机名/ips连接它们,而不是使用组合文件中的服务名。
发布于 2020-04-22 19:40:50
您不需要更改所显示的示例文件中的任何内容:您必须连接到另一台主机的IP地址(或DNS名)和发布的ports:。
一旦你在不同的机器上(或在不同的VM中),围绕Docker的任何细节都不再可见。从运行Web应用程序的系统的角度来看,第一个系统在端口27017上运行MongoDB;它可能在裸机上运行,或者在容器中运行,或者从VM转发端口,或者使用HAProxy之类的东西从另一个系统通过;从字面上讲无法判断。
您必须连接到第一台服务器的IP地址的配置将有效。如果您还没有DNS系统(BIND、AWS Route 53等),我会设置一个DNS系统。以避免需要对IP地址进行硬编码。你可能还会看到一个服务发现系统(我以前在Hashicorp的领事那里很走运),它可以把你送到“运行MongoDB的主机系统”,而不需要知道是哪一个。
https://stackoverflow.com/questions/61356919
复制相似问题