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

Docker Compose启动报错:数据库卷缺挂载目标及Nginx挂载失效求助

问题修复方案

启动报错 service volume services.database.volumes.[0] is missing a mount target

错误原因及修复步骤:

  • 无效版本号:version: '2.27.0' 是不存在的Docker Compose版本,2.x系列最高为2.20.3,建议改用稳定的3.x版本,比如version: '3.8'。
  • Volumes格式错误:database服务的挂载条目- db: /var/lib/mysql中,冒号后多余的空格会导致解析失败,需改为- db:/var/lib/mysql。
  • Ports格式错误:backend服务的端口映射-3000:3000缺少空格,应修正为- 3000:3000。

Nginx本地目录挂载不生效

错误原因及修复步骤:

  • 挂载路径格式问题:原配置- /frontend: /usr/share/nginx/html存在两个问题:
    1. 冒号前后的空格会让Docker解析错误的路径,需删除空格,改为./frontend:/usr/share/nginx/html;
    2. /frontend指向宿主机根目录下的文件夹,若你要挂载当前目录下的frontend,必须用相对路径./frontend(先确认宿主机当前目录下确实存在frontend文件夹)。
  • 验证挂载结果:启动容器后,可执行docker exec -it nginx ls /usr/share/nginx/html查看容器内目录内容,确认文件是否成功挂载。

修复后的完整docker-compose.yaml

version: '3.8'
services:
  backend:
    container_name: nodejs
    build:
      context: ./backend
      dockerfile: Dockerfile
    ports:
      - 3000:3000
    restart: always

  database:
    container_name: mysql
    image: mysql:8.0.37
    command: mysqld --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=conbo2chan
      - MYSQL_DATABASE=TMDT
    ports:
      - '3306:3306'
    volumes: 
      - db:/var/lib/mysql

  nginx:
    container_name: nginx
    image: nginx:1.25.5-alpine
    restart: always
    ports:
      - 8080:80
    volumes:
      - ./frontend:/usr/share/nginx/html

volumes:
  db:
    driver: local

内容的提问来源于stack exchange,提问作者Thanh Vu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 01:50:12