前回Docker-Composeで構成を作ったのですが
EC-CUBE用に設定を色々入れていたので、改めてまとめ直し
オフィシャルコンテナに追加で組み込み/有効にしなければいけなかったもの
Apache2
- mod_rewrite
PHP
- PDO
- PDO_MySQL
- ZIP
MariaDB
+ bind-addressとskip-networkingをコメントアウト
現行のイメージでは上記設定は必要なくなっているようです
設定
PHP+Apacheコンテナ
Dockerfile-PHP
FROM php:7.1-apache
RUN apt-get update && apt-get install -y \
apt-utils \
zlib1g-dev \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
RUN docker-php-source extract \
&& docker-php-ext-install pdo pdo_mysql \
&& docker-php-ext-install zip \
&& docker-php-ext-install opcache
RUN pecl install apcu
RUN echo "extension=apcu.so" > /usr/local/etc/php/conf.d/apcu.ini
RUN a2enmod rewrite
MariaDBコンテナ
Dockerfile-DB
FROM mariadb:10
RUN sed -Ei 's/^(bind-address|skip)/#&/' /etc/mysql/my.cnf
現在は別途BUILDする必要なし
Docker-Compose
docker-compose.yml
php:
build:
context: ./php
dockerfile: Dockerfile-PHP
depends_on:
- db
volumes:
- type: bind
source: /var/vm/eccube-3.0.15
target: /var/www
ports:
- target: 80
published: 80
protocol: tcp
mode: host
logging:
driver: "json-file"
options:
max-size: "10M"
max-file: "10"
db:
build:
context: ./db
dockerfile: Dockerfile-DB
volumes:
- type: bind
source: /var/vm/db
target: /var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: ROOTPW
MYSQL_USER: test
MYSQL_PASSWORD: TESTPW
MYSQL_DATABASE: eccube_test
ports:
- target: 3306
published: 3306
protocol: tcp
mode: host
logging:
driver: "json-file"
options:
max-size: "10M"
max-file: "10"
まとめ
mod_rewrite
http://example.jp/hoge/ と来たアクセスを書き換えて、http://example.jp/index に渡している為、モジュールを有効にしていないと動かない
他のモジュール
PHPのコンテナは、組み込むモジュールを全部列挙ではなく、オフィシャルの状態から追加したいモジュールを追加で入れる
DB
bind-addressが効いているので、他のコンテナからTCP/IPで接続しようとすると弾かれてしまう、共通のボリューム追加してUNIXドメインソケット接続に…とも思いましたが、今回はこれで
インストーラ
WEBインストーラー経由でDB名などのセットアップを行います
http://localhost/install.php
environmentは.envに持っていくほうがよさげ