1
Help us understand the problem. What are the problem?

posted at

updated at

Organization

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を利用するので追記

docker-compose.ymlサンプルファイル

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

3.Dockerfileを修正する

・composerを最新にすると動かなくなるのでバージョンを指定する。

Dockerfileの抜粋

RUN curl -sS https://getcomposer.org/installer \
| php \
&& mv composer.phar /usr/bin/composer \
&& composer selfupdate --1 \
&& 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 \
;

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

phpMyAdmin
http://localhost:4040/

phpMyAdminも問題なく表示される。
phpmyadmin.png

ECCUBEをローカルで触れるようになりました!!

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
1
Help us understand the problem. What are the problem?