koudenpaのブログ

趣味のブログです。職業柄IT関連の記事が多いと思います。

PHP5時代のアプリケーションを docker-compose up した時のメモ

Laravel docker-compose up とかググるとそれっぽい構成が書かれた記事がヒットする。

だがそれでは太古の昔の、たとえばLaravel5のアプリケーションは動作しない。いつだって太古のアプリケーションを動作させたいという需要はあるものだ。最近も2020年のタイムスタンプでWindows10にVB6の開発環境を構築するには? のようなタイトルの記事を見かけて「VB6すげー」と思ったものだ。それに比べたらPHP5なんてまだまだ若造よ。

さて、今どきのPHP開発環境を作ろうぜ! 記事ではアプリケーションコンテナのベースイメージに php:7.x-fpm-xxx が使われていることが多い。

「じゃぁそのバージョンを5系にすれば動くでしょ」と試してもなんだか難しかった。どうにも依存関係のパッケージが見つからない(php-mcryptとか)。

動かしたいバージョンが現役だったころのバージョンのディストリビューションのイメージをベースに構築すると、とりあえずは太古のアプリケーションが動作するイメージができた。他のコンテナや docker-compose.yml の構成はそれっぽい構成を参考にすればよい。

自分の手元のDockerfileはこんな感じになった。

FROM centos:centos7
# CentOS7のyumリポジトリのPHPのバージョンは5.4。
# $ php --version
# PHP 5.4.16 (cli) (built: Apr  1 2020 04:07:17) 

# パッケージは精査していない。この辺使っていたよなー? を入れただけ。
# 一応 https://readouble.com/laravel/5.0/ja/installation.html のサーバー要件は意識した。
RUN yum install -y epel-release \
    && yum install -y php \
        php-cli \
        php-common \
        php-devel \
        php-fpm \
        php-gd \
        php-mbstring \
        php-mcrypt \
        php-mysql \
        php-pdo \
        php-xml \
    && php -r "readfile('http://getcomposer.org/installer');" | php -- --install-dir=/usr/bin/ --filename=composer

# アプリケーションのコードをコピーして依存関係も入れておいた。
WORKDIR /var/www/html
COPY ./ ./
RUN composer install

# 既定の設定を上書きしたいならする。
COPY ./php.ini /etc/php.ini
# 既定の設定では localhost からのみ接続できるように構成されているので、他のコンテナから接続できるように設定する。
COPY ./www.conf /etc/php-fpm.d/www.conf

EXPOSE 9000
CMD ["php-fpm"]

www.conf はデフォルトからこの辺りを変えた。 (ローカルホスト以外もリスニング、ローカルホスト以外からも接続を許可する、ステータス表示を有効にする)

--- www.conf.org
+++ www.conf
@@ -11,3 +11,3 @@
 ; Note: This value is mandatory.
-listen = 127.0.0.1:9000
+listen = 9000
 
@@ -23,3 +23,3 @@
 ; Default Value: any
-listen.allowed_clients = 127.0.0.1
+;listen.allowed_clients = 127.0.0.1
 
@@ -120,3 +120,3 @@
 ; Default Value: not set 
-;pm.status_path = /status
+pm.status_path = /status

イメージのサイズ? 多分でかい! 500MBくらいあった。動かすのが目的なのででかくてもいい。こうして浪費するためにPCを新調するときににSSD1TBを選んだのだ。

単に動かしたいだけならPHPもNginxもMySQLも全部入りのコンテナ1つでよいのだろうけれど、今年の抱負に docker-compose する、があるので試せて丁度よかった。

koudenpa 2021 抱負

去年の今頃に抱負というか「2020にやろうかな」と思っている趣味・興味を書いておいてたまに振り返ると中々おもしろかったので、今年も一応書いておく。覚えていたらまた年末に振り返ると思う。

  • IT
    • GraphQLなんかやる
      • 去年はASP.NETでこれだってのがなくてやめてしまった
      • ASP.NETがビミョかったら他で
      • AWS IoT Things Graphが面白味はあるのだけれど、性質上使い始めるのがちょっと面倒くさい
    • docker-composeなり他のコンテナ管理ツールの構成を手作りする
      • 雰囲気で触っているけれど、自分が主体になって見たことがないので手に馴染ませておきたい
      • XAMPで弄っていたPHPのアプリでも動かしてみるかと思ったところ、docker-composeにたどり着く前にアプリが動くコンテナ作る難易度が高い状態(EOLしてる依存関係が多くて……)
      • かといって真っ白から作るだとスキャフォルドして終わりで何も面白くない
    • SSG
  • IoT
  • プラモ
    • 飯屋開拓は諦めた
    • この場は趣味面だけれど、仕事面で目標ちょっと真面目に考えてみようかなぁ

興味が1年で大きく変わるわけもなく、去年の延長線上で面白味が足らない。なんかいい要素ないかなぁ。

去年の記事。

koudenpa.hatenablog.com

とその1年後くらいの振り返りつぶやき。

試作ホイホイアイ

一撃殺虫!! ホイホイさんという大層面白いマンガがある。

そして、大層出来のいい1/1スケールホイホイさんプラモデルが発売されている。しかも近年NEW EDITIONとして復刻中で大層手に入れやすい。

