alpine linuxでSymfony CLIを使う
題名の通りですがdocker、alpine linux、symfony(4.4.*)の環境にて、Symfony CLIでチェックしようとしたらうまくできなかったので、備忘録的な感じです。
1. Symfony CLIとは
念のため記載しますが、簡潔にまとめると、symfonyのインストール、動作に必要なPHP extensionのチェック、セキュリティのチェックetc...などができるcliツールです。
とはいえ、インストールではcomposerを使用しますので、インストールでは使わないですね。
2. はじめに
今回したかったことは下記の感じです。
https://symfony.com/doc/4.4/setup.html#technical-requirements
インストール方法については以下リンクから。
https://symfony.com/download
コマンドは下記のものを使用します。
wget https://get.symfony.com/cli/installer -O - | bash
今回はalpine linuxですので、bashなんてもちろん入ってません。 従って既存のashで動かせないかな〜と試してみました。
3. 調査
3.1 コマンドの変更
単純にコマンド末尾の「bash」を「sh」で動かしてみる。
/var/www/ # wget https://get.symfony.com/cli/installer -O - | sh Connecting to get.symfony.com (13.32.52.125:443) - 100% |****************************************************| 5537 0:00:00 ETA sh: builtin: not found
「builtin: not found」とエラーが出ましたので、インストーラのシェルスクリプトを確認してみる。
3.2 ソースコードの確認
下記の1行目がashに対応してなかったので、エラーとは関係ありませんでしたが一応修正。
#!/usr/bin/env bash
↓
#! /bin/sh
エラーの箇所を調べてみると下記の「builtin ...」部分でした。
CLI_NAME="Symfony CLI" function output { . . . . builtin echo -e "${style_start}${1}${style_end}" //「Symfony CLI installer」と表示されるはず。 } output "${CLI_NAME} installer" "heading"
しかし、そもそも表示される文字列が違うし、「not found」なんてどこにもない。
3.3 builtinについて調査
whichコマンドで調べてみましたが、「builtin」が入っていませんでした。 だったらインストールすればいいじゃないかと考えましたが、apkにもありませんでした。
4. 対策
「builtin」を入れる手立てもなさそうなので、不本意ではありますが、軽量が売りのalpine linuxに「bash」を入れることにしました。
5. 手順
dockerの場合は「dokcer exec」なり「docker-compose exec」でログイン(root)した前提で話を進めます。
5.1 bashのインストール
/var/www # apk add --no-cache bash fetch http://dl-cdn.alpinelinux.org/alpine/v3.10/main/x86_64/APKINDEX.tar.gz fetch http://dl-cdn.alpinelinux.org/alpine/v3.10/community/x86_64/APKINDEX.tar.gz (1/2) Installing readline (8.0.0-r0) (2/2) Installing bash (5.0.0-r0) Executing bash-5.0.0-r0.post-install Executing busybox-1.30.1-r2.trigger OK: 53 MiB in 45 packages
5.2 Symfony CLIのインストール
ダウンロード方法については以下リンクから。
https://symfony.com/download
/var/www # wget https://get.symfony.com/cli/installer -O - | bash Connecting to get.symfony.com (13.32.52.86:443) - 100% |****************************************************| 5537 0:00:00 ETA Symfony CLI installer Environment check [*] cURL is installed [*] Gzip is installed [ ] Warning: Git will be needed. [*] You architecture (amd64) is supported Download Finding the latest version (platform: "linux_amd64")... Downloading version 4.15.0 (https://github.com/symfony/cli/releases/download/v4.15.0/symfony_linux_amd64.gz)... % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 635 100 635 0 0 1591 0 --:--:-- --:--:-- --:--:-- 1587 100 7297k 100 7297k 0 0 1665k 0 0:00:04 0:00:04 --:--:-- 2377k Uncompress binary... Making the binary executable... Installing the binary into your home directory... The binary was saved to: /root/.symfony/bin/symfony The Symfony CLI v4.15.0 was installed successfully! Use it as a local file: /root/.symfony/bin/symfony Or add the following line to your shell configuration file: export PATH="$HOME/.symfony/bin:$PATH" Or install it globally on your system: mv /root/.symfony/bin/symfony /usr/local/bin/symfony Then start a new shell and run 'symfony'
5.3 パスを通す
mv /root/.symfony/bin/symfony /usr/local/bin/symfony
5.4 確認
/var/www/practice_rental_motorcycle # symfony check:requirements Symfony Requirements Checker ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > PHP is using the following php.ini file: /usr/local/etc/php/php.ini > Checking Symfony requirements: .....................WW......... [OK] Your system is ready to run Symfony projects Optional recommendations to improve your setup ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * intl extension should be available > Install and enable the intl extension (used for validators). * a PHP accelerator should be installed > Install and/or enable a PHP accelerator (highly recommended).
6. 感想
動くけど足りないよ〜と注意されていますね・・・(笑)
alpineだからashでなんとかしたかったけどしょうがないね。