chatGPT

以下は、PHP 8.2.3-fpmイメージにOracleXEがインストールされたUbuntuベースのDockerfileの例です。

```dockerfile
FROM ubuntu:latest

# Oracle Instant Clientのダウンロードとインストール
RUN apt-get update && apt-get install -y \
        libaio1 \
        alien \
        curl \
        zip \
    && curl -o oracle-instantclient19.8-basic_19.8.0.0.0-1_amd64.deb https://download.oracle.com/otn_software/linux/instantclient/19800/oracle-instantclient19.8-basic_19.8.0.0.0-1_amd64.deb -SL \
    && curl -o oracle-instantclient19.8-devel_19.8.0.0.0-1_amd64.deb https://download.oracle.com/otn_software/linux/instantclient/19800/oracle-instantclient19.8-devel_19.8.0.0.0-1_amd64.deb -SL \
    && alien -i oracle-instantclient19.8-basic_19.8.0.0.0-1_amd64.deb \
    && alien -i oracle-instantclient19.8-devel_19.8.0.0.0-1_amd64.deb \
    && rm -rf oracle-instantclient19.8-basic_19.8.0.0.0-1_amd64.deb \
    && rm -rf oracle-instantclient19.8-devel_19.8.0.0.0-1_amd64.deb \
    && echo /usr/lib/oracle/19.8/client64/lib > /etc/ld.so.conf.d/oracle-instantclient.conf \
    && ldconfig

# PHPのインストールと必要な拡張のインストール
RUN apt-get update && apt-get install -y \
        php8.2-fpm \
        php8.2-oci8 \
        php8.2-pdo_oci \
        php8.2-curl \
        php8.2-gd \
        php8.2-mbstring \
        php8.2-zip \
        libzip4 \
        nginx \
        supervisor \
    && rm -rf /var/lib/apt/lists/*

# nginxの設定ファイルの配置
COPY nginx/default /etc/nginx/sites-available/default

# supervisorの設定ファイルの配置
COPY supervisor/* /etc/supervisor/conf.d/

# PHP-FPMとnginxのポート設定
EXPOSE 9000 80

# supervisor起動コマンド
CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/supervisord.conf"]
```

上記のDockerfileはOracle Instant Client、PHP、必要なPHP拡張機能、nginx、supervisorをインストールします。Nginxの設定ファイルとsupervisorの設定ファイルをコピーし、supervisorを起動するCMDを指定しています。必要に応じて、ポートをマッピングするためにdocker runコマンドを使用してコンテナを起動する必要があります。

以下は、PHP 8.2.3-fpmイメージをベースに、OracleXEと接続するためのDockerfile例です。

```dockerfile
FROM php:8.2.3-fpm

# 必要なパッケージをインストールし、Oracle Instant Clientをダウンロード
RUN apt-get update && \
    apt-get install -y \
        libnsl-dev \
        libaio-dev \
        curl \
        unzip \
        libffi-dev \
        git \
        build-essential \
        libpq-dev \
    && rm -rf /var/lib/apt/lists/* \
    && mkdir -p /usr/local/lib/php/extensions \
    && wget https://download.oracle.com/otn_software/linux/instantclient/211000/instantclient-basiclite-linux.x64-21.1.0.0.0.zip \
        --header "Cookie: oraclelicense=accept-securebackup-cookie;" \
    && unzip instantclient-basiclite-linux.x64-21.1.0.0.0.zip \
    && rm instantclient-basiclite-linux.x64-21.1.0.0.0.zip \
    && mv instantclient_21_1 /usr/local/instantclient \
    && ln -s /usr/local/instantclient/libclntsh.so.21.1 /usr/local/instantclient/libclntsh.so \
    && ln -s /usr/local/instantclient/libocci.so.21.1 /usr/local/instantclient/libocci.so \
    && ln -s /usr/local/instantclient/libipc1.so /usr/lib/libipc1.so \
    && ln -s /usr/local/instantclient/libmql1.so /usr/lib/libmql1.so \
    && ln -s /usr/local/instantclient/libociicus.so /usr/lib/libociicus.so \
    && ln -s /usr/local/instantclient/libons.so /usr/lib/libons.so \
    && ln -s /usr/local/instantclient/libnnz21.so /usr/lib/libnnz21.so \
    && ln -s /usr/local/instantclient/libclntshcore.so.21.1 /usr/lib/libclntshcore.so.21.1 \
    && ln -s /usr/local/instantclient/libclntsh.so /usr/lib/libclntsh.so \
    && ln -s /usr/local/instantclient/libocci.so /usr/lib/libocci.so \
    && ln -s /usr/local/instantclient/libociei.so /usr/lib/libociei.so

# pdo_ociとoci8を有効にする
RUN docker-php-ext-configure oci8 --with-oci8=instantclient,/usr/local/instantclient \
    && docker-php-ext-install oci8 \
    && docker-php-ext-configure pdo_oci --with-pdo_oci=instantclient,/usr/local/instantclient,21.1 \
    && docker-php-ext-install pdo_oci
```

このDockerfileでは、ベースのPHPイメージを `php:8.2.3-fpm` に設定し、必要なパッケージをインストールしています。

Oracle Instant Clientは、 `basiclite` ダウンロードパッケージからインストールされます。Oracleのダウンロードページから、ユーザー名とパスワードを入力して、自分の環境に最適なバージョンをダウンロードしてください。

このDockerfileは、pdo_ociおよびoci8拡張機能も有効にしています。これらの拡張機能は、PDOおよびOCI8ドライバーを提供し、Oracleデータベースに接続し、操作するために必要です。