Проверьте команду SHELL . По умолчанию оболочка на Linux - это ["/ bin / sh", "-c"]
RUN "source file" # translates to: RUN /bin/sh -c "source file"
Вы можете изменить оболочку по умолчанию, используя SHELL
, которая меняет оболочку, используемую для последующих команд RUN
в Dockerfile
SHELL ["/bin/bash", "-c"]
Теперь оболочка по умолчанию изменилась, и вам не нужно явно определять ее в каждой инструкции RUN
RUN "source file" # now translates to: RUN /bin/bash -c "source file"
. Дополнительная заметка: вы также можете добавить --login
который запускает оболочку входа. Это означает, что ~/.bachrc
, например, будет прочитан, и вам не нужно явно указывать его перед вашей командой
Закончилось решение этой проблемы рекурсивным методом:
public function getDomainPath($domainId)
{
$domain = Domain::findOrFail($domainId);
if (is_null($domain->parent_id)) {
return $domain->domain;
}
$path = $this->getDomainPath($domain->parent_id) . '/' . $domain->domain;
return $path;
}
Затем я вызываю метод в методе доступа и передаю идентификатор самого дочернего домена.