Задать вопрос

Docker на windows не работает volumes?

Помогите с докером разобраться если кто в теме. В общем сам собирал конфиг для понимания. В итоге все вроде работает, но в postgres не сохраняет данные. Точнее вот что происходит.
  • docker-compose up --build -d
  • создаю модель с нее миграцию, и накатываю миграцию в бд (симфони) потом фейк данные в бд заливаю и все прекрасно вижу. Таблички есть, данные в них есть.
  • поработал, пишу docker-compose down отключил пк
  • Включил пк пишу docker-compose up --build -d контенеры поднимаются база пустая

Хотя в конфиге docker-compose я прописал такое
postgres:
    container_name: symfony-postgres
    image: postgres:12
    volumes:
      - ./docker/postgres:/var/lib/postgres
    restart: always
    environment:
        POSTGRES_DB: db
        POSTGRES_USER: user
        POSTGRES_PASSWORD: secret
    ports:
        - 15432:5432

и в самом низу
volumes:
  postgres:

но папка на хосте ./docker/postgres пустая
хотя в Mounts я посмотрел есть такая запись
"Mounts": [
            {
                "Type": "bind",
                "Source": "E:\\projects\\repo\\docker\\postgres",
                "Destination": "/var/lib/postgres",
                "Mode": "rw",
                "RW": true,
                "Propagation": "rprivate"
            },
            {
                "Type": "volume",
                "Name": "ded9c7006aa1cd122783b4fb0503fe97e6b6180ddc68885184e3e4e4c75d999f",
                "Source": "/var/lib/docker/volumes/ded9c7006aa1cd122783b4fb0503fe97e6b6180ddc68885184e3e4e4c75d999f/_data",
                "Destination": "/var/lib/postgresql/data",
                "Driver": "local",
                "Mode": "",
                "RW": true,
                "Propagation": ""
            }
        ],

вот "E:\\projects\\repo\\docker\\postgres"
указывает на папку которую я указал в volumes
volumes:
- ./docker/postgres:/var/lib/postgres

но ничего в ней нет...
может кто в курсе че там глянуть почему не работает? Ну и как вы догадались это все на windows.

P.S.
у меня до этого была запись
volumes:
- postgres:/var/lib/postgres
и maunts показывал что Source находиться по адресу "Source": "/var/lib/docker/volumes/repo_postgres/_data",
но у меня же винда)) откуда /var ?

смотрел в папке докера на винде там нет volumes
смотрел в Ubunte wsl там даже докера нет))

ну это так, к слову...
  • Вопрос задан
  • 870 просмотров
Подписаться 3 Простой 2 комментария
Решения вопроса 1
@KoreanGuy
так как ты явно указываешь директорию на хосте, это не volume, а bind mount. Когда используешь bind mount, конфиг-секция volumes (на топ уровне) не нужна. Можешь ее удалить. Тем более ты все равно пишешь ее не правильно. А файлов у тебя нет, потому что ты не ту директорию в контейнере указываешь. Нужно /var/lib/postgresql/data
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы