【 PHP 】PHP8に入門してみた 8日目 環境構築を進める ( Dockerのコンテナなど )

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

環境構築を進める

Dockerのコンテナなど

Dockerの環境をつくらなければいけません。

といっても VS Code Remote – Containers用PHP開発環境を構築する (zenn.dev) のサイトを参考にさせてもらって手直しする程度です。
間違えている場合は都度修正していきます。

全体の構成

まずはファイルやフォルダを全部作成しました。

D:.
└─.devcontainer
    │  .env
    │  devcontainer.json
    │  docker-compose.yml
    │
    └─docker
        ├─nginx
        │  │  Dockerfile
        │  │
        │  └─config
        │          default.conf
        │
        ├─php
        │  │  Dockerfile
        │  │
        │  └─config
        │          php.ini
        │          xdebug.ini
        │
        └─workspace
            │  Dockerfile
            │
            └─config
                    php.ini

.devcontainer/devcontainer.json

次にdevcontainer.json です。

extensionsにはVS Codeの拡張機能を指定できます。

ここで指定した拡張機能は、Remote Developmentを使用したDockerでの開発時に自動適用されます。

書籍には日本語化PHP Intelephenseについてインストールするように記述されているようでした。

日本語化はすでに完了しているのでここではPHP Intelephenseのみを指定しています。

{
    "name": "PHP Development",
    "dockerComposeFile": [
        "docker-compose.yml"
    ],
    "service": "workspace",
    "workspaceFolder": "/var/www",
    "remoteUser": "vscode",
    "settings": {
        "[php]": {
            "editor.formatOnSave": true
        },
        "search.exclude": {
            "**/node_modules": true,
            "**/bower_components": true,
            "**/*.code-search": true,
            "**/vendor/*/**": true
        }
    },
    "extensions": [
        "bmewburn.vscode-intelephense-client",
    ]
}

.devcontainer/docker-compose.yml

docker-compose.ymlです。参考サイトで定義されていたサービスを削減しMySQLを使用している部分をMariaDBに変更しました。

MariaDBMySQLのフォークプロダクトなのでMySQLで使用していた環境変数を使用できます。(できるはず!)

version: "3.9"

services:
  workspace:
    build:
      context: ./docker/workspace
      args:
        USERNAME: ${USERNAME-vscode}
        USER_UID: ${USER_UID-1000}
        USER_GID: ${USER_GID-1000}
        TIME_ZONE: ${TIME_ZONE-UTC}
        LOCALE: ${LOCALE-C}
    tty: true
    volumes:
      - ../:/var/www
      - ./docker/workspace/config/php.ini:/usr/local/etc/php/conf.d/99-php.ini
    working_dir: /var/www

  nginx:
    build: ./docker/nginx
    ports:
      - "${IP_ADDRESS_SETTING}80:80"
      - "${IP_ADDRESS_SETTING}443:443"
    volumes:
      - ./docker/nginx/config:/etc/nginx/conf.d
      - ../.docker/nginx/log:/var/log/nginx
      - ../:/var/www
    environment:
      TZ: ${TIME_ZONE-UTC}

  php:
    build:
      context: ./docker/php
      args:
        USER_UID: ${USER_UID-1000}
        USER_GID: ${USER_GID-1000}
    volumes:
      - ./docker/php/config/php.ini:/usr/local/etc/php/php.ini
      - ./docker/php/config/xdebug.ini:/usr/local/etc/php/conf.d/xdebug.ini
      - ../:/var/www
    working_dir: /var/www

  mysql:
    image: mariadb:10.8.3
    ports:
      - "${IP_ADDRESS_SETTING}3306:3306"
    volumes:
      - ./mysql:/var/lib/mysql
    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_ja_0900_as_cs_ks

メモ

環境構築しているときが一番楽しい!

PHPPHP

Posted by raika@blog