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でなんとかしたかったけどしょうがないね。