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存在两个问题:- 冒号前后的空格会让Docker解析错误的路径,需删除空格,改为
./frontend:/usr/share/nginx/html; /frontend指向宿主机根目录下的文件夹,若你要挂载当前目录下的frontend,必须用相对路径./frontend(先确认宿主机当前目录下确实存在frontend文件夹)。
- 冒号前后的空格会让Docker解析错误的路径,需删除空格,改为
- 验证挂载结果:启动容器后,可执行
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
相关产品推荐
相关产品推荐

