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自体は別に新しいモノでもなんでもないのに、なんで今まで使ってなかったんだろう(苦笑)