[resolvido] Erro ao criar diretório em um container #Docker. (#ubuntu, #linux)

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:

  1. copiei os arquivos da aplicação para o diretório /app;
  2. defini o diretório de trabalho para /app;
  3. criei o usuário da aplicação (chamado appuser);
  4. 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!

The following two tabs change content below.
Arquiteto de Software e Desenvolvedor Backend (quase Fullstack), geralmente trabalho com C#, PowerShell, Python, Golang, bash e Unity (esse é mais por hobby). Estou sempre buscando algo novo para aprender, adicionando novas ferramentas ao meu cinto de utilidades.
Posted in Dev, Docker and tagged , , , , .