Dockerとは
Dockerはコンテナ仮想化を使ったアプリケーションを開発・配置・実行するためのオープンプラットフォームです。
簡単に利点をいうと、
・環境構築ファイルを共有することで簡単に同じ環境を提供可能
・環境の流用や変更が簡単
・軽量で高速に起動、停止が可能
詳しいことが知りたい方は色々調べてみてください♪
(気が向けば別記事で書きます)
Dockerをインストール
Dockerをインストールします。
以下のリンクからダウンロードしてインストールを行ってください。
コマンドプロンプトやVSCodeのターミナルなどで
バージョン確認のコマンドを実行し、インストールされていることを確認できます。
■コマンド – バージョン確認docker -v
■コマンド結果
このようにバージョンが出てきたらOKです。
> docker -v
Docker version 20.10.13, build a224086
ファイル構成
今回は以下のファイル構成で環境構築しています。
慣れたら自分の好きなファイル構成にしていただいて構いません。
□:ディレクトリ名
・:ファイル名
□app
├□docker
││
│├□mysql
││├□data
││└・Dockerfile
││
│└□php
│ └・Dockerfile
│
├□html
│└・index.php
│
└・docker-compose.yml
※1 mysql\dataディレクトリの中身は空で作成してください。
ファイル作成
各ファイルの内容を載せています。
docker-compose.yml ファイル
version: '3'
services:
php:
build:
context: ./docker/php
dockerfile: Dockerfile
volumes:
- ./src:/var/www/html
ports:
- 8080:80
depends_on:
- db
db:
build:
context: ./docker/mysql
dockerfile: Dockerfile
volumes:
- ./docker/mysql/data:/var/lib/mysql
ports:
- 3306:3306
environment:
- MYSQL_ROOT_PASSWORD=pass
- MYSQL_DATABASE=app
- MYSQL_USER=user
- MYSQL_PASSWORD=root
ぱっと見分かる箇所は説明抜いてます。
volumes:
右側:ローカル上のディレクトリパス(docker-compose.ymlからの相対パス)
左側:永続化したいサーバーフォルダ
build:
context:build実行パス
dockerfile:Dockerファイル名
depends_on:
db:dbコンテナを先に起動
コンテナ[php]:Dockerfile
FROM php:8.0-apache
RUN apt-get update && apt-get install -y libonig-dev && \
docker-php-ext-install pdo_mysql mysqli
コンテナ[mysql]:Dockerfile
FROM mysql:8.0.20
index.php ファイル
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>環境構築</title>
</head>
<body>
<p><?php print ("Hello World!");?></p>
</body>
</html>
localhostに接続して表示する内容を記載しています。
動作確認
localhostに接続
■コマンド – コンテナ起動
(-d)はバックグラウンドで実行
docker compose up -d
■ローカル環境にアクセスhttp://localhost:8080
「Hello World!」と画面に表示
■コンテナ名を変更したとき
変更前のコンテナが残っているので、一度削除しておく
※ 削除せずにコンテナ起動すると警告が出る
docker compose down --remove-orphans
コンテナ内に入ってphp実行確認
phpコンテナに入ってphpファイルを実行確認する場合
■phpコンテナに入るdocker compose exec php bash
■phpファイル実行php index.php
ファイルを実行します。
[index.php]ファイルの中身を
[echo Hello World!]だけにした方が分かりやすいかもしれません。
■bash終了exit
MySQL接続、SQL実行
■MySQLコンテナでMySQL接続docker compose exec db mysql -u root -ppass
db[コンテナ名]
pass[MYSQL_ROOT_PASSWORD]
は[docker-compose.yml]で設定した値です。
> docker compose exec db mysql -u root -ppass
Welcome to the MySQL monitor. Commands end with ; or \g.
・・・
mysql>
上記のようにmysql>
とSQLが入力できる状態であればOKです。
SHOW DATABASES;
などSQL文を実行して試してみてください。
これで環境構築は完了です。
これから色々試してみる予定なので、
phpのiniファイルを追加したりcnfファイルを追加した
よかったら参考にしてみてください。
いやぁ…。色々はまりました。
はまった点を記載すべきなのですが、開発環境も異なるため解決方法も異なる可能性が高く一つ一つネットで調べるのが速いと思います。