はじめに
今回業務で開発環境を作る際に共有できるノウハウが存在しないチームだったので、展開できる方法を検討し、Dockerが最適だと判断し個人で勉強しチームに展開まで行いました。
この通りやれば環境を再現してローカルで使える!というところまで、まとめたので時間がある限りブログに残そうかと思っています。
今回は第八回目です。
前回はphpMyAdmin表示確認を行いました。
これだけの環境を構築できるものを作成したと思うと、自分よくやった!ってなりますね。
しかもシェアしやすい!!
確認するものは多いですが、やることは楽なので、コマンドになれるついでに確認してみてください。
過去の手順は前回の記事を参考にしてみてください。
【Docker】#1 はじめに+Dockerとは+Docker Desktopインストール
【Docker】#2 ローカル(ホスト)に作業フォルダを作成
【Docker】#3 Dockerfile+docker-compose.yml+各設定ファイルの設置
【Docker】#4 Laravelをコマンドでインストール
【Docker】#5 dockerでコンテナ(機能)を起動+Laravel表示確認
【Docker】#6 LaravelのDB設定、確認
【Docker】#7 phpMyAdmin表示確認
作成する環境は以下の通りです。
- windows pc
- php 8.0.23
- composer 2.4.1
- nginx 1.22.0
- MySQL 8.0.30
- Laravel 6.20.44
- phpMyAdmin最新
参考にした教材は以下です。
こちらがなかったらここまで実現できなかったと思います。
ありがとうございます。
なお、私自身はインフラ専門家ではないので、インフラの各種機能の設定値は深堀していません。
本気で事業で使う場合はインフラの専門家の方にDockerファイルを作成+本番環境での運用を想定してもらい、それを作業者は起動、運用するだけ、という風にするのが理想だと思います。
用語
先によく出てくる用語だけ記載しておきます。
作業中にわからなくなったら見てください。
ホストOS | 作業側のパソコン。ローカルともいう |
---|---|
Dockerfile | イメージをビルドで作るためのDockerの設定ファイル |
イメージ | コンテナを作成するためにDockerfileからビルドで作成されたもの。 Dockerhubで配布されている公式のイメージもある。 |
ビルド | Dockerfileからイメージを作成する事 |
コンテナ | イメージから作成された各機能のこと。 サービスとも呼ばれる。 このコンテナの集まりで環境が構築される |
docker-compose | 複数のコンテナを一気に作成したりできる一元管理機能。 Dockerを使う場合実質必須になります。 |
docker-compose.yml | 複数のコンテナを一気に作成、起動したりできるdocker-composeの一元管理ファイル。 docker-composeをインストールしてdocker-compose.ymlを作成してdocker composeコマンドで実行して利用します。 |
現在の作業フォルダ
前回までに作成した以下のフォルダが作業ディレクトリになります。
参考までに記載しておきます。
nginx_mysql_laravel/ TOPフォルダ。名前はコンテナ起動前(環境構築前)なら自由に変更可能
├── laravel Laravelのソースコードが置かれるフォルダ=実作業フォルダ
├── docker dockerの設定ファイルや環境設定ファイルを置くフォルダ。
│ ここの配下のフォルダ名を変える場合、
│ Dockerfileとかdocker-compose.ymlでパスの修正が必要です
│ ├── php phpコンテナ(phpの環境構築設定ファイル)
│ │ ├── Dockerfile phpのDockerfile
│ │ └── php.ini php設定ファイル環境立ち上げるときにコンテナにコピーされます
│ ├── mysql MySQLコンテナ(MySQLの環境構築設定ファイル)
│ │ ├── Dockerfile MySQLのDockerfile
│ │ └── my.conf mysql 設定ファイル環境立ち上げるときにコンテナにコピーされます
│ └── nginx nginxコンテナ(nginxの環境構築設定ファイル)
│ │ ├── Dockerfile nginxのDockerfile
│ │ └── default.conf nginx設定ファイル環境立ち上げるときにコンテナにコピーされます
│ └── phpmyadmin phpMyAdminのデータが永続化される場所
└── docker-compose.yml 全コンテナの一括管理をするDockerの設定ファイル
1.コンテナを起動し環境を立ち上げる
各コマンドを実行してバージョンなどを確認していきます。
作業前に、Docker Desktopアプリを起動し、「docker-compose up -d」でコンテナを起動し環境を立ち上げておいてください。
2.phpのバージョン確認
今回はPHP 8.0.23になっていると思います。
以下を実行し、インストールしたバージョンが返ってきたらOKです。
docker-compose exec php php -v
docker-compose exec php php -vについて
docker-compose execはDockerの仮想環境に対してコマンドを実行するコマンドです。
「docker-compose exec サービス名 実行したいコマンド」
という風に記載して使います。
サービス名は docker-compese.yml に記載されているサービス名です。
3.Composerのバージョン確認
今回はComposer version 2.4.1になっていると思います。
以下を実行し、インストールしたバージョンが返ってきたらOKです。
docker-compose exec php composer -v
4.gitのバージョン確認
特にバージョン指定はしてないので、以下を実行し、バージョンが返ってきたらOKです。
この記事を作成しているときは git version 2.30.2 が返ってきてました。
docker-compose exec php git --version
5.インストール済の拡張機能の一覧
docker\php\Dockerfile の RUN で install しているパッケージ名が表示されます。
沢山表示されるので、完全には把握してませんが、install部分に記載されているパッケージ名があればいいかな。くらいで確認しています。
docker-compose exec php php -m
6.php.iniがコピー出来ているか確認
phpの設定ファイルがコピーできているか確認します。
ローカルからコピーされた、コンテナにあるphp.iniの内容が表示されればOKです。
1.phpのコンテナ内でbashを起動
phpのコンテナ内でコマンドを実行できるようにします。
docker-compose exec php bash
2.catコマンドでコンテナ内のphp.iniを表示
cat /usr/local/etc/php/php.ini
7.nginxのバージョン確認
今回はnginx/1.22.0になっていると思います。
以下を実行し、インストールしたバージョンが返ってきたらOKです。
docker-compose exec nginx nginx -v
8.mysqlのバージョンを確認
今回はmysql Ver 8.0.30になっていると思います。
以下を実行し、インストールしたバージョンが返ってきたらOKです。
docker compose exec mysql mysql -V
9.Laravelのバージョン確認
今回はLaravel Framework 6.20.44(PHP 8.0.23 に対する Laravel6 の最新)になっていると思います。
以下を実行し、インストールしたバージョンが返ってきたらOKです。
docker compose exec php php artisan -v
10.phpmyadminのバージョン確認
phpMyAdminのTOPページ(HOME)でバージョン情報を確認できます。
アクセス方法は「【Docker】#7 phpMyAdmin表示確認」を参考にしてください。
latestなので、最新が入るようになっています。
11.nodejsのバージョンを確認
docker\php\Dockerfile の apt-get installでインストールしてますが、バージョン指定していません。
安定版の最新が入ると思いますが、詳細は個々で確認をお願いします。
記事作成時点では 7.5.2 になっていました。
docker compose exec php node -v
12.npmのバージョンを確認
docker\php\Dockerfile の apt-get installでインストールしてますが、バージョン指定していません。
安定版の最新が入ると思いますが、詳細は個々で確認をお願いします。
記事作成時点では v12.22.12 になっていました。
docker compose exec php npm -v
さいごに
本シリーズはこれで完了です。
本当にお疲れ様でした。
私自身もまだすべてを把握しているわけではないですが、特に問題なく使えています。
いきなりすべて把握するのは難しいので、分かる範囲で動かして検証しながら、知識を深めるようにしています。
後日、よく使うDockerコマンドの記事を書けたらいいなと思っています。
皆さまがうまくいくことを祈っています。
エンジニア問わず技術職の待遇を見直さないと日本は終わると思います・・・ 特にアニメやゲーム!エンタメ大事です( ;∀;)