如何避免docker-compose.yml中多个volume被自动追加当前目录名前缀
解决方案
Docker Compose默认会将当前目录作为项目名,自动添加到所有命名资源(包括volume、网络等)的前缀,要固定volume的最终名称,只需要在顶层volumes字段中为每个volume显式指定name属性即可,支持多volume同时配置,无需额外操作。
注意:该配置需要使用3.4及以上版本的Compose文件格式,因此需要先修改版本号声明。
修改后的完整配置如下:
version: '3.4' services: db: container_name: db environment: POSTGRES_DB=new_db_name volumes: - pgdata:/var/lib/postgresql/data app: container_name: app depends_on: - db volumes: - appdata:/app/data volumes: pgdata: name: pgdata # 显式指定最终volume名称,不会追加项目前缀 appdata: name: appdata # 多个volume分别指定即可
验证方法:
- 配置修改完成后执行
docker-compose up -d启动服务 - 启动完成后执行
docker volume ls,即可看到生成的volume名称为指定的pgdata和appdata,无项目前缀 - 后续容器重建、重启都会自动复用这两个volume,数据不会丢失
内容的提问来源于stack exchange,提问作者Akash Khobare
相关产品推荐
相关产品推荐

