ヤマモト
2024.09.17
23
こんにちは、山本です。
今回はDockerでPHPの環境の構築を行いました。
Docker社が開発している、コンテナ型の仮想環境を作成、配布、実行するためのプラットフォーム。
Dockerコンテナはコード化されたファイルを共有することで、ローカル環境と本番環境の違いをなくし、一貫した動作の環境のもと開発を行うことができる。
Dockerはミドルウェアのインストールや各種環境設定をコード化して管理できる。
任意の場所にディレクトリを作成する。
mkdir php-docker
cd php-docker
(ディレクトリ構造)
php-docker/
├── Dockerfile
├── docker-compose.yml
├── index.php
└── その他のPHPファイルやディレクトリ
Dockerfile とは、PHPのベースイメージに対して追加のPHP拡張モジュールをインストールするためのもの。
プロジェクトディレクトリ内に Dockerfile を作成し、以下の内容を記述する。
# ベースイメージとしてPHPを使用
FROM php:7.4-apache
# 作業ディレクトリを設定
WORKDIR /var/www/html
# プロジェクトファイルをコンテナにコピー
COPY . /var/www/html
# 必要なPHP拡張モジュールをインストール
RUN docker-php-ext-install mysqli
docker-compose.yml は、複数のDockerコンテナを一括で定義・管理するための設定ファイル。
1つのファイルで複数のコンテナを定義可能で、例えばPHPとMySQLを同時に設定でき、ローカル環境、テスト環境で同じ設定ファイルを用いることで、一貫性のある環境を提供できる。
プロジェクトディレクトリ内に docker-compose.yml を作成し、以下の内容を記述する。
version: '3.8'
services:
web:
build: .
ports:
- "8080:80"
volumes:
- .:/var/www/html
depends_on:
- db
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: example
MYSQL_DATABASE: mydatabase
MYSQL_USER: user
MYSQL_PASSWORD: password
volumes:
- db_data:/var/lib/mysql
volumes:
db_data:
例えば index.php ファイルを作成し、MySQLデータベースに接続できているかを確認するソースを記述する。
<?php
$servername = "db";
$username = "user";
$password = "password";
$dbname = "mydatabase";
// MySQLデータベースに接続
$conn = new mysqli($servername, $username, $password, $dbname);
// 接続をチェック
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
?>
以下のコマンドを実行して、Dockerコンテナをビルドし起動する。
docker-compose up -d
ブラウザで http://localhost:8080 にアクセスして、PHPとMySQLが正しく連携しているか確認する。
今回はDockerでPHPの環境の構築を行いました。
49
ヤマモト
2024.09.25
13
ヤマモト
2024.09.19
16
ヤマモト
2024.09.11