ECCUBEを触りたくてdocker環境で動かすことにしました。
所々一筋縄ではいかなかったのでまとめました。
1.gitから落とす
リポジトリURLからブランチ(tags)を確認して、実行するバージョンをローカルに落とす。
https://github.com/EC-CUBE/ec-cube.git
git clone -b ブランチ名 https://リポジトリのURL
git clone -b 4.0.5 https://github.com/EC-CUBE/ec-cube.git
2.docker-compose.ymlを修正する
・MySQLを利用したいので、Postgresをコメントアウト
・SSL利用しないのでコメントアウト
・動作が重くなるのでcachedをコメントアウト
・phpmyadminを利用するので追記
networks: volumes: ### ignore folder volume ##### services: ### Postgres ################################ ### MySQL ################################## ### phpmyadmin ##################################docker-compose.ymlサンプルファイル
version: "3"
backend:
driver: bridge
# pg-database:
# driver: local
mysql-database:
driver: local
mailcatcher-data:
driver: local
var:
driver: local
vendor:
driver: local
### 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:
# 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:
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:
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
docker-compose exec -u www-data ec-cube bin/console eccube:install
Database Url [sqlite:///var/eccube.db]:
mysql://dbuser:secret@mysql/eccubedb
Mailer Url [null://localhost]:
(Enter押下)
Auth Magic [ランダム値]:
(Enter押下)
Is it OK? (yes/no) [yes]:
(Enter押下)
6.サイトへアクセスする
http://localhost:8080/
http://localhost:8080/admin
『設定→システム設定→システム情報』で想定のバージョンがインストールされていることを確認する。
http://localhost:4040/