docker - установка композитора и разрешения в томах докера - mkdir завершается ошибкой - PullRequest
0 голосов
/ 21 марта 2019

У меня есть 3 док-контейнера Apache, php и контейнер temp_php_build. Контейнер temp_php_build создан
docker-compose build temp_php_build.
Он выполняет composer install, и это должно создать папку на общем томе.
Этот общий том должен быть позже скопирован в Apache и контейнер PHP.
Все работает на Jenkins, а подключенный том принадлежит jenkins:jenkins.

enter image description here

Когда контейнер temp_php_build выполняет установку композитора, некоторые каталоги в подключенном томе не могут быть созданы, поскольку родительские папки не доступны для записи группе или миру.

enter image description here

Я попытался выдать uid: gid 1000: 1000 для общих папок, что временно работает, но, поскольку рабочая область очищается при каждой сборке Jenkins, разрешения переназначаются.

Как правильно решить эту проблему с разрешениями Docker?

1 Ответ

0 голосов
/ 22 марта 2019

Хорошо, я исправил это, позволив jenkins пропустить chown и запустив контейнер php-build и запустив установку composer из запущенного контейнера.

sudo chown -R 1000:1000 /srv/www/htdocs/webapp
sudo chmod -R 775 /srv/www/htdocs/webapp
cd /srv/www/htdocs/webapp
docker-compose up -d --build php-build-container
docker exec php-build-container composer install

После этого я проверяю, что разрешения сброшены, чтобы сохранение Docker снова работало, и рабочая область могла быть удалена при следующей сборке jenkins

...