仕事で上記の環境が必要になったのでもうやりたくない備忘録として残す
環境
- Mac for Docker
- Apache2.4
- PHP7.1
- PostgreSQL9.6
構成
ディレクトリ構成はこんな感じです。
Dockerfile
docker/web
に Dockerfile
という名前のファイルを作成し以下の内容で記述
PHPのバージョンを変えたければFROMの
php:7.3-apache
という風に変えればいけるはず。
docker/web/Dockerfile
FROM php:7.1-apache
COPY ./php.ini /usr/local/etc/php/
RUN set -ex apk --no-cache add postgresql-dev libpq-dev && \
apt-get update && apt-get install -y libpq-dev \
vim \
less \
&& docker-php-ext-install pdo pdo_pgsql pgsql mbstring
同階層で php.ini
ファイルを作成します。
docker/web/php.ini
[Core]
display_errors = On
error_reporting = E_ALL
error_log = /var/log/apache2/error.log
log_errors = On
[Date]
date.timezone = 'Asia/Tokyo'
[mbstring]
mbstring.language = Japanese
mbstring.internal_encoding = auto
mbstring.http_input = auto
mbstring.http_output = auto
mbsting.encoding_translation = Off
mbstring.detect_order = auto
docker-compose.yml
PostgreSQLのバージョン変えたければ image: postgres:9.3
の部分を変更してください。
またはポートを変えたいときは ports: -8110:80
を変更してください。
docker-compose.yml
version: '3'
services:
web:
build: ./docker/web/
ports:
- 8110:80
volumes:
- .:/var/www/html
depends_on:
- db
db:
image: postgres:9.3
ports:
- 5433:5432
volumes:
- ./docker/db:/docker-entrypoint-initdb.d
公開ファイルを編集
適当に今回は index.php
を上げるので phpinfo
を表示させよう
index.php
<?php
phpinfo();
実行
実行してみる
docker-compose up -d
立ち上がってるか確認してみる
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0e5271d55548 4b77e94c903a "docker-php-entrypoi…" 38 minutes ago Up 38 minutes 0.0.0.0:8110->80/tcp test_web_1
d7ae129bf106 postgres:9.3 "docker-entrypoint.s…" 38 minutes ago Up 38 minutes 0.0.0.0:5433->5432/tcp test_db_1
ブラウザ確認
先ほどのdocker-compose.ymlをそのまま使用している人なら以下のリンクから飛べるはず
localhost:8110
下の画面が表示されていれば成功
マシン接続
コンテナ内に入ってみる
$ docker exec -it test_web_1 bash
# ls
# docker docker-compose.yml index.php
最後に
docker-compose.ymlが便利すぎて辛い。