やり直しができる世界
先日構築した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
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
- Apacheのイメージをベースに
- タイムゾーンを変更して
- Perlと愉快な仲間たちをインストールしつつホームディレクトリを作成して
- 足りないPerlモジュールを追加して
- 独自のPerlモジュールも追加して
- 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自体は別に新しいモノでもなんでもないのに、なんで今まで使ってなかったんだろう(苦笑)