Инициализировать паспорт Laravel из докера

Я занимаюсь докеризацией нашей среды разработки. Приложение состоит, среди прочего, из приложения laravel, предоставляющего REST API. Аутентификация осуществляется через паспорт laravel.

Поскольку это предназначено только для разработчиков, я устанавливаю зависимости композитора, устанавливаю ключ шифрования приложения, мигрирую базы данных и устанавливаю ключи паспорта во время выполнения. Инициализируется все правильно, кроме ключей от паспорта. Как бы я ни пытался подойти к проблеме, я получаю следующую ошибку:

fpm_1 | In CryptKey.php line 45:

fpm_1 |

fpm_1 | Key path "file:///var/www/html/storage/oauth-public.key" does not exist or

fpm_1 | is not readable

Это соответствующая часть моего файла docker-compose.

version: '3'
  services:
  fpm:
      build: ./api/docker/fpm
      restart: unless-stopped
      volumes:
        - ./api:/var/www/html
        - /etc/passwd:/etc/passwd
      user: "${UID}:${GID}"

Мой файл докеров fpm (./api/docker/fpm/Dockerfile)

FROM php:7.2.6-fpm
COPY ./init-app.sh /usr/local/bin/
COPY ./install-composer.sh /usr/local/bin/
RUN apt-get update && apt-get install -y --no-install-recommends libfreetype6-dev \
libjpeg62-turbo-dev \
libmcrypt-dev libpng-dev \
libzip-dev \
libzip4 \
git \
zip \
wget \
&& apt-get autoremove \
&& apt-get clean \
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
&& docker-php-ext-install gd \
&& docker-php-ext-configure zip --with-libzip=/usr/include/ \
&& docker-php-ext-install zip \
&& docker-php-ext-install pdo_mysql \
&& chmod +x /usr/local/bin/init-app.sh \
&& chmod +x /usr/local/bin/install-composer.sh \
&& /usr/local/bin/install-composer.sh \
&& rm /usr/local/bin/install-composer.sh \
&& wget https://raw.githubusercontent.com/vishnubob/wait-for-it/8ed92e8cab83cfed76ff012ed4a36cef74b28096/wait-for-it.sh \
&& chmod +x wait-for-it.sh \
&& mv wait-for-it.sh /usr/local/bin/
ENTRYPOINT [ "/usr/local/bin/init-app.sh" ]
CMD ["php-fpm"]

install-composer.sh устанавливает композитор в контейнер во время сборки.

init-app.sh:

#!/bin/sh
set -e
# Install composer dependencies
composer install

# Copy env file
cp .env.example .env

# Wait for DB to be up
/usr/local/bin/wait-for-it.sh db:3306 -t 0 --strict -- php artisan key:generate && php artisan migrate:refresh --seed
php artisan passport:install

# Run upstream entrypoint

# first arg is `-f` or `--some-option`
if [ "${1#-}" != "$1" ]; then
    set -- php-fpm "$@"
fi

exec "$@"

Мой пользователь правильно отображается внутри контейнера fpm, поскольку я экспортирую $ UID и $ GID в .zshrc. Комментируя строку паспорт: установка в моем init-app.sh, чтобы контейнер загружался правильно, я могу сгенерировать ключи, выполнив docker exec -it php artisan паспорт: установить нормально. Но позволить контейнеру справиться с этим не удается.

отсутствует && до php artisan passport:install и во многих местах :)

Hussein 21.06.2018 20:06

@Hussein паспорт ремесленника: команда установки находится на новой строке

Riad H 21.06.2018 20:19

ага, глупый я: D

Hussein 21.06.2018 20:25
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
0
3
2 055
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Оказывается, один из моих сидеров базы данных каким-то образом требовал наличия ключа. пока исследую, решил проблему, поменяв местами инструкции (установка ключей посева и паспорта)

Другие вопросы по теме