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

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

環境構築を進める

Dockerのコンテナなど

.devcontainer/.env

.envファイルは参考サイトのままです。

TIME_ZONE=Asia/Tokyo
LOCALE=ja_JP.UTF-8

DB_DATABASE=docker
DB_USERNAME=docker
DB_PASSWORD=docker

# Local Loopback Address(127.0.0.0/8):
IP_ADDRESS_SETTING=127.127.127.127:

IPの指定でこんな書き方(127.0.0.1/8:)あるんですね。。。と思ったら

.devcontainer/docker-compose.ymlで以下のように定義したから:が必要になっただけのようです。

・・・
    ports:
      - "${IP_ADDRESS_SETTING}5432:5432"
・・・

なるほど・・・🤔

.devcontainer/docker/workspace/Dockerfile

workspaceのビルドファイルの定義です。

参考サイトではPHPのバージョン8.0-cli-bullseyeがイメージとして使用されているようですが今回は8.1-cli-bullseyeを使用するように修正します。

composerやnodeは今回必要無いかもしれません。

他にも今回不要なパッケージをインストールしていたりしますが・・・良しとします!

(参考書籍のを全部見ていないのでまだ不明)

FROM php:8.1-cli-bullseye

ARG USERNAME=vscode
ARG USER_UID=1000
ARG USER_GID=${USER_UID}

ARG LOCALE=en_US.UTF-8
ARG TIME_ZONE=UTC

ENV PKG="bash-completion curl dnsutils git imagemagick jq locales mariadb-client postgresql-client rsync sqlite3 tree unzip vim wget zip"
ENV PKG_LIB="libc-client-dev libfreetype6-dev libjpeg62-turbo-dev libkrb5-dev libmagickwand-dev libonig-dev libpng-dev libpq-dev libsqlite3-dev libxslt-dev libzip-dev"
ENV COMPOSER_ALLOW_SUPERUSER 1
ENV DEBIAN_FRONTEND noninteractive
ENV LANG=${LOCALE}
ENV TZ=${TIME_ZONE}

# 今回必要ないかもしれません
COPY --from=composer:2.4 /usr/bin/composer /usr/bin/composer
COPY --from=node:18.7 /usr/local/bin /usr/local/bin

RUN apt-get update \
    && apt-get install -y $PKG $PKG_LIB \
    && pecl install imagick redis-5.3.4 xdebug-3.1.1 \
    && docker-php-ext-configure imap --with-kerberos --with-imap-ssl \
    && docker-php-ext-enable imagick redis xdebug \
    && docker-php-ext-install bcmath gd imap intl pdo_mysql pdo_pgsql pdo_sqlite xml zip \
    #
    # locale
    && sed -i -E "s/# (${LOCALE})/\1/" /etc/locale.gen \
    && locale-gen ${LOCALE} \
    && dpkg-reconfigure locales \
    && update-locale LANG=${LOCALE} \
    #
    # timezone
    && ln -snf /usr/share/zoneinfo/${TIME_ZONE} /etc/localtime && echo ${TIME_ZONE} > /etc/timezone \
    #
    # user
    && groupadd --gid ${USER_GID} ${USERNAME} \
    && useradd -s /bin/bash --uid ${USER_UID} --gid ${USER_GID} -m ${USERNAME} \
    && apt-get install -y sudo \
    && echo ${USERNAME} ALL=\(root\) NOPASSWD:ALL > /etc/sudoers.d/${USERNAME} \
    && chmod 0440 /etc/sudoers.d/${USERNAME}

メモ

PHPはもう8.2のベータが公開されているようです。

参考

VS Code Remote – Containers用PHP開発環境を構築する (zenn.dev)

 

 

PHPPHP

Posted by raika@blog