我的机器文件系统上具有以下项目结构:
../
├── angular_front_end/
│ └── docker-compose.yml
│ └── Dockerfile
├── node_back_end_service/
│ └── docker-compose.yml
│ └── Dockerfile
└── php_back_end_service/
└── docker-compose.yml
└── Dockerfile
问题是,我不想遍历每个代码并执行docker-compose up
,维护起来很可怕。有没有办法以某种方式将它们统一起来?
另外,我是否可以在一个容器中运行所有这些容器,如下面的屏幕快照中的
back-end
容器?非常感谢!
最佳答案
您可以在此目录层次结构的根目录中创建一个docker-compose.yml
文件,该文件将启动所有内容。
version: '3.8'
services:
frontend:
# Builds Dockerfile within that directory,
# can only reference files within this directory
build: angular_front_end
ports: ['3000:3000']
node:
build: node_back_end
php:
build: php_back_end
如果这些服务需要数据库或其他Docker资源,则都需要在此顶层docker-compose.yml
文件中将它们全部复制。原则上可以重用现有的Compose文件,但是您会遇到两个大问题。每次运行
docker-compose -f
命令时,您都需要始终使用多个docker-compose
选项;使用您的设置,该设置很快就会变得笨拙(即使只有三项服务)。同样,all filesystem paths are interpreted relative to the first -f
option's path,所以像build: .
这样的声明将不会指向正确的位置。
关于docker - Docker为多个不同项目撰写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64424789/