You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

挂载./init初始化PostgreSQL SQL失败,docker-compose卷规格报错

解决docker-compose up返回invalid volume specification错误

问题场景

运行docker-compose up命令时触发错误:

Error response from daemon: invalid volume specification

当前使用的docker-compose.yaml配置:

version: '3.8'

services:

  nginx:
    build:
      context: ./nginx
    restart: always
    ports:
      - "80:80"
    depends_on:
      - user_service


  user_service:
    build:
      context: ./user_service
    restart: always
    container_name: user_service_container
    ports:
      - "8000:8000"
    depends_on:
      - user_db
    environment:
      DATABASE_URL: postgresql://postgres:1234@user_db:5432/User

  user_db:
    image: postgres:16.0
    container_name: user_db_container
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: 1234
      POSTGRES_DB: User
    restart: always
    ports:
      - "5432:5432"
    volumes:
      - ./init/user_service_init.sql:/docker-entrypoint-initdb.d/user_service_init.sql
      - user_db_data:/var/lib/postgresql/data

volumes:
    user_db_data:

项目根目录结构:

  • docker-compose.yaml
  • init/
    • user_service_init.sql
  • nginx/
  • user_service/

SQL初始化脚本内容:

CREATE TABLE IF NOT EXISTS users (
    id SERIAL PRIMARY KEY,
    username VARCHAR(100) NOT NULL,
    password_hashed VARCHAR
);

可能的原因及修复方案

1. 执行命令的目录错误

必须在**docker-compose.yaml所在的项目根目录**下运行docker-compose up,否则相对路径./init/user_service_init.sql会被解析到错误位置,导致Docker找不到本地文件。

  • 修复:切换到根目录后重新执行命令。

2. 本地文件路径不存在或拼写错误

检查init/user_service_init.sql是否存在,以及路径拼写是否正确:

  • 确认init文件夹和SQL文件在docker-compose.yaml同级目录下;
  • Linux/macOS系统注意区分大小写,确保文件名和文件夹名完全匹配。
  • 修复:如果文件缺失则创建对应文件,或修正路径拼写。

3. Windows系统下Docker磁盘共享未授权

Windows系统中,Docker需要获得磁盘访问权限才能挂载本地文件:

  1. 打开Docker Desktop设置;
  2. 进入资源 > 文件共享;
  3. 勾选docker-compose.yaml所在的磁盘(如C盘),点击应用;
  4. 重启Docker后重新执行命令。

4. Linux/macOS系统下权限不足

本地init文件夹或SQL文件可能没有足够的读取权限:

  • 执行命令赋予可读权限:
    chmod -R 755 ./init
    
  • 或调整文件所有者:
    sudo chown -R $USER:$USER ./init
    

5. YAML格式问题

检查volumes部分的缩进是否正确,确保每个卷项的缩进与ports等配置同级,无多余空格或制表符。当前配置格式看起来正常,但可重新检查确认。

验证

修改完成后,重新执行:

docker-compose up --build

内容的提问来源于stack exchange,提问作者Abir Ahmed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 12:55:25