Erro ao tentar subir o Wallos no Docker Compose

Salve pessoal, seguindo as dicas do vídeo do Dio a respeito do Wallos resolvi testar o mesmo, porem ao tentar abrir a URL, me deparei com o seguinte erro:

Antes de mais nada!!

Informações relevantes:

  • Estou tentando subir o Wallos através do Docker Compose
  • Estou utilizando Fedora 41
  • O Docker se encontra na versão 27.3.1
  • O Arquivo docker-compose.yml está assim:
services:
  wallos:
    container_name: wallos
    image: bellamy/wallos:latest
    ports:
      - "8282:80/tcp"
    environment:
      TZ: 'America/Sao_Paulo'
    # Volumes store your data between container upgrades
    volumes:
      - './db:/var/www/html/db'
      - './logos:/var/www/html/images/uploads/logos'
    restart: unless-stopped

Dito isso, segue um anexo do erro ao abrir a URL:

Meio confuso com o que isso poderia significar, resolvi verificar os logs que foram gerados ao subir o contêiner e me deparei com a seguinte situação:

Também vou deixar eles em texto para facilitar a análise:

vinicius at VINI-10210U
~/.local/share/wallos > docker compose up   
[+] Running 1/0
 ✔ Container wallos  Running                                                                                                                                                                                                            0.0s 
Attaching to wallos
wallos  | [29-Jan-2025 20:09:23] NOTICE: fpm is running, pid 10
wallos  | [29-Jan-2025 20:09:23] NOTICE: ready to handle connections
wallos  | Database does not exist. Creating it...
wallos  | 
wallos  | Fatal error: Uncaught Exception: Unable to open database: unable to open database file in /var/www/html/endpoints/cronjobs/createdatabase.php:7
wallos  | Stack trace:
wallos  | #0 /var/www/html/endpoints/cronjobs/createdatabase.php(7): SQLite3->__construct('/var/www/html/e...', 6)
wallos  | #1 {main}
wallos  |   thrown in /var/www/html/endpoints/cronjobs/createdatabase.php on line 7
wallos  | 
wallos  | Fatal error: Uncaught ErrorException: require_once(../../includes/connect_endpoint.php): Failed to open stream: No such file or directory in /var/www/html/endpoints/db/migrate.php:13
wallos  | Stack trace:
wallos  | #0 /var/www/html/endpoints/db/migrate.php(13): errorHandler(2, 'require_once(.....', '/var/www/html/e...', 13)
wallos  | #1 /var/www/html/endpoints/db/migrate.php(13): require_once()
wallos  | #2 {main}
wallos  |   thrown in /var/www/html/endpoints/db/migrate.php on line 13
wallos  | chmod: /var/www/html/db/: Permission denied
wallos  | chmod: /var/www/html/db/: Permission denied
wallos  | chown: /var/www/html/db/: Permission denied
wallos  | mkdir: can't create directory '/var/www/html/images/uploads/logos/avatars': Permission denied
wallos  | chmod: /var/www/html/images/uploads/logos: Permission denied
wallos  | chmod: /var/www/html/images/uploads/logos: Permission denied
wallos  | chown: /var/www/html/images/uploads/logos: Permission denied
wallos  | 
wallos  | Fatal error: Uncaught Exception: Unable to open database: unable to open database file in /var/www/html/includes/connect_endpoint_crontabs.php:4
wallos  | Stack trace:
wallos  | #0 /var/www/html/includes/connect_endpoint_crontabs.php(4): SQLite3->__construct('/var/www/html/i...')
wallos  | #1 /var/www/html/endpoints/cronjobs/updatenextpayment.php(4): require_once('/var/www/html/i...')
wallos  | #2 {main}
wallos  |   thrown in /var/www/html/includes/connect_endpoint_crontabs.php on line 4
wallos  | 
wallos  | Fatal error: Uncaught Exception: Unable to open database: unable to open database file in /var/www/html/includes/connect_endpoint_crontabs.php:4
wallos  | Stack trace:
wallos  | #0 /var/www/html/includes/connect_endpoint_crontabs.php(4): SQLite3->__construct('/var/www/html/i...')
wallos  | #1 /var/www/html/endpoints/cronjobs/updateexchange.php(3): require_once('/var/www/html/i...')
wallos  | #2 {main}
wallos  |   thrown in /var/www/html/includes/connect_endpoint_crontabs.php on line 4
wallos  | 
wallos  | Fatal error: Uncaught Exception: Unable to open database: unable to open database file in /var/www/html/includes/connect_endpoint_crontabs.php:4
wallos  | Stack trace:
wallos  | #0 /var/www/html/includes/connect_endpoint_crontabs.php(4): SQLite3->__construct('/var/www/html/i...')
wallos  | #1 /var/www/html/endpoints/cronjobs/checkforupdates.php(4): require_once('/var/www/html/i...')
wallos  | #2 {main}
wallos  |   thrown in /var/www/html/includes/connect_endpoint_crontabs.php on line 4
wallos  | 127.0.0.1 -  29/Jan/2025:20:09:40 -0300 "GET /index.php" 200

Alguem poderia me orientar a como solucionar esse problema?

Cara, realmente parece problema de permissão.

Eu não sei em qual diretório vc tá rodando seu docker compose (se é dentro da sua home, por exemplo), mas precisa ajustar as permissões de pasta onde vc criou os volumes do Docker:

Nesse trecho, vc declarou o diretório “./db” e “./logos” (que são declarações de diretórios com caminho relativos)

Oq vc precisa descobrir é com qual UID o container do Wallos roda. Seu UID muito provavelmente é 1000, mas precisa ver qual é o UID que é usado no container. Pra saber qual é o UID, basta rodar o comando “id”.

Isso serve pra vc descobrir a causa do problema de permissão.

Mas para corrigir, basta rodar:

chmod 777 ./db
chmod 777 ./logos

Acredito que isso resolve o problema.

1 curtida

Acabei de testar, e infelizmente não funcionou! o mesmo erro permanece

Depois de muito pesquisar, posso finalmente dizer que encontrei uma solução, descobri que o erro acontece por conta das politicas do SELinux, mas que o próprio docker tem uma forma de gerenciar essa limitação, sem que eu tenha que alterar as configurações do SELinux, basta acrescentar a letra z ou Z ao final da montagem do volume:

  • Z → Aplica um rótulo único para que apenas esse contêiner possa acessar o volume.
  • z → Permite que múltiplos contêineres compartilhem o volume.

Caso seja necessário usar um volume me mais de um contêiner usa o :z caso contrário :Z.

Exemplo:

services:
  wallos:
    container_name: wallos
    image: bellamy/wallos:latest
    ports:
      - "8282:80/tcp"
    environment:
      TZ: 'America/Sao_Paulo'
    # Volumes store your data between container upgrades
    volumes:
      - './db:/var/www/html/db:Z'
      - './logos:/var/www/html/images/uploads/logos:Z'
    restart: unless-stopped

Feito isso todos os problemas sumiram e eu consegui utilizar o contêiner normalmente

1 curtida

Este tópico foi fechado automaticamente 3 dias depois da última resposta. Novas respostas não são mais permitidas.