From 8b355e8edbca61bee9ecf613a1f5ae58e75dfdb4 Mon Sep 17 00:00:00 2001 From: Luiz Gustavo Costa Date: Wed, 4 Nov 2026 12:19:49 -0300 Subject: [PATCH] chore(compose): dados em bind mount ./data em vez de volume nomeado MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - volumes: ./data:/data; removido o bloco top-level de volumes - user: override NOTAS_USER (default 65534:65534) — com Podman rootless, NOTAS_USER=0:0 mapeia para o usuário do host e escreve em ./data sem chown - .gitignore já cobria /data/; README documenta backup e permissões - Verificado: notas criadas via API aparecem em ./data (dono lgcosta) e sobrevivem a podman-compose down --- .env.example | 2 ++ README.md | 12 ++++++++++-- docker-compose.yml | 10 ++++++---- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/.env.example b/.env.example index 307ff52..b9de378 100644 --- a/.env.example +++ b/.env.example @@ -3,3 +3,5 @@ NOTES_TOKEN=troque-este-token # Porta do host (opcional): # NOTAS_PORT=9090 +# Podman rootless: use 0:0 (mapeia para o seu usuário no host, escreve em ./data sem chown): +# NOTAS_USER=0:0 diff --git a/README.md b/README.md index 0755a16..210df31 100644 --- a/README.md +++ b/README.md @@ -120,8 +120,16 @@ docker compose up -d Se a porta 8080 estiver ocupada: `NOTAS_PORT=9090 docker compose up -d`. Com **Podman**: tudo acima funciona igualmente com `podman-compose`. -Os dados ficam no volume nomeado `notas-data` — `docker compose down` não os apaga -(não use `down -v` se quiser preservá-los). Faça backup copiando o volume. +Os dados ficam no diretório local **`./data`** (bind mount, ao lado do +`docker-compose.yml`) — já ignorado pelo `.gitignore`. Backup = copiar a pasta; +`docker compose down` não apaga nada. + +Permissões do `./data` (a imagem roda como uid 65534, non-root): + +- **Podman rootless**: adicione `NOTAS_USER=0:0` ao `.env` — dentro do container + isso é mapeado para o **seu** usuário no host, que é dono de `./data`. +- **Docker (root)**: `sudo chown -R 65534:65534 data` (ou rode o container com + `NOTAS_USER=$(id -u):$(id -g)` e ajuste a dona da pasta em conformidade). ## Como rodar sem Docker diff --git a/docker-compose.yml b/docker-compose.yml index eb995aa..61d6d84 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -11,10 +11,12 @@ services: NOTES_TOKEN: ${NOTES_TOKEN:?defina NOTES_TOKEN em .env ou no ambiente} NOTES_DATA_DIR: /data volumes: - - notas-data:/data + # Dados no diretório local ./data (backup = copiar a pasta) + - ./data:/data + # A imagem roda como 65534 (non-root). No Podman rootless defina + # NOTAS_USER=0:0 no .env — vira o SEU usuário no host e pode escrever em ./data. + # No Docker, garanta permissão: sudo chown -R 65534:65534 data + user: "${NOTAS_USER:-65534:65534}" restart: unless-stopped security_opt: - no-new-privileges:true - -volumes: - notas-data: