@ledsun blog

無味の味は佳境に入らざればすなわち知れず

Laravelの門をくぐろうとしてdocker runコマンドの--pullフラグにつまずく

https://laravel.com/docs/9.x/installation#getting-started-on-windows を参考にします。

Dockerはすでにいれてあります。 curl -s https://laravel.build/example-app | bashを実行します。

ledsun@MSI:~/hello_laravel►curl -s 'https://laravel.build/example-app' | bash
unknown flag: --pull
See 'docker run --help'.
bash: line 17: cd: example-app: No such file or directory
bash: line 19: ./vendor/bin/sail: No such file or directory
bash: line 20: ./vendor/bin/sail: No such file or directory

Get started with: cd example-app && ./vendor/bin/sail up

エラーがでます。 実行されるシェルスクリプトを見てみます。

docker info > /dev/null 2>&1

# Ensure that Docker is running...
if [ $? -ne 0 ]; then
    echo "Docker is not running."

    exit 1
fi

docker run --rm \
    --pull=always \
    -v "$(pwd)":/opt \
    -w /opt \
    laravelsail/php82-composer:latest \
    bash -c "laravel new example-app && cd example-app && php ./artisan sail:install --with=mysql,redis,meilisearch,mailhog,selenium "

cd example-app

./vendor/bin/sail pull mysql redis meilisearch mailhog selenium
./vendor/bin/sail build

CYAN='\033[0;36m'
LIGHT_CYAN='\033[1;36m'
BOLD='\033[1m'
NC='\033[0m'

echo ""

if sudo -n true 2>/dev/null; then
    sudo chown -R $USER: .
    echo -e "${BOLD}Get started with:${NC} cd example-app && ./vendor/bin/sail up"
else
    echo -e "${BOLD}Please provide your password so we can make some final adjustments to your application's permissions.${NC}"
    echo ""
    sudo chown -R $USER: .
    echo ""
    echo -e "${BOLD}Thank you! We hope you build something incredible. Dive in with:${NC} cd example-app && ./vendor/bin/sail up"
fi
docker run --rm \
    --pull=always \
    -v "$(pwd)":/opt \
    -w /opt \
    laravelsail/php82-composer:latest \
    bash -c "laravel new example-app && cd example-app && php ./artisan sail:install --with=mysql,redis,meilisearch,mailhog,selenium "

でエラーが出ているみたいです。 確かめてみましょう。

ledsun@MSI:~/hello_laravel►docker run --rm \
                                   --pull=always \
                                   -v "$(pwd)":/opt \
                                   -w /opt \
                                   laravelsail/php82-composer:latest
unknown flag: --pull
See 'docker run --help'.

やはりここです。 Dockerのバージョンがちがうのでしょうか?

ledsun@MSI:~/hello_laravel[125]►docker --version
Docker version 19.03.12, build 48a66213fe

docker run — Docker-docs-ja 20.10 ドキュメント には--pullフラグはありませんでした。 ということはDockerコマンドが古すぎるわけではなさそうです。 新しすぎるのでしょうか?

ググってもよくわからないです。 Installation - Laravel - The PHP Framework For Web Artisans をホストしているのは公式なのでしょう。 ということはそのソースコードGitHubにありそうです。 探してみましょう。

https://github.com/search?q=org%3Alaravel+build でさがしてみました。

The build website という表示が臭いです。

このリポジトリにはIssueはありません。 PullRequestを探してみます。

Always pull the latest install image by jessarcher · Pull Request #12 · laravel/sail-server · GitHub ですね。 まさにこのオプションを追加しています。 4ヶ月も前にマージされています。 問題があるならすでに他に気がついている人がいそうです。 となると、期待するdockerの環境に違いがありそうです。

PullRequestから参照されているhttps://docs.docker.com/engine/reference/commandline/run/#-set-the-pull-policy---pullを見てみます。

--pullフラグの説明があります。

え?あれ?さっき確認したマニュアルは、一体? ていうかどうやってpullポリシーを使えば良いですか?