Closed NAKKA-K closed 4 years ago
次はdocker-php-ext-install
を使ってPHP用の周辺パッケージを入れる。
参考: https://qiita.com/tomoyamachi/items/ff5ac4a96063a12409cd
何が必要なのか分からん! 前書いてたやつはスルーして一旦動かそうとしてみるのが良いかな。
compose install -d /home/bookbok
の実行までいって以下が出力された。
> @php artisan package:discover --ansi
Discovered Package: beyondcode/laravel-dump-server
Discovered Package: fideloper/proxy
Discovered Package: laravel/nexmo-notification-channel
Discovered Package: laravel/passport
Discovered Package: laravel/slack-notification-channel
Discovered Package: laravel/tinker
Discovered Package: nesbot/carbon
Discovered Package: nunomaduro/collision
Package manifest generated successfully.
> php artisan migrate --force
Illuminate\Database\QueryException : Database (/home/bookbok/database/database.sqlite) does not exist. (SQL: select * from sqlite_master where type = 'table' and name = migrations)
at /home/bookbok/vendor/laravel/framework/src/Illuminate/Database/Connection.php:664
660| // If an exception occurs when attempting to run a query, we'll format the error
661| // message to include the bindings with SQL, which will make this exception a
662| // lot more helpful to the developer instead of just the database's errors.
663| catch (Exception $e) {
> 664| throw new QueryException(
665| $query, $this->prepareBindings($bindings), $e
666| );
667| }
668|
Exception trace:
1 InvalidArgumentException::("Database (/home/bookbok/database/database.sqlite) does not exist.")
/home/bookbok/vendor/laravel/framework/src/Illuminate/Database/Connectors/SQLiteConnector.php:34
2 Illuminate\Database\Connectors\SQLiteConnector::connect(["sqlite", "/home/bookbok/database/database.sqlite", "", "sqlite"])
/home/bookbok/vendor/laravel/framework/src/Illuminate/Database/Connectors/ConnectionFactory.php:218
Please use the argument -v to see more details.
Script php artisan migrate --force handling the post-install-cmd event returned with error code 1
The command '/bin/sh -c /usr/local/bin/composer install -d /home/bookbok' returned a non-zero code: 1
make: *** [docker/build] Error 1
おそらくこれが実行された時かな。 先にDBの作成が必要かな? https://github.com/bookbok/bookbok/blob/e608599da6a3ae505cc58ffeb7d4f9c2278afa77/composer.json#L57
ESETにvolumesの同期を妨害されてる可能性がある。 業務PC以外でやってみる。
sqliteのファイルもvendorも消える。 volumeにしているせいでdocker内のファイルが上書きされて消えているっぽい。 どうすれば良いんだっけ?
Dockerを良い感じにしようと思ったらcomposerのpost-install-cmdが邪魔だったのでDockerfile内に移動させた。
これで解決したと思ったが他にもcomposer install後に実行されるコマンドがいくつかあって、それらは様々なファイルをコピーしておかないと動かない。今のDockerfileの書き方ではうまく動かないが、かと言ってcomposer install
前に COPY . .
を持ってくるとvendorやdatabase.sqliteが上書きされて消えてしまう。
何か考えないといけない。
WORKDIR /home/bookbok
COPY ./composer.json ./
COPY ./composer.lock ./
# install package & migration
RUN /usr/local/bin/composer install
COPY . .
# Generate sqlite3 non-interactively & Prepare to launch laravel
RUN sqlite3 ./database/database.sqlite "" && \
php artisan migrate --froce && \
chmod -R 777 storage && \
php artisan passport:install
だっる!