Wpis z mikrobloga

Cześć,

mam problem z właściwym ogarnięciem docker-compose. Mianowicie mam taki prosty docker-compose.yml:

version: '2'

services:
php:
build: ./docker/php
working_dir: /var/www
volumes:
- .:/var/www

i Dockerfile:

FROM php:7.1

RUN apt-get update
RUN apt-get install -y git nano wget cron
RUN docker-php-ext-install pdo pdo_mysql

Potrzebuję tylko odpalić testy jednostkowe, więc za wiele tego nie potrzebuję. Jednak problem jest z uprawnieniami. Odpalam najpierw composer install w ten sposób:

docker-compose run php php composer.phar install

Dostaję jednak: Could not open input file: composer.phar

Wynik komendy: docker-compose run php ls -la

Dostaję dla tego pliku: ls: cannot access 'composer.phar': Permission denied

Zwykle nie miałem żadnych problemów w korzystaniu z docker-compose, a teraz takie coś. Dodam, że próbowałem też z
opcją --user $(id -u). Może ktoś bardziej obeznany w dockerze potrafi mi podrzucić rozwiązanie tego problemu?

#webdev #docker #php
  • 8
@sarveniusz: Bardzo średnio się znam na dockerze, ale IMO powinieneś proces budowania aplikacji (czyli też instalowanie zależności) mieć w Dockerfile, a nie w docker-compose.yml. Chyba że w przypadku pehapa się jakoś inaczej przyjęło.
@kao3991: Mogę tak zrobić, ale wiele mi to nie da, bo i tak testy będę chciał wykonać odpalając phpunit, a znowu na tym wtedy mi się wywali, że nie widzi pliku, dlatego, że nie ma do niego uprawnień.
@sarveniusz: user_id powinien być ten sam dla hosta jak i kontenera

cat /etc/passwd
i
ls -l

z reguły właścicielem pliku jest user o id 1000, więc plik w kontenerze też powinien wykonywany przez kontenerowego usera 1000
@y0da hmm zdaję sobie z tego sprawę. Z tego co pamiętam to sprawdzalem wlasnie uid wlasciciela pliku z uid usera z kontenera i sie zgadzaly. W każdym razie sprawdzę dla pewności jeszcze raz, dzięki za sugestię.
@sarveniusz: gdzie masz ten composer.phar? na volumenie podmontowywanym z hosta? Wydaje się że katalog, w którym znajduje się ów plik, nie ma ustawionej flagi +x dla użytkownika lub grupy które odpalają skrypt (czy to ls czy php). chmod a+x .
I może ADD composer.phar /usr/local/bin/composer a potem docker-compose run php composer install? Dla mnie brzmi naturalniej...