ClockRoom

2023年 5月 | 運営ノート

やり直しができる世界

先日構築したDockerの環境でRSS処理だけ動いてなかったのでモジュールを追加 ────

$ cpanm XML::RSS

Expat must be installed prior to building XML::Parser and I can't find it in the standard library directories. Install 'expat-devel' (or 'libexpat1-dev') package with your OS package manager. See 'README'.

なんか怒られた(T^T)

助けてChatGPT先生!!!

$ apt-get update

$ apt-get libexpat1-dev

$ cpanm XML::RSS

よし! よくわからないけど動いた(汗) それじゃあDockerfileも直しておこうか。

FROM httpd:latest

ENV TZ Asia/Tokyo

RUN apt-get update \
    && apt-get install -y perl tar bzip2 gcc make curl libexpat1-dev \
    && curl -L https://cpanmin.us | perl - App::cpanminus \
    && rm -rf /var/lib/apt/lists/* \
    && mkdir /home/user-name

RUN cpanm CGI \
    && cpanm DBI \
    && cpanm DBD::SQLite \
    && cpanm HTML::Template \
    && cpanm XML::RSS

COPY ./lib/perl5/CR/ /usr/local/share/perl/5.32.1/CR/
COPY ./httpd.conf /usr/local/apache2/conf/httpd.conf

Dockerが便利すぎて楽しいのとライザ2で錬金沼なう

[画像] ES CON FIELD

夢の9連休の余韻に浸ってたら5月が終わりかけてた(ノД`)

AIに教えを乞いながらさくらのレンタルサーバ相当の環境をDockerで構築する入門編

早いもので9連休は今日を含めて残り2日。 休暇中の目標として「Dockerに触れる」というのを設定してたけど無事にクリア。 本当はちょっと触ってみる程度の目標だったけど思いのほか簡単だったので、例によってChatGPTに頼りながらこのサイトの環境を構築してみた覚え書き。

なにはともあれ『Docker Desktop for Mac』をインストール。 そしてDockerfileを作成。 この辺はほとんどChatGPTにお任せ(笑)

FROM httpd:latest

ENV TZ Asia/Tokyo

RUN apt-get update \
    && apt-get install -y perl tar bzip2 gcc make curl \
    && curl -L https://cpanmin.us | perl - App::cpanminus \
    && rm -rf /var/lib/apt/lists/* \
    && mkdir /home/user-name

RUN cpanm CGI \
    && cpanm DBI \
    && cpanm DBD::SQLite \
    && cpanm HTML::Template

COPY ./lib/perl5/CR/ /usr/local/share/perl/5.32.1/CR/
COPY ./httpd.conf /usr/local/apache2/conf/httpd.conf
  1. Apacheのイメージをベースに
  2. タイムゾーンを変更して
  3. Perlと愉快な仲間たちをインストールしつつホームディレクトリを作成して
  4. 足りないPerlモジュールを追加して
  5. 独自のPerlモジュールも追加して
  6. Apacheの設定を差し替える

Apacheの設定ことhttpd.confを作成。 イチから作成すると色々と厄介なので初期のhttpd.confを持ってきて修正する。 どこから持ってくるかだけど、今回はいったん後続の作業を雑に済ませてイメージ内から抜き取った。 それを修正して再度後続の作業を行なう。 手順を文章にすると面倒そうだけどGUIを使えば数分の作業。

(前略)
(mod_include、mod_cgi、mod_cgid、mod_rewriteのコメントアウトを外す)
(ServerNameを設定する)
(DocumentRootをコメントアウトする)
(ここから追加)

DocumentRoot "/home/user-name/www"

Options +Includes +ExecCGI
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
AddHandler cgi-script .cgi

<Directory "/home/user-name/www">
  DirectoryIndex index.html index.shtml
  AllowOverride All
  Require all granted
</Directory>

この辺も基本的にChatGPTにお任せで。 そしたらDockerfileをビルドしてイメージを作成。

$ docker build -t clockroom .

イメージを作成したらコンテナを作成。 コマンドでやってもいいけど今回はGUIで。

[画像] コンテナ作成

ポートは細かいこと考えずに80番。 このサイトのファイルを管理してるフォルダをコンテナ内のホームディレクトリにマウント。 消えたりしないかちょっと怖いけどTime Machineで戻せるからOK(^^; Runボタンを押せば ────

[画像] コンテナ上のウェブサーバーにスマホでアクセス

動きました\(^o^)/

絵面は地味だけど「Dockerで構築したコンテナ上のウェブサーバーにスマホでアクセス」という結構ややこしいことがいとも容易く出来てしまったの図。 PWAアプリを作ったときに特に感じたけど、サーバーにアップしないとスマホで確認できないのが結構しんどかった。 ようやく今さらそれが解決。 Docker自体は別に新しいモノでもなんでもないのに、なんで今まで使ってなかったんだろう(苦笑)