2018年06月

docker-phd-ja、進捗を色付き表示させたり、PHP 7系に移行したり

PHPマニュアル日本語版ビルド用Dockerイメージ、ブラウザだけでビルドできるようにしたのは既報の通りですが、進捗が色付きで表示されるようになりました。

phd-build-color

だんだんそれっぽくなってきましたね。E_WARNING が出ているのは、ビルドツール(PhD)のバグが原因のようです。しばらく待っても直らないようなら、くわしく調べてみます。

その他の変更点

PHP を 5.6.36 から 7.2.6 に移行しました。「PHP manual generate HOWTO (version 2018-06-16) - mumumu の日記」で、PHP 7系でも問題なくビルドできると知ったためです。

また、内部的な話ですが、nginx や supervisor などのインストール処理をベースイメージ側に移動しました。

4日前の記事で:

「ビルドの速度を追求するなら nginx のインストールなども別イメージのほうに移すべきなのですが、CI に特化したイメージを作るのは主客転倒な気がしています(もっと遅くなったら考えが変わるかもしれません)」

と書いたものの、だんだんビルドの遅さが気になるようになりました。イメージ分割の論理性にこだわる必要はないと判断し、あっさり移した次第です。

関連リンク

今週の学習進捗 (2018-06-11 〜 2018-06-17)

このブログの「今週の学習進捗」カテゴリでは、ぼくがいま何を勉強しているのか、そして、どこまで進んだのかを公開しています。


1. 高校数学標準講義

機械学習などを学ぶのに有用かと思い、高校数学を動画で復習しています。

先週までに完了したもの
数学I、数学A、数学Cの第1章、数学Bの第1章「14. Σ記号を使った計算」まで
今週の進捗
数学Bの第1章「15. Σ記号の基本 数学的に厳密な定義」まで終えました。
動画1本しか観られなかったのは、趣味のプログラミングを優先したためです。しばらくはこんな感じになりそうです。

2. 世界遺産検定1級試験の受験準備

7月8日の受験に向けて準備しています。

先週までに完了したもの
学習アシスト動画公式テキスト上巻「姫路城」まで
今週の進捗
公式テキスト上巻の「日本の遺産」を読み終えました。また、上巻「アジアの世界遺産」の「生物多様性」を読み終えました。
いろいろ飛ばして生物多様性から読み始めたのは、学習アシスト動画で「世界の遺産は興味のあるテーマから始めましょう」と言われていたためです。引き続き、アフリカ、オセアニア、ヨーロッパ、アメリカの生物多様性の項を読んでいきます。

3. 社会人のためのデータサイエンス入門

データサイエンスに興味があるので受講しました。4週間のコースです。

今週の進捗
「Week3:データの見方」を終えました。

docker-phd-ja、ブラウザでPHPマニュアルがビルドできるようになりました

開発中のPHPマニュアル日本語版ビルド用Dockerイメージで、Webアプリ経由でのビルドが可能になりました。

実際に動かした結果がこれです。

色指定部分が化けていますが、別途修正予定です。

ビルドだけでなく、ソースのチェックアウトと、PhDの設定ファイル更新もできるようにしました。

試してみる

試したい方は下記の手順でどうぞ。Docker がインストールされていれば、すぐ動かせます。

docker pull iwamot/phd-ja
docker create -it -p 8080:80 --name phd-ja iwamot/phd-ja
docker start phd-ja

その後 http://localhost:8080/phd-ja-admin/ の管理画面にアクセスすると、現状では下記のボタンが表示されます。

「Build documentation」ボタンを押すと、ビルドが始まります。冒頭の画像のようになれば成功です。

ビルドされたマニュアルは http://localhost:8080/phd-ja/ で参照できます。

Docker コンテナがいらなくなったら、下記の手順で削除できます。

docker stop phd-ja
docker rm phd-ja

管理画面のTODO

  • 各コマンドの実行完了をわかりやすくする(Notifications API を使う?)
  • 色指定が化けないようにする(指定色で表示させる)
  • ファイルの編集を可能にする(テキストエリアにペーストして保存できるだけでも便利)
  • デザインをきれいにする(いかにも管理画面っぽい感じに)

技術的なメモ

  • Webサーバ上のPHPから外部コマンドを実行するために sudo を使っている
    • 初回実行時のパスワード入力をイメージ側で済ませている
    • 実行可能なコマンドは /etc/sudoers.d/phd-ja で制限している
      • /etc/sudoers.d/ 配下にドットを含むファイルを置いても無視されることに注意
  • nginx の出力バッファリングを無効にするために「X-Accel-Buffering: no」ヘッダを出力している
  • タイムアウトを避けるため、nginx の設定で「fastcgi_read_timeout 300;」を指定している

詳細はコミットをご参照ください。

関連リンク

プロフィール
知識欲と謎解き欲が旺盛なWebエンジニア。AWS認定ソリューションアーキテクト - アソシエイト。JAPAN MENSA会員
記事検索