目次
- 概要
- そもそもDockerってなに?
- Dockerに関する用語
- Dockerを使ってPHPを実行する
- 最後に
概要
プログラミングに触れてからまだ1年も経過していないですが、
先日開催されたPHPConferenceJapan2022にて人生初登壇・初LT(スポンサー枠)をさせていただきました。
子鹿みたいに足が震えていましたが、貴重な経験をさせてもらいました🦌
また別記事でスライド投稿できればと思います。
さて今回はスキルアップのため不定期で30分でインプットしたことを投稿の
第二弾として、Dockerを使ってPHPを実行する方法についてやっていこうと思います!
(Dockerってなに?って状態から始めたのでインプット30分じゃ終わらなかったです)
ちなみに、Macでやります。(M1チップ)
第一弾はPhpStormの便利機能について投稿したのでよければ確認してみてください。
そもそもDockerってなに?
噛み砕くと、
パソコンの中に独立したパソコン(コンテナ)を作り環境を構築し、いつでもその環境を立ち上げて使える便利なもの
ということみたいです。
コンテナ自体をアプリケーションと同じ単位で管理するため、
面倒な処理が必要なくパソコン側からも人間側からも便利なツールのようです。
他にも、同じチームメンバーに「環境(Dockerイメージ)」を共有する機能とか
GitHubみたいに環境(Dockerイメージ)を共有しておける場所(Docker Hub)や
Composerみたいに複数のコンテナを一度に起動できるもの(Docker Composer)とか色々あるみたいです。
Dockerに関する用語
Dockerを調べていく上で、最低限理解しておいた方がいい用語を先にまとめておきます。
コンテナ🗃
Docker上で動作する仮想環境のこと。
簡単にいうと、
パソコンの中に仮想パソコン(コンテナ)を作って、同時に複数の仮想パソコン(コンテナ)の稼働をさせることができるものがDocker。
Dockerイメージ🗂
コンテナの情報が格納されているファイルのこと。
コンテナのもととなる情報で、コンテナの作成にはDockerイメージが必要になる。
Dockerfile📂
Dockerイメージを作成するためのファイルのこと。
Dockerのもととなる情報で、Dockerイメージの作成にはDockerfileが必要になる。
DockerHub
GitHubのDockerバージョンみたいなもので、Dockerイメージが公開されている場所です。
DockerCompose
PHPで使用するパッケージバージョン管理ツール「Composer」のDockerバージョンで、
DockerHubから複数のDockerイメージが取得できる。
Dockerを使ってPHPを実行する
ここからタイトルの内容に入っていきます。
まず手順としては、
1. Dockerをインストール
2. 最低限必要なディレクトリ・ファイルの作成
3. コンテナの起動
の順にやっていきます。
1. Dockerをインストール
インストール方法
公式サイトやHomebrewでもインストールできるみたいです。
今回は公式サイトからインストールします。
インストール後、起動すると画面上部にクジラマークが表示されると完了です。(ターミナルで$ docker -v
でバージョン確認でもOK)
2. 最低限必要なディレクトリ・ファイルの作成
階層は下記の通りです。
各ファイルの記述内容は下記の通りです。
//Dockerfileの記述内容
FROM php:8.0-apache
//index.phpの記述内容
<?php
phpinfo();
//docker-compose.ymlの記述内容
version: '3'
services:
php_service:
container_name: php_container
build:
context: './php/'
volumes:
- './php:/var/www/html'
ports:
- '80:80'
3. コンテナの起動
あとは起動コマンドを実行するのみです。
$ docker-compose up -d
コマンド実行後にログが表示されますが、最後にdone
と表示されれば成功です。
ブラウザでhttp://localhost/にアクセスしてみると、
index.phpの中身のphpinfo():PHPの設定が表示されました!
最後に
職場でDockerを使用していないため今までほとんど何も触ったことがなかったですが、
早くて簡単に環境構築できる噂を体験できて楽しかったです!
今回は最短でインプットし記事にまとめたため、Dockerの深いところの理解やymlファイルの書き方など
しっかり理解できていないところが多々あったので、違う機会に学習して投稿していこうと思います。