0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

前回記事の知識整理メモ

Posted at

前回の手順で作成した
・Dockerfile
・docker-compose.yml
の2ファイルの中身を振り返り
やっている事を整理する目的でメモを残します。

1. Dockerfile の中で実行していること

FROM php:8.2-apache
RUN apt-get update && docker-php-ext-install pdo pdo_mysql
内容 実際に行われている処理
FROM php:8.2-apache ベースイメージを指定 Docker Hub の php:8.2-apache イメージを元に新しいイメージを作る。このベースには Apache Webサーバと PHP実行環境がすでに含まれている。
RUN apt-get update && docker-php-ext-install pdo pdo_mysql 必要なPHP拡張をインストール apt-get update でパッケージ情報を更新。docker-php-ext-install pdo pdo_mysql により、PHPの「PDO」と「MySQL接続用ドライバ(pdo_mysql)」を有効化。これで PHP から MariaDB に接続できるようになる。

このDockerfileは「Apache+PHP(MySQL接続対応)」のWebサーバを自分専用にビルドする設計図。
つまり「php:8.2-apache を土台に、DB接続機能を追加したオリジナルWebサーバ」を作っている。

2. docker-compose.yml の中で実行していること

services:
  web:
    build: .
    ports:
      - "8080:80"
    volumes:
      - ./app:/var/www/html
    depends_on:
      - db

  db:
    image: mariadb:10.5
    environment:
      MYSQL_ROOT_PASSWORD: rootpass
      MYSQL_DATABASE: testdb
    volumes:
      - db_data:/var/lib/mysql

volumes:
  db_data:
セクション         キー          内容          実際に行われている処理
services: サービス(コンテナ)の定義ブロック この中で2つのコンテナ(webとdb)を定義。Composeがそれらを同時に起動・連携させる。
web: build: . イメージをDockerfileからビルド カレントディレクトリ(.)にあるDockerfileを使って、Webサーバ用のイメージを作る。
ports: - "8080:80" ポートの割り当て ホスト側8080番をコンテナの80番(Apache)に接続。ブラウザからアクセス可能に。
volumes: - ./app:/var/www/html ファイル共有 ホストの./appフォルダをコンテナ内の/var/www/html(Apacheの公開ディレクトリ)にマウント。ソースコードを即時反映できる。
depends_on: - db 起動順序制御 db(MariaDB)コンテナが先に起動してからwebを起動。DBが利用可能な状態でPHPが立ち上がる。
db: image: mariadb:10.5 MariaDBの公式イメージを使用 Docker Hubから MariaDB 10.5 を取得して起動。
environment: 環境変数設定 MYSQL_ROOT_PASSWORD でrootパスワードを設定。MYSQL_DATABASE で初期DB名を作成。
volumes: - db_data:/var/lib/mysql 永続ボリューム DBのデータをdb_dataというボリュームに保存。コンテナを消してもDBデータは保持される。
volumes: db_data: ボリューム定義 名前付きボリュームを作成。Composeが自動的に管理。

■動作の流れ(イメージ生成〜起動まで)

  1. docker compose build
    ├── Dockerfileを使ってphp+apache+pdomysql入りのWebイメージを作成
    └── mariadb:10.5 イメージを取得

  2. docker compose up -d
    ├── dbコンテナを起動(MariaDB)
    ├── webコンテナを起動(Apache+PHP)
    └── 両者を同じネットワークに接続

  3. ブラウザアクセス
    └── EC2のポート8080 → Webコンテナの80番 → index.php実行 → MariaDBへ接続


■まとめ

ファイル 役割 処理概要
Dockerfile イメージ設計図 Apache+PHP環境をビルドし、DB接続機能を追加する
docker-compose.yml 複数コンテナの連携設定 WebコンテナとDBコンテナを同時に起動し、連携構成を自動構築する
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?