【 PHP 】PHP8に入門してみた 21日目 環境構築を進める ( DBを構築する )

PHP8技術者認定初級試験 が始まるようなので 試験に向けて (できるだけ)勉強しようと思います! 使用する書籍は独習PHP 第4版(山田 祥寛)|翔泳社の本 (shoeisha.co.jp) となります。

環境構築を進める

初期データを投入する

それでは学習用のデータを登録してきたいと思います。

初期データ取得

初期データは参考書に記載されている下記URLからダウンロードします。

独習PHP 第4版 – WINGS (msn.to)

このサイトの「ダウンロード」をクリックします。

「本書掲載サンプルコード (約xxxxxKB) 」をクリックしダウンロードします。

ダウンロードして解凍します。selfphp/selfphp.sqlが初期データです。

Dockerコンテナ生成時に初期データを使用する

DockerのMariaDBはコンテナ生成時に/docker-entrypoint-initdb.dフォルダをホストとつなげる(バインド)と

コンテナ生成処理の中で初期データ等を自動でロードしてくれる仕組みがあります。これを利用します。

ホスト側はD:\dockers\files\php8_study\.devcontainer\docker\mysql\init_dataをコンテナとバインドすることにします。

.devcontainer/docker-compose.ymlを修正(抜粋)
  mysql:
    image: mariadb:10.8.3
    ports:
      - "${IP_ADDRESS_SETTING}3306:3306"
    volumes:
      - ./mysql:/var/lib/mysql
      - ./docker/mysql/init_data/:/docker-entrypoint-initdb.d # ★追加
    environment:
      MYSQL_ROOT_PASSWORD: ${DB_PASSWORD-docker}
      MYSQL_USER: ${DB_USERNAME-docker}
      MYSQL_PASSWORD: ${DB_PASSWORD-docker}
      MYSQL_DATABASE: ${DB_DATABASE-docker}
      TZ: ${TIME_ZONE-UTC}
    command:
      - mysqld
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_unicode_ci
.devcontainer/docker/mysql/init_dataフォルダ

さらに本書では「データベース作成」と「ユーザ作成」を行っているのでこのSQLを追加しなければいけません。

まずはselfphp.sql02_selfphp.sqlに変更します。

次に02_selfphp.sqlの1行目にUSE selfphp;を追加しておきます。

次に01_firststep.sqlを作成し以下のように記述します。

-- データベース作成
CREATE DATABASE selfphp CHARCTER SET utf8;

-- ユーザ作成
GRANT ALL PRIVILEGES ON selfphp.* TO selfuser@localhost IDENTIFIED BY 'selfpass';

 

init_dataフォルダ配下の改行コードは「Windows改行コード」ではなく、「Linuxの改行コード」に変換しておきます。

MriaDB削除

MariaDB起動後に生成されたファイルやフォルダを削除しておきます。

.devcontainer/mysqlフォルダを削除します。

PowerShellを起動し以下のコマンドを実行します。(D:\dockers\files\php8_study\.devcontainerに移動しておきます。)

PS D:\dockers\files\php8_study\.devcontainer> docker-compose -p php8_study_devcontainer rm -f mysql

 

メモ

なにも考えずにAdsenceの広告を「自動」にしていたらサイトが広告だらけ!

今のいままで気づきませんでした。

自身の設置した広告ユニット + 自動配置された広告ユニット でめちゃめちゃ(笑)

「自動」を切り、自身の設置したユニットだけ残しました。

 

PHPPHP

Posted by raika@blog