2015-07-16 9 views
7

Bir grup symfony2 uygulaması için taşınabilir bir geliştirme ortamı oluşturmak için docker-compose kullanıyorum (yapmak istediğim hiçbir şey symfony'e özgü olmamasına rağmen). Yerel makinede kaynak dosyaların, docker'daki diğer tüm bağımlılıkları olan bir veri hacmi olarak ortaya çıkarılmasına karar verdim. Bu şekilde geliştiriciler yerel dosya sistemi üzerinde düzenleme yapabilir.Docker izin verilen bir ana makine kullanarak geliştirme ortamına izin veriyor

Her şey harika çalışıyor, ancak uygulamayı çalıştırdıktan sonra önbellek ve günlük dosyalarım ve/vendor dizinindeki besteci tarafından oluşturulan dosyalar artık root'a ait.

Ben bu sorun hakkında okumak ve burada bazı olası yaklaşım ettik:

Changing permissions of added file to a Docker volume

Ama oldukça oldukça böylece benim liman işçisi-compose.yml dosyasında yapmak zorunda ne değişiklik didiklemek olamaz benim senfoni kapsayıcım docker-compose up ile başladığında, oluşturulan herhangi bir dosya, kullanıcının ana makinede izinlerine sahip olur. Ben referans için dosyayı post ediyorum

, işçi olduğu php, vb yaşamak: çözümlerin

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" 

cevap

2

Bir komutları kapsayıcı içine execure etmektir. Geçmişte karşılaştığım aynı sorun için birden fazla geçici çözüm denedim. En kullanıcı dostu olan konteynerin içinde komutu çalıştırmayı buluyorum. Örnek: docker-compose run CONTAINER_NAME php bin/console cache:clear. Komutları kısa tutmak için make, ant veya herhangi bir modern aracı kullanabilirsiniz. Makefile ile

Örnek:

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 

Alternatif olarak, daha sonra ortam değişkenleri ve bir kullanıcı değişkenleri Docker kapta usermod komutunu çalıştırmak içeren bir .env dosya ortaya koyabilir.