DockerでNginx+PHP7.4の動作環境を作ってみた

業務で使用しているサーバーの入れ替えがあり急にDockerを使うことになったので、システムが動作するよう環境構築してみました。
今回の導入環境はUbuntu20.04にDockerをインストールした状態です。
今回のフォルダ構成は下記のようにしています。


├─ docker-compose.yml
├─ nginx
│   └─ nginx.conf
└─ web
    ├─ Dockerfile
    └─ php.ini

まずはdocker-compose.ymlを作成


version: '3'
services:
        web:
                image: nginx:stable
                depends_on:
                        - php
                ports:
                        - '80:80'
                        - '433:433'
                volumes:
                        - ./nginx/conf.d:/etc/nginx/conf.d
                        - /var/www:/var/www/html
                restart: always
        php:
                build:
                        context: ./web
                volumes:
                        - /var/www:/var/www/html
                restart: always

次にPHP用のDockerfileを作成します。


FROM php:7.4-fpm

RUN apt-get update
RUN apt-get install -y gcc make libpq-dev libzip-dev zip libssh2-1 libssh2-1-dev \
         && docker-php-ext-install pdo pdo_pgsql pgsql zip
RUN curl http://pecl.php.net/get/ssh2-1.2.tgz -o ssh2.tgz \
         && pecl install ssh2 ssh2.tgz \
         && docker-php-ext-enable ssh2 \
         && rm -rf ssh2.tgz

COPY ./php.ini /usr/local/etc/php/php.ini

今回はPHPで使用しているPostgreSQL接続、SSH接続、zip圧縮などがあるため必要な機能のインストールを指定しています。
PostgreSQL、zipに関してはextensionが使用できるため楽だったのですがSSH接続関係のプラグイン指定が意外と厄介でした。