EC-CUBE4のローカル環境構築

前提

・WSL(Windows Subsystem for Linux)2上にUbuntuインストール済

・Dockerインストール済

・docker-compose-pluginインストール済(docker composeコマンドを使用します)

参考 https://doc4.ec-cube.net/quickstart/docker_compose_install


GitブランチからEC-CUBE4を作業ディレクトリにクローン

クローン先の作業ディレクトリは/working/ecc4とします。

作業ディレクトリを作成し、GitリポジトリのURLを指定してクローンすると、ecc4ディレクトリ配下にec-cubeディレクトリが作成されます。

ブランチ指定してクローンしたい場合は-bオプションで指定します。


ブランチ指定なしの場合は、defaultブランチ「4.3」がクローンされました。(2024/7/17時点)


EC-CUBEバージョンはpackage.jsonに記載されています。


Dockerコンテナを起動(ymlファイル指定)

docker-compose.ymlファイルがあるディレクトリに移動し、Dockerコンテナ起動します。

mysqlを使用したいのでdocker-compose.ymldocker-compose.mysql.ymlをファイル指定して、コンテナ起動コマンドを実行します。

※-f:compose設定ファイルの場所を指定するオプション。

※up:docker-compose.ymlに記載されている各コンテナを起動するコマンド。

※-d:バックグラウンドでコンテナを起動するオプション。

コンテナ終了時にはdownコマンドにもファイル指定します。


Dockerコンテナを起動(ymlファイル指定なし)

上記では2つのymlファイルを指定してコンテナ起動をしましたが、ymlファイルをいちいち指定するのは面倒なので1つにまとめます。

version: ‘3’
volumes:
  mysql-database:
    driver: local
services:
  ec-cube:
    depends_on:
      mysql:
        condition: service_healthy
    environment:
      DATABASE_URL: “mysql://dbuser:secret@mysql/eccubedb”
      DATABASE_SERVER_VERSION: 8.0
      DATABASE_CHARSET: ‘utf8mb4’   mysql:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_USER: dbuser
      MYSQL_PASSWORD: secret
    volumes:
      – mysql-database:/var/lib/mysql
      – ./dockerbuild/grant_to_dbuser.sql:/docker-entrypoint-initdb.d/grant_to_dbuser.sql
    ports:
      – 13306:3306
networks:
      – backend
    healthcheck:
      test: mysqladmin ping
      interval: 3s
      timeout: 3s
      retries: 3

  

version: “3”

  networks:
  backend:
    driver: bridge

volumes:
  mailcatcher-data:
    driver: local


  ### mysqlの設定を追加 ###
  mysql-database:
    driver: local
  ### ここまで ###


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

