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?

More than 1 year has passed since last update.

chatGPT

Last updated at Posted at 2023-03-13

以下は、PHP 8.2.3-fpmイメージにOracleXEがインストールされたUbuntuベースの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例です。

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データベースに接続し、操作するために必要です。

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?