LoginSignup
7
11

More than 5 years have passed since last update.

Docker-ComposeでEC-CUBE

Last updated at Posted at 2017-07-20

前回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に持っていくほうがよさげ

7
11
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
7
11