[PROMOÇÃO] Assine com + 30% de desconto ANUAL MENSAL (últimas horas)
Igor Cerqueira Andrade
Criador Igor Cerqueira Andrade 21/12/2021

No linux a pasta "./docker e seus aquivos(mysql)" é gerada com as permissões de acesso do usuário root.

O meu docker foi configurado para executar os comandos como não root (usuário pessoal), mas mesmo assim a pasta  "./docker" é criada com as permissões do root.

Tem como resolver esse problema do docker no linux ?

 

Obs: Eu uso Ubuntu 20.04

Manager Carlos Ferreira 21/12/2021

Olá, Igor!
Tudo bem?

Tem sim amigo.

Você tem algumas opções, nesse arg user no arquivo docker-compose você pode passar o usuário root, assim vai conseguir criar os arquivos com os privilégios necessários.

---

Você está rodando estes comandos com o usuário root?
Se sim, use outro usuário para fazer isso, usuário não root.

Carlos Ferreira
Criador Igor Cerqueira Andrade 21/12/2021

Estou usando os dados do meu usuário não-root (igor) no arquivo docker-compose.yml

Exemplo:

            args: 

                user: igor

                uid: 1001

Séria possível o docker criar a pasta "./docker" com as permissões do usuário igor ao invés do root ?

Obs: Em nenhum momento eu executei comandos do docker como root, mas a pasta "./docker" está com permissões do usuário root.

Igor Cerqueira Andrade
Manager Carlos Ferreira 21/12/2021

Está com erro de leitura nos arquivos do banco de dados?

O seu Docker, você consegue rodar ele sem sudo?
sudo docker-compose ...

Se for o caso, precisa trabalhar com o Docker sem ser sudo
(https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-20-04-pt -> tópico 2)

Carlos Ferreira
Criador Igor Cerqueira Andrade 21/12/2021

Eu já tinha feito esses passos na hora da instalação do docker. Eu nunca executei os comando do docker como root, Porém a pasta ".docker" está sendo criada com permissões de usuário root, e os arquivos do mysql está com a permissão "systemd Core Dumper".

Assim que eu tento executar o comando "docker-compose up -d" (Pela segunda vez)  um erro é apresentado dizendo que não conseguiu ler os arquivos da pasta ". docker" (onde está o mysql) devido estar com permissões de root.

Igor Cerqueira Andrade
Criador Igor Cerqueira Andrade 21/12/2021

Eu resolvi este problema de outra forma. Eu criei um volume para o Mysql no fim do aquivo docker-compose.yml e usei o volume criado no lugar do "./docker".

Desta forma o dados do mysql deixaram de ser salvos na pasta do projeto e agora estão na pasta do próprio docker.

Quem quiser verificar o volume basta executar: docker volume ls

Local onde o docker salva os aquivos do volume no linux : /var/lib/docker/volumes/

version: "3.7"
services:
# image project
api:
build:
args:
user: igor
uid: 1001
context: ./
dockerfile: Dockerfile
image: laravel-api-cache
restart: unless-stopped
working_dir: /var/www/
volumes:
- ./:/var/www
depends_on:
- redis
- queue
networks:
- laravel-api-network
 
# nginx
nginx:
image: nginx:alpine
restart: unless-stopped
ports:
- 80:80
volumes:
- ./:/var/www
- ./docker/nginx/:/etc/nginx/conf.d/
networks:
- laravel-api-network

# db mysql
mysql:
image: mysql:8.0.20
restart: unless-stopped
environment:
MYSQL_DATABASE: ${DB_DATABASE}
MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
MYSQL_PASSWORD: ${DB_PASSWORD}
MYSQL_USER: ${DB_USERNAME}
volumes:
- mysqldbvolume:/var/lib/mysql
ports:
- 3308:3306
networks:
- laravel-api-network

# queue
queue:
build:
args:
user: igor
uid: 1001
context: ./
dockerfile: Dockerfile
restart: unless-stopped
command: "php artisan queue:work"
volumes:
- ./:/var/www
depends_on:
- redis
networks:
- laravel-api-network

# redis
redis:
image: redis:latest
networks:
- laravel-api-network

networks:
laravel-api-network:
driver: bridge

# Volumes
volumes:
mysqldbvolume:
driver: local
Igor Cerqueira Andrade
Manager Carlos Ferreira 21/12/2021

Que bom que conseguiu resolver amigo, meus parabéns!

Carlos Ferreira
Sabe a Solução? Ajude a resolver!

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!