由于您的容器不能具有完全相同的名称,但您可以使用 目录前缀 默认使用的名称。
让我们假设你有这样的目录结构:
/home/your_project_directory/1/
/home/your_project_directory/2/
/home/your_project_directory/3/
/home/your_project_directory/4/
在目录1 中有一个docker-compose.yml 文件,其内容如下:
version: '3.9'
services:
httpd:
image: nginx
restart: always
volumes:
nginx: {}
假设你在目录/home/your_project_directory/ 。
现在让我们cd 进入这四个目录并运行以下命令:
ln -s /home/your_project_directory/2/docker-compose.yml $PWD/2
这将创建一个从目录1 中的docker-compose.yml 文件到2 的软链接。
并对另外两个目录 3 和 4 重复此命令。
当你完成所有这些后,你可以通过这个命令来验证它们:
find /home/your_project_directory/ -name 'docker-compose.yml' ls -lh {} \;
此命令查找在目录 /home/your_project_directory/ 任何名为 docker-compose.yml 的文件,然后运行 ls -lh THAT_FILE,如下:
-rw-r--r-- 1 root root 105 Apr 23 04:20 /home/your_project_directory/1/docker-compose.yml
lrwxrwxrwx 1 root root 29 Apr 23 04:11 /home/your_project_directory/2/docker-compose.yml -> /home/your_project_directory/1/docker-compose.yml
lrwxrwxrwx 1 root root 29 Apr 23 04:11 /home/your_project_directory/3/docker-compose.yml -> /home/your_project_directory/1/docker-compose.yml
lrwxrwxrwx 1 root root 29 Apr 23 04:12 /home/your_project_directory/4/docker-compose.yml -> /home/your_project_directory/1/docker-compose.yml
好的,现在让我们通过另一个find 命令来组合它们:
find . -name "docker-compose.yml" -exec docker-compose -f {} up -d \;
同样,此文件会找到任何名为 docker-compose.yml 的文件,然后运行 docker-compose -f THAT_FILE up -d 命令。
所以,这四个命令会运行:
docker-compose -f 1/docker-compose.yml up -d
docker-compose -f 2/docker-compose.yml up -d
docker-compose -f 3/docker-compose.yml up -d
docker-compose -f 4/docker-compose.yml up -d
如果你运行docker ps,你应该会看到类似的输出:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4dac5dfba581 nginx "/docker-entrypoint.…" 12 minutes ago Up 12 minutes 80/tcp 1_httpd_1
d517a156f6a1 nginx "/docker-entrypoint.…" 12 minutes ago Up 12 minutes 80/tcp 2_httpd_1
ed6223ca5411 nginx "/docker-entrypoint.…" 12 minutes ago Up 12 minutes 80/tcp 3_httpd_1
0fa78f2ba8bf nginx "/docker-entrypoint.…" 12 minutes ago Up 12 minutes 80/tcp 4_httpd_1
但根据您的需要和要求,您可以将任何详细信息添加到您的 docker-compose.yml 文件中。
注意,您不能在此文件中使用相同的端口映射,因为您会收到端口已分配错误。
另一种方法是将cp一个文件放到其他三个目录中,并使用不同端口的端口映射,例如1/docker-compose.yml:
ports:
- "8080:80"
还有2/docker-compose.yml:
ports:
- "8081:80"
等等