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

Как заставить докер монтировать папку вне io.containerd.snapshotter.v1.overlayfs?

Пишу приложение для себя, оно должно создавать файл с настройками по умолчанию, пусть будет myapp.cfg. Эти настройки должны лежать по пути /var/lib/myapp/, что я указываю в compose.yaml:
services:
  myapp:
    image: java.myapp:arm64-1.0.2
    ports:
      - '47500:47500'
    volumes: #также испробовал более простой метод с комбинацией абсолютных или относительных путей, результат такой же
      - type: bind
        source: ./
        target: /var/lib/myapp
    pull_policy: never


при запуске командой docker compose -f /home/radxa/DockerImages/docker-compose.yaml up упорно создаётся файл где угодно, но не там где нужно. Папка myapp создана с chmod 777:
:~$ sudo find / -name "myapp.cfg"
/var/lib/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots/119/fs/myapp.cfg
/var/lib/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots/117/fs/myapp.cfg

Вопрос к знатокам как заставить докер смонтировать требуемую папку? Мне не нужна папка overlayfs потому что конфиг должен подтягиваться даже если контейнер был удалён и создан заново а как видно из цифр после snapshots при создании путь постоянно меняется и не может быть постоянным. Команда docker inspect показывает отсутствие раздела mount а гугл завален однотипными рекомендациями нейрослопа, которые у меня почему-то не работают

UPD в docker config непонятно откуда взялось поле bind, что с ним делать я не понимаю. Compose чистый, после установке через apt get я ничего в нём не менял
name: dockerimages
services:
  myapp:
    image: java.myapp:1.0.2
    networks:
      default: null
    ports:
      - mode: ingress
        target: 47500
        published: "47500"
        protocol: tcp
    pull_policy: never
    volumes:
      - type: bind
        source: /
        target: /home/radxa/data
        bind: {} # <- Вот это поле я не понимаю откуда берётся и что с ним делать
networks:
  default:
    name: dockerimages_default
  • Вопрос задан
  • 44 просмотра
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Учебный центр IBS
    ADM-019 Основы Docker
    1 неделя
    Далее
  • Слёрм
    Docker для админов и разработчиков
    4 недели
    Далее
  • Нетология
    Специалист по информационной безопасности + нейросети
    12 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 2
opium
@opium
Просто люблю качественно работать
docker inspect без секции Mounts значит бинд-маунт вообще не подцепился, тут даже не в приложении дело. Проверь docker compose config, может не тот compose-файл подхватывается. Ну и ещё: snapshots/119/fs/myapp.cfg в overlayfs это /myapp.cfg в корне контейнера, не /var/lib/myapp/myapp.cfg, так что приложение пишет конфиг не туда. Сначала разберись с маунтом, потом с путём.
Ответ написан
@say_TT_plz
services:
  myapp:
    image: java.myapp:arm64-1.0.2
    ports:
      - '47500:47500'
    volumes:
      - ./:/var/lib/myapp:rw
    pull_policy: never


ну или я не совсем понял вопроса
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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