2015-07-16 18 views
7

Uso la finestra mobile-compose per configurare un ambiente di sviluppo portatile per un gruppo di applicazioni symfony2 (anche se nulla di ciò che voglio fare è specifico per symfony). Ho deciso di esporre i file di origine sul computer locale come volume di dati con tutte le altre dipendenze nella finestra mobile. In questo modo gli sviluppatori possono modificare sul file system locale.Ambiente di sviluppo autorizzazioni docker utilizzando un volume montato host

Tutto funziona alla grande, tranne che dopo aver eseguito l'app i miei file di cache e di registro ei file creati dal compositore nella directory/vendor ora appartengono a root.

Ho letto su questo problema e alcuni possibili approcci qui:

Changing permissions of added file to a Docker volume

Ma io non riesco a prendere in giro fuori tutto ciò che cambia devo fare nel mio file finestra mobile-compose.yml così che quando il mio contenitore sinfonico inizia con la finestra mobile -comporre fino tutti i file che vengono creati dispongono delle autorizzazioni dell'utente sul computer host.

sto postando il file di riferimento, lavoratore è dove php, ecc vivono:

source: 
    image: symfony/worker-dev 
    volumes: 
    - $PWD:/var/www/app 
mongodb: 
    image: mongo:2.4 
    ports: 
    - "27017:27017" 
    volumes_from: 
    - source 
worker: 
    image: symfony/worker-dev 
    ports: 
    - "80:80" 
    - mongodb 
    volumes_from: 
    - source 
    volumes: 
    - "tmp/:/var/log/nginx" 

risposta

2

Una delle soluzioni è quella di execure i comandi all'interno vostro contenitore. Ho provato più soluzioni alternative per lo stesso problema che ho affrontato in passato. Trovo l'esecuzione del comando all'interno del contenitore il più user-friendly.

Comando di esempio: docker-compose run CONTAINER_NAME php bin/console cache:clear. È possibile utilizzare make, ant o qualsiasi strumento moderno per mantenere i comandi brevi.

Esempio con Makefile:

all: | build run test 

build: | docker-compose-build 
run: | composer-install clear-cache 

############## docker compose 

docker-compose-build: 
     docker-compose build 

############## composer 

composer-install: 
     docker-compose run app composer install 

composer-update: 
     docker-compose run app composer update 

############## cache 

clear-cache: 
     docker-compose run app php bin/console cache:clear 

docker-set-permissions: 
     docker-compose run app chown -R www-data:www-data var/logs 
     docker-compose run app chown -R www-data:www-data var/cache 

############## test 

test: 
     docker-compose run app php bin/phpunit 

In alternativa, si può introdurre un file che contiene un .env variabili di ambiente e allora l'utente una delle variabili per eseguire il comando usermod nel contenitore Docker.

Problemi correlati