業務で使用しているサーバーの入れ替えがあり急に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接続関係のプラグイン指定が意外と厄介でした。