www.kotobukiya.co.jp

ホイホイさんはハイテクが詰まった手のひらサイズのデフォルメドールで、自律駆動してご家庭の害虫退治をしてくれる。目の位置にあるカメラで周囲を認識し、銃火器や刀剣などの武器で退治する。

f:id:koudenpa:20210110220500p:plain
一撃殺虫!! ホイホイさん NEW EDITION (電撃コミックスEX) Kindle版 ロケーション54より

動作の様子はPS2向けゲームの動画を見るとイメージしやすいと思う。

前々から「そろそろ認識部分位はDIYできるのでは?」と思っていたところに Raspberry Pi Zeroとカメラモジュールが余った*1ので試してみた。

大体想像通りのものが試作できたので記録しておく。多分そのうち飽きて完成しないし……

  • 試作hoihoi-eye
  • 要素技術
    • ハードウェア
    • ソフトウェア
  • 複合ゴミ

*1:リアルダイスボットで使おうと思って買ったのだけれど使えなかった

続きを読む

masawada Advent Calendar 2020 予定地

この記事は masawada Advent Calendar 2020 - Adventar の21日目です。

id:masawada とは1on1を行う仲で、その中で「アドベントカレンダーまだ空いてる日があるので登録してくださいよ」という話題が出たので登録しました。

この際、アドベントカレンダーの記事は予約投稿して背水の陣をしいている、という話もしました。

1on1段階では特にネタを思いついていないです。

この記事がこの状態のまま公開されていたら、そういうことです。


前日の記事でIDコールされてマジビビってなんかでっちあげなくては!? と思ったのだけれど何もネタを思いつかなかったのでスロットをBlazorに移植しました。再現度は低いです。ご査収ください。

PR BlazorはMicrosoftが作っているクライアントサイドのWeb UIを.NETで書ける個人的に大好きなフレームワークです。万人にはお勧めしませんがおススメです。Blazor Advent Calendar 2020 - Qiitaもあるみたいです。この記事を登録しに行くほど僕の面の皮は厚くないようでした。/PR

7474.github.io

30分で移植して、30分でCDしたのでこれで勘弁してください。

github.com

Blazor WebAssembly アプリケーションをGitHub Pagesにデプロイする手法は公式ドキュメントに案内があって、完璧なサンプルリポジトリがあります。これが無かったら即死だった。

ASP.NET Core Blazor WebAssembly のホストと展開 | Microsoft Docs

github.com

以前自分がやった手法よりこちらの方が全然いいと思うので、BlazorをGitHub Pagesにデプロイするぞって人はご参照あれ。

多分ポイントはデプロイのワークフロー内でBASEパスを書き換えているところで、これによってローカルのVisual StudioのF5で起動して動く構成を維持しつつGitHub Pagesへデプロイできる点です。

昨日は

blog.sushi.money

でした。

明日はなんでしょうね?

プラモデルをライトアップするVer.M5Stack

この記事はM5Stack Advent Calendar 2020の21日目です。

M5Stackに触れてしばらくしてみて気に入ったところと作ったものについて書きます。

買った直後のことは M5Stack CoreInk を買った直後の感想と躓きポイント - koudenpaのブログ に書いています。

続きを読む

terraform import でS3バケットをインポートした時の備忘

Terraformにある既存のリソースのインポート機能を試してみたかった。ちょうど完全に手で(AWSコンソールで)管理しているS3バケット群に新しいバケットを追加したくなったので、ちょうどいいからTerraform Cloudともども試してみた。

この手のIaC管理に既存のリソースを持ってくる体験はいい体験をしたことがない(対応リソースが全然足らなかったり、不完全なインポートだったり)のだけれど、なぜかTerraformには期待していた。

案の定、すんなりはいかなくて(S3バケットインポートするだけなのに!)かなりイライラしながら作業していた。せっかくなのでどんなことにイライラしていたのか備忘しておこうと思う。

追記: 後から読み返すと『インポート後のplanで差分が出たらその項目の期待値を宣言しろ』『関連するプロバイダのドキュメントはちゃんと読め』という教訓を得ただけだった。この記事にはその教訓を得るまでの流れが書かれている。

  • 対象リソース
  • terraform import の実行
  • インポート状況
  • 感想
続きを読む

趣味のプログラムはブロックを組み立てるかのような楽しみ

この記事ははてなエンジニア Advent Calendar 2020の9日目です。

昨日は id:kouki_dan さんの iOSのネイティブアプリでWebRTCを使ったビデオチャットを実装する - Lento con forza でした。

『〜〜ははてな〜〜』って文章読みづらいですね。

さて、はてなエンジニア Advent CalendarはWeb系のITエンジニアが書いていることもあって、IT技術に関した記事が多い。

自分も『最近作ったボットでこんな要素技術を使った』のようなことをかっこいい構成図とともに示そう! と考えていたのだけれど、そのボットには飽きてしまったのでそんな飽きっぽい自分の趣味でのプログラムの楽しみ方について書きたいと思う。

去年も似たような方向で技術じゃ無い記事を書いてる(大規模IT技術系イベントの歩き方 - koudenpaのブログ)。何かしらのIT技術を掘り下げるのは苦手らしい。

続きを読む