problemas de permissão do symfony docker para arquivos em cache
Eu tenho uma configuração symfony para docker com docker-compose que está funcionando bem, exceto quando corrocache: limpar No console, o servidor da web não pode acessar os arquivos.
Posso contornar o problema de permissão descomentandoumask (0000); no console e web / app_dev.php, mas eu gostaria de executar o symfony conforme recomendado.
O que eu faço é girar os contêineresdocker-compose up
Então eu entro no contêiner. O contêiner contém o apache, php e o código através de um volume de dados.
docker exec -i -t apache_1 /bin/bash
Aparentemente, estou logado como root e quando corro
app/console cache:clear
todos os arquivos no cache pertencem à raiz do usuário. www-data como usuário do servidor web agora não pode mais acessar os arquivos.
Também posso contornar isso fazendo login como www-data e os arquivos gerados pelo cache: clear pertencem a www-data e o servidor da web pode acessá-los.
<,code>docker exec -u www-data -i -t apache_1 /bin/bash
Mas isso tem a desvantagem de não pousar na festança, mas em/ usr / sbin / nologin e não tem coisas como bash_history e assim por diante.
Pesquisando, achei isso como parte do Dockerfile para resolver o problema de permissão, mas não tem efeito para mim.
RUN usermod -u 1000 www-data
Se eu entendi correto, isso muda o usuário 1000 para www-data, mas como sou root quando faço login no contêiner, isso não funciona, presumo.
Então, por que eu souraiz quando eu entrar no contêiner e como é issousermod suponha trabalhar?
o docker-compose.yml:
proxy:
image: jwilder/nginx-proxy:latest
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
ports:
- "80:80"
elastic:
build: docker/elasticsearch
ports:
- "9200:9200"
volumes:
- data/elasticsearch:/usr/local/elasticsearch/data
apache:
build: docker/apachephp
environment:
- VIRTUAL_HOST=myapp.dev
volumes:
- ./code:/var/www/app
- ./dotfiles/.bash_history:/.bash_history
- ./logs:/var/www/app/app/logs
links:
- elastic
expose:
- "80"