プログラミング初心者にオススメ

【Docker】なるべく小さいPHPの実行環境を作成する

自分が今まで作成した成果物の見直しをしようかと思ってまず手始めにブックマーク管理ツールから手を付けたんですけどエラーが出まくっていてまともに動作していないことに気づいたんですね。

約4年くらい前にPHPで作った↓のツールです。
PHP覚えたてくらいの時にスクラッチで作ってみたものです。
ブックマーク管理ツール

ちなみにその時に書いた記事がこちらです。

XSERVERでホスティングしているので多分PHPのバージョンが上がったことで動作しなくなったのだと思います。

そこでエラーを修正しようとしたんですけど今のPCにPHPの実行環境がなくPHPを動かせない、、、

ちょうど数日前にLaravelの実行環境を作ろうと思ってDockerを触ってたのでそのノリでPHPが動作する環境も作っちゃえ!ってことでDockerで作成しました。

前に友人に借りた本をざっくり一周したのと何個かコンテナ作ったりしたレベルかつ
フロントエンドがメインで業務でもDockerを使っていないので全然知識がないです、、、

なので今回の手順を備忘録がてらここに書き記しておこうと思います!
ここ2年くらいブログも書いていなかったのでリハビリも兼ねて!

docker-compose.ymlを作る

こちらが今回作成したdocker-compose.ymlです。
めちゃくちゃシンプルです。

version: "3"

services:
  php:
    image: php:latest
    volumes:
      - ./src:/var/www/html
    ports:
      - "8080:8080"
    command: php -S 0.0.0.0:8080 -t /var/www/html

上から順番に説明していきます。

version

これはdocker-compose.ymlのバージョンです。
composeファイルと呼ばれバージョン毎の書き方があるみたいです。
今回は一番最新の使用の3を使用しました。

service

作成するコンテナを書きます。
ここではphpという名前のコンテナを作成しています。

image

php:latest つまりphpの最新バージョンのimageを取得してきます。
ローカルに該当のimageがあればローカルから、なければDockerHubから取得します。

volumes

マウントするディレクトリを指定します。
コンテナ上のディレクトリとローカルのディレクトリを同期させます。
ここではdocker-compose.ymlと同階層のsrcディレクトリにコンテナ上の/var/www/htmlディレクトリをマウントしています。

ports

ポートフォワーディングの指定をします。
ローカルの8080ポートをコンテナの8080ポートに同期させます。
これでローカルの8080ポートにアクセスするとコンテナの8080ポートにアクセスできるようになります。

command

コンテナが起動した時に実行するコマンドを指定します。
phpのビルトインサーバーを立ち上げています。

最後に

今回はDockerでPHPのなるべく小さい実行環境を作りました。
webサーバーを使わなくてもPHPだけで簡易的なwebサーバーを立ち上げて実行できるからすごい楽でした。

Dockerは普段全然使わないから覚えても少し経つとすぐに忘れてしまうんですよね、、、
今年は個人開発でバックエンドも実装していく予定なので積極的にDockerを使ってインフラの構築やバックエンドの構築を行っていきたいです。

今ならChatGPT先生もいるから自分の管轄外の分野にチャレンジするハードルもだいぶ下がりましたよね。

ブログももう少し書いていきたい、、、