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

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

Overview

Você já enfrentou problemas ao tentar criar diretórios em um container Docker e se deparou com um frustrante erro de permissão negada? Não se preocupe! Neste post, vamos explorar uma solução simples, mas eficaz, para esse problema comum, garantindo que sua aplicação rode suavemente tanto localmente quanto em um container. Acompanhe a solução passo a passo para ajustar as permissões do usuário no Dockerfile. Prepare-se para dar adeus aos erros de permissão de uma vez por todas!

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!