services:
  ### ECCube4 ##################################
  ec-cube:
    ### ローカルでビルドする場合は以下のコマンドを使用します
    ## docker build -t ec-cube –no-cache –pull –build-arg TAG=8.1-apache .
    ## docker tag ec-cube ghcr.io/ec-cube/ec-cube-php:8.1-apache
    image: ${REGISTRY:-ghcr.io}/${IMAGE_NAME:-ec-cube/ec-cube-php}:${TAG:-8.1-apache}
    ports:
      – 8080:80
      – 4430:443
    volumes:
      ### 同期対象からコストの重いフォルダを除外 #####################
      – “var:/var/www/html/var”
      – “vendor:/var/www/html/vendor”
      – “node_modules:/var/www/html/node_modules”
    environment:
      # EC-CUBE environments
      APP_ENV: “dev”
      APP_DEBUG: 1


      ### sqliteの設定をコメントアウト###
      # DATABASE_URL: “sqlite:///var/eccube.db”
      # DATABASE_SERVER_VERSION: 3
      # DATABASE_CHARSET: ‘utf8’
      ### ここまで ###

      ### mysqlの設定を追加 ###
      DATABASE_URL: “mysql://dbuser:secret@mysql/eccubedb”
      DATABASE_SERVER_VERSION: 8.0
      DATABASE_CHARSET: ‘utf8mb4’
      ### ここまで ###

      MAILER_DSN: “smtp://mailcatcher:1025”
      ECCUBE_AUTH_MAGIC: “<change.me>”
      # TRUSTED_HOSTS: ‘^127.0.0.1$$,^localhost$$’
      # ECCUBE_LOCALE: “ja”
      # ECCUBE_TIMEZONE: “Asia/Tokyo”
      # ECCUBE_CURRENCY: “JPY”
      # ECCUBE_ADMIN_ROUTE: “admin”
      # ECCUBE_USER_DATA_ROUTE: “user_data”
      # ECCUBE_ADMIN_ALLOW_HOSTS: []
      # ECCUBE_FORCE_SSL: false
      # ECCUBE_PHPINFO_ENABLED=false
      # ECCUBE_TEMPLATE_CODE: “default”
      # ECCUBE_COOKIE_NAME: “eccube”
      # ECCUBE_COOKIE_PATH: “/”
      # ECCUBE_COOKIE_LIFETIME: 0
      # ECCUBE_GC_MAXLIFETIME: 1440
      # ECCUBE_ADMIN_USER: “admin”
      # ECCUBE_ADMIN_PASS: “password”
    networks:
      – backend


    ### mysqlの設定を追加 ###
    depends_on:
      mysql:
        condition: service_healthy
    ### ここまで###

  ### mySqlの設定を追加 ###
  mysql:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_USER: dbuser
      MYSQL_PASSWORD: secret
    volumes:
      – mysql-database:/var/lib/mysql
      – ./dockerbuild/grant_to_dbuser.sql:/docker-entrypoint-initdb.d/grant_to_dbuser.sql
    ports:
      – 13306:3306
    networks:
      – backend
    healthcheck:
      test: mysqladmin ping
      interval: 3s
      timeout: 3s
      retries: 3
  ### ここまで ###


  ### Mailcatcher ##################################
  mailcatcher:
    image: schickling/mailcatcher
    ports:
      – “1080:1080”
      – “1025:1025”
    networks:
      – backend

docker-compose.ymlファイルにdocker-compose.mysql.ymlファイルの内容を記載しました。

これでコンテナ起動/終了コマンドが短くなります。


EC-CUBEをインストール

コンテナ起動した状態でEC-CUBEをインストールします。

※exec:指定したコンテナでコマンドを実行するコマンド。

※bin/console:コマンドラインインターフェイス。

 EC-CUBEが提供するコマンドを実行する際に使用。

※eccube:install:EC-CUBEをインストールするコマンド。

 参考 https://doc4.ec-cube.net/quickstart/cli

※-u:指定したユーザーを使用するオプション。

※-n:非対話モードにするためのオプション。

 これを指定しない場合は4項目の確認が必要になるが、mysqlが設定されていればすべてEnterでOK。

 ただし、ログインができなくなる可能性があるため、非対話モードでのインストールが推奨されている。

 参考 https://github.com/EC-CUBE/ec-cube/issues/5018

-nオプションありは上記の確認が入る。
-nオプションありは確認が入らない。


ブラウザアクセス

以降はコンテナを起動してブラウザ表示できます。

メインページ

http://localhost:8080

管理者ページ

http://localhost:8080/admin

デフォルトでDBにサンプルデータが入っているため、管理者ページでログインができます。

※ログイン情報は/ec-cube/.env.distファイルのECCUBE_ADMIN_USER=ECCUBE_ADMIN_PASS=に記載されている。


余談:DBデータ確認

管理者ページのログインデータはeccubedbデータベースのdtb_memberテーブルに格納されています。

データ確認するには、Dockerコンテナを起動した状態でmysqlコンテナに移動し、mysqlにログインします。

※mysqlのユーザー情報はdocker-compose.mysql.ymlMYSQL_USER=MYSQL_PASSWORD=に記載されている。


この投稿へのコメント

コメントはありません。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

この投稿へのトラックバック

トラックバックはありません。

トラックバック URL