2015-07-16 12 views
7

Używam funkcji docker-compose do konfigurowania przenośnego środowiska programistycznego dla kilku aplikacji symfony2 (chociaż nic nie chcę robić, jest specyficzne dla symfony). Postanowiłem udostępnić pliki źródłowe na komputerze lokalnym jako wolumin danych ze wszystkimi innymi zależnościami w oknie dokowanym. W ten sposób programiści mogą edytować w lokalnym systemie plików.Środowisko programistyczne przy użyciu środowiska Docker przy użyciu woluminu hosta wolumetrycznego

Wszystko działa świetnie, z tym że po uruchomieniu aplikacji moje pliki pamięci podręcznej i dziennika oraz pliki utworzone przez kompozytora w katalogu/vendor są teraz własnością root.

Czytałem o tym problemie i kilka możliwych podejść tutaj:

Changing permissions of added file to a Docker volume

Ale nie mogę całkiem całkiem wydobyć jakie zmiany muszę zrobić w moim pliku Döcker-compose.yml tak że kiedy mój kontener symfoniczny zaczyna się od dokowania-komponowania wszystkie utworzone pliki mają uprawnienia użytkownika na hoście.

mam zaksięgowania pliku dla odniesienia, gdzie pracownik jest php itd żyć:

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" 

Odpowiedz

2

Jednym z rozwiązań jest execure polecenia wewnątrz Twój pojemnik. Próbowałem kilku obejść tego samego problemu, z którym miałem do czynienia w przeszłości. Uważam, że wykonanie polecenia w kontenerze jest najbardziej przyjazne dla użytkownika.

Przykładowe polecenie: docker-compose run CONTAINER_NAME php bin/console cache:clear. Możesz użyć make, lub dowolnego nowoczesnego narzędzia, aby zachować krótkie polecenia.

Przykład z 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 

Alternatywnie, można wprowadzić plik .env który zawiera zmienne środowiskowe i to użytkownik jedną ze zmiennych, aby uruchomić polecenie usermod w pojemniku Docker.

Powiązane problemy