Docker compose-无法为service postgres创建容器

Docker compose-无法为service postgres创建容器,docker,docker-compose,Docker,Docker Compose,我正在使用windows 10尝试将我的flask应用程序转换为docker flask应用程序,问题是它无法为postgres创建容器。它显示此错误: 已成功标记新闻网站:最新 正在创建新闻博士后1。。。错误 错误:for news\u postgres\u 1无法为服务postgres创建容器:无效的卷规范:“C:\Users\User\Desktop\DEV\news\pgdata:/var/lib/postgresql/data/:rw”:bind类型的装载配置无效:bind源路径不存在

我正在使用windows 10尝试将我的flask应用程序转换为docker flask应用程序,问题是它无法为postgres创建容器。它显示此错误:

已成功标记新闻网站:最新 正在创建新闻博士后1。。。错误 错误:for news\u postgres\u 1无法为服务postgres创建容器:无效的卷规范:“C:\Users\User\Desktop\DEV\news\pgdata:/var/lib/postgresql/data/:rw”:bind类型的装载配置无效:bind源路径不存在:C:\Users\User\Desktop\DEV\news\pgdata

这是我的docker-compose.yml文件:

version: '3.7'

services:

postgres:
    restart: always
    image: postgres:11.0
    expose:
    - "5432"
    volumes:
    - ./pgdata:/var/lib/postgresql/data/

web:
    restart: always
    build: ./news
    command: ["python", "manage.py", "runserver"]
    volumes:
    - ./news:/usr/src/news/app
    ports:
    - 5000:5000
    env_file:
    - ./news/.env
    depends_on:
    - postgres
    environment:
    - ENV=staging
    - POSTGRES_DB=newsdb
    - POSTGRES_USER=postgres
    - POSTGRES_HOST=postgres
    - POSTGRES_PASSWORD=123123
    - POSTGRES_PORT=5432

此错误表明,您没有正确的目录作为卷的源:pgdata,该卷应位于您的C:\Users\User\Desktop\DEV\news文件夹中。

如果我删除了该卷,它会工作吗?我的意思是,这会破坏应用程序吗?不会,但在删除容器后,数据库中存储的数据将丢失。保存被删除数据的最佳方法是什么?在windows上创建docker应用程序好吗?最好的方法是使用卷,就像你发布的docker compose文件中的卷一样。这不是最好的选择,但是如果你没有更好的选择,比如Linux机器,那么了解docker应该没问题;是的,它已经映射到这一行:“volumes:-./pgdata:/var/lib/postgresql/data/”。您只需要创建文件夹。