O problema: a aplicação cria um diretório no sistema e tudo funciona localmente, mas quando a aplicação roda em um container, acontece um erro de permissão negada no momento em que o app tenta criar um diretório.
Neste caso, o problema mais comum costuma a ser que falta de permissão do usuário que está executando a aplicação no container. Abaixo segue o exemplo de um Dockerfile que causaria este problema:
COPY ./app /app WORKDIR /app RUN useradd -r -u 1001 -g www-data appuser USER appuser
No Dockerfile acima:
- copiei os arquivos da aplicação para o diretório /app;
- defini o diretório de trabalho para /app;
- criei o usuário da aplicação (chamado appuser);
- mudei o usuário atual para appuser;
Quando isso acontece, resolver o problema é bem simples:
COPY ./app /app WORKDIR /app RUN useradd -r -u 1001 -g www-data appuser RUN chown -R appuser /app USER appuser
A diferença entre este Dockerfile e o anterior é que, antes de trocar de usuário, configurei o usuário appuser como dono do diretório /app e tudo que estiver dentro dele.
Com esta alteração, o usuário da aplicação agora pode criar subdiretórios dentro da pasta /app.
Se isso não resolver, pode ser que o seu problema tenha uma origem diferente, mas este costuma a ser um problema bem comum.
Espero ter ajudado!
Latest posts by Breno RdV (see all)
- Estamos de mudança! - abril 28, 2024
- O que é Metaclass e como ela funciona. (#python #dev #metaclass) - janeiro 11, 2023
- Entenda a mágica dos Generators. (#python, #dev, #generator, #iterator) - dezembro 28, 2022