ECCUBEをdockerで動かす


ECCUBEを触りたくてdocker環境で動かすことにしました。
所々一筋縄ではいかなかったのでまとめました。

####1.gitから落とす#
リポジトリURLからブランチ(tags)を確認して、実行するバージョンをローカルに落とす。

```:ECCUBEリポジトリのURL
https://github.com/EC-CUBE/ec-cube.git
```

```:ブランチの指定方法
git clone -b ブランチ名 https://リポジトリのURL
```

```:(例)4.0.5の環境を利用する場合のコマンド
git clone -b 4.0.5 https://github.com/EC-CUBE/ec-cube.git
```
####2.docker-compose.ymlを修正する##
・MySQLを利用したいので、Postgresをコメントアウト
・SSL利用しないのでコメントアウト
・動作が重くなるのでcachedをコメントアウト
・phpmyadminを利用するので追記

<details><summary>docker-compose.ymlサンプルファイル</summary><div>
version: "3"

networks:
  backend:
    driver: bridge

volumes:
\#  pg-database:
\#    driver: local
  mysql-database:
    driver: local
  mailcatcher-data:
    driver: local

  ### ignore folder volume #####
  var:
    driver: local
  vendor:
    driver: local

services:
  ### ECCube4 ##################################
  ec-cube:
    build:
      context: .
      args:
        # ビルド時のECCubeインストールスクリプトをスキップする場合にtrueを指定する。
        # ビルド時点でDBサーバの起動や接続が出来ない、という場合等にエラーとなるため。
        SKIP_INSTALL_SCRIPT_ON_DOCKER_BUILD: "true"
    ports:
      - 8080:80
\#      - 4430:443
    volumes:
\#      - ".:/var/www/html:cached"
      ### 同期対象からコストの重いフォルダを除外 #####################
      - "var:/var/www/html/var"
      - "vendor:/var/www/html/vendor"
    networks:
      - backend

  ### Postgres ################################
\#  postgres:
\#    image: postgres:10
\#    environment:
\#      - POSTGRES_DB=eccubedb
\#      - POSTGRES_USER=dbuser
\#      - POSTGRES_PASSWORD=secret
\#    ports:
\#      - 15432:5432
\#    volumes:
\#      - pg-database:/var/lib/postgresql/data
\#    networks:
\#      - backend

  ### MySQL ##################################
  mysql:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: eccubedb
      MYSQL_USER: dbuser
      MYSQL_PASSWORD: secret
    volumes:
      - mysql-database:/var/lib/mysql
    ports:
      - 13306:3306
    networks:
      - backend
    restart: always

  ### phpmyadmin ##################################
  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    links:
      - mysql:mysql
    volumes:
      - ./phpmyadmin/sessions:/sessions
    ports:
      - 4040:80
    environment:
      - PMA_ARBITRARY=1
      - PMA_HOST=mysql
      - PMA_USER=root
      - PMA_PASSWORD=root
    restart: always
    depends_on:
      - mysql
    networks:
      - backend
  ### Mailcatcher ##################################
  mailcatcher:
    image: schickling/mailcatcher
    ports:
      - "1080:1080"
      - "1025:1025"
    networks:
      - backend
</div></details>
####3.Dockerfileを修正する
・composerを最新にすると動かなくなるのでバージョンを指定する。
<details><summary>Dockerfileの抜粋</summary><div>
RUN curl -sS https\://getcomposer.org/installer \
  | php \
  && mv composer.phar /usr/bin/composer \
 <font color="Red">&& composer selfupdate --1 \ </font>
  && composer config -g repos.packagist composer https\://packagist.jp \
  && composer global require hirak/prestissimo \
  && chown www-data:www-data /var/www \
  && mkdir -p \${APACHE_DOCUMENT_ROOT}/var \
  && chown -R www-data:www-data \${APACHE_DOCUMENT_ROOT} \
  && find ${APACHE_DOCUMENT_ROOT} -type d -print0 \
  | xargs -0 chmod g+s \
  ;
</div></details>

####4.docker-composeコマンドの実行
```:コンテナの作成と開始
docker-compose up -d
```
```:ECCUBEのインストール
docker-compose exec -u www-data ec-cube bin/console eccube:install
```

```:DBの設定　※MySQLの場合以下を入力する。
Database Url [sqlite:///var/eccube.db]:
mysql://dbuser:secret@mysql/eccubedb
```
```:以降Enter押下で完了
Mailer Url [null://localhost]:
(Enter押下)

Auth Magic [ランダム値]:
(Enter押下)

Is it OK? (yes/no) [yes]:
(Enter押下)
```

6.サイトへアクセスする

```:メインページ
http://localhost:8080/
```
```:管理者ページ[ID_admin][pass_password]
http://localhost:8080/admin
```
『設定→システム設定→システム情報』で想定のバージョンがインストールされていることを確認する。
![システム情報.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2488430/524192c3-f836-5dd7-ca31-32dd4000b258.png)

```:phpMyAdmin
http://localhost:4040/
```
phpMyAdminも問題なく表示される。
![phpmyadmin.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2488430/6af6e7ef-59d4-135e-5385-dcd9cef9a8d9.png)
####ECCUBEをローカルで触れるようになりました!!