bookbok / old-bookbok

「BookBok」web service
0 stars 0 forks source link

VagrantやめてDocker環境作る #617

Closed NAKKA-K closed 4 years ago

NAKKA-K commented 4 years ago

だっる!

NAKKA-K commented 4 years ago

次はdocker-php-ext-installを使ってPHP用の周辺パッケージを入れる。 参考: https://qiita.com/tomoyamachi/items/ff5ac4a96063a12409cd

ansibleでやっていた時のLaravel関連設定ファイル

NAKKA-K commented 4 years ago

何が必要なのか分からん! 前書いてたやつはスルーして一旦動かそうとしてみるのが良いかな。

NAKKA-K commented 4 years ago
NAKKA-K commented 4 years ago

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

NAKKA-K commented 4 years ago

ESETにvolumesの同期を妨害されてる可能性がある。 業務PC以外でやってみる。

NAKKA-K commented 4 years ago

sqliteのファイルもvendorも消える。 volumeにしているせいでdocker内のファイルが上書きされて消えているっぽい。 どうすれば良いんだっけ?

NAKKA-K commented 4 years ago

これだ https://castaneai.hatenablog.com/entry/2019/01/29/151257

NAKKA-K commented 4 years ago

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

その他