Corrige permissão do volume de clientes/ via entrypoint, não build

RUN chown no Dockerfile só atinge a imagem: o bind mount de clientes/
substitui o diretório (dono incluído) ao subir o container, apagando
qualquer chown feito em build. entrypoint.sh roda como root no início do
container, ajusta o dono do volume recém-montado e derruba privilégio
para o usuário sd (via gosu) antes do gunicorn.

.gitattributes fixa LF em *.sh: autocrlf do Git no Windows senão
reescreveria o script para CRLF, quebrando o shebang dentro do container.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-04 14:32:01 -03:00
co-authored by Claude Sonnet 5
parent 0d4fdd2533
commit 4ef1a7a4c8
4 changed files with 41 additions and 7 deletions
+5 -3
View File
@@ -5,10 +5,12 @@
# clientes/ está no .gitignore, então o clone nunca traz esses dados:
#
# scp -r clientes/ usuario@vps:/dados/exporta-sd/clientes
# ssh usuario@vps 'sudo chown -R 10001:10001 /dados/exporta-sd/clientes'
#
# O chown usa o UID do usuário `sd` da imagem. Sem ele, a leitura funciona e o
# "Salvar SD.md" falha com permissão negada — falha parcial, difícil de ler.
# Não precisa de chown manual: o entrypoint.sh da imagem roda como root no
# início do container e ajusta o dono do volume para o usuário `sd` antes de
# derrubar privilégio e subir o gunicorn — ver entrypoint.sh e o ENTRYPOINT
# no Dockerfile. (Uma reconsequência: cada `scp` novo devolve os arquivos ao
# usuário do ssh no host; some sozinho no próximo restart do container.)
# Depois, no Coolify → Environment Variables, aponte o volume para lá:
#
# CLIENTES_DIR=/dados/exporta-sd/clientes