Corrige permissao do banco no container: volume nomeado com dona appuser (resolve unable to open database file)
Pablo Murad pablo@pablomurad.com
Sat, 08 Aug 2026 15:40:32 -0300
3 files changed,
8 insertions(+),
3 deletions(-)
M
Dockerfile
→
Dockerfile
@@ -18,6 +18,9 @@ # Código + um feeds.json padrão (o deploy sobrescreve montando o seu por cima).
COPY *.py ./ COPY feeds.json ./feeds.json +# Pasta do banco pertencente ao appuser (o volume nomeado herda essa dona). +RUN mkdir -p /data && chown appuser:appuser /data + USER appuser EXPOSE 17631
M
README.md
→
README.md
@@ -24,10 +24,9 @@ Rodar com Docker:
cp .env.example .env (edite o .env e defina NEWS_MCP_TOKEN) - mkdir -p data docker compose up -d --build -A porta fica presa em 127.0.0.1:17631, atras de um proxy reverso (nginx) com HTTPS. O nginx deve repassar todas as rotas (proxy_pass para 127.0.0.1:17631), nao so /mcp, porque o OAuth usa /authorize, /token, /register e /.well-known. O banco fica em ./data/news.db e persiste. Editar o feeds.json vale na proxima coleta, sem rebuild. +A porta fica presa em 127.0.0.1:17631, atras de um proxy reverso (nginx) com HTTPS. O nginx deve repassar todas as rotas (proxy_pass para 127.0.0.1:17631), nao so /mcp, porque o OAuth usa /authorize, /token, /register e /.well-known. O banco fica num volume Docker (newsdata) e persiste; o container roda como usuario nao-root e o volume ja nasce com a dona certa. Editar o feeds.json vale na proxima coleta, sem rebuild. Configuracao pelo .env: NEWS_MCP_TOKEN, NEWS_MCP_PORT, POLL_INTERVAL_MIN, RETENTION_DAYS, NEWS_MCP_ISSUER_URL, NEWS_MCP_AUTH_PASSWORD.
M
docker-compose.yml
→
docker-compose.yml
@@ -14,7 +14,7 @@ ports:
# 127.0.0.1 → só o nginx (mesma máquina) alcança. NUNCA use 0.0.0.0 aqui. - "127.0.0.1:17631:17631" volumes: - - ./data:/data # banco persistente (news.db + WAL) + - newsdata:/data # banco persistente (news.db + WAL) - ./feeds.json:/app/feeds.json:ro # edite as fontes sem rebuild restart: unless-stopped # ── Endurecimento ──@@ -25,3 +25,6 @@ cap_drop:
- ALL security_opt: - no-new-privileges:true + +volumes: + newsdata: