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ディレクトリが作成されます。
1 2 3 4 5 6 |
$ mkdir /working/ecc4 $ cd /working/ecc4 $ git clone https://github.com/EC-CUBE/ec-cube.git $ ls ec-cube |
ブランチ指定してクローンしたい場合は-bオプションで指定します。
1 |
$ git clone -b 4.3 https://github.com/EC-CUBE/ec-cube.git |
ブランチ指定なしの場合は、defaultブランチ「4.3」がクローンされました。(2024/7/17時点)
EC-CUBEバージョンはpackage.json
に記載されています。
1 |
$ less /working/ecc4/ec-cube/package.json |
Dockerコンテナを起動(ymlファイル指定)
docker-compose.yml
ファイルがあるディレクトリに移動し、Dockerコンテナ起動します。
mysqlを使用したいのでdocker-compose.yml
とdocker-compose.mysql.yml
をファイル指定して、コンテナ起動コマンドを実行します。
1 2 |
$ cd /working/ecc4/ec-cube $ docker compose -f docker-compose.yml -f docker-compose.mysql.yml up -d |
※-f:compose設定ファイルの場所を指定するオプション。
※up:docker-compose.ymlに記載されている各コンテナを起動するコマンド。
※-d:バックグラウンドでコンテナを起動するオプション。
コンテナ終了時にはdownコマンドにもファイル指定します。
1 |
$ docker compose -f docker-compose.yml -f docker-compose.mysql.yml down |
Dockerコンテナを起動(ymlファイル指定なし)
上記では2つのymlファイルを指定してコンテナ起動をしましたが、ymlファイルをいちいち指定するのは面倒なので1つにまとめます。
1 |
$ less docker-compose.mysql.yml |
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
1 |
$vi docker-compose.yml |
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ファイルの内容を記載しました。
これでコンテナ起動/終了コマンドが短くなります。
1 2 |
$ docker compose up -d $ docker compose donw |
EC-CUBEをインストール
コンテナ起動した状態でEC-CUBEをインストールします。
1 |
$ docker compose exec -u www-data ec-cube bin/console eccube:install -n |
※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
ブラウザアクセス
以降はコンテナを起動してブラウザ表示できます。
メインページ
管理者ページ
デフォルトでDBにサンプルデータが入っているため、管理者ページでログインができます。
※ログイン情報は/ec-cube/.env.dist
ファイルのECCUBE_ADMIN_USER=
、ECCUBE_ADMIN_PASS=
に記載されている。
余談:DBデータ確認
管理者ページのログインデータはeccubedbデータベースのdtb_memberテーブルに格納されています。
データ確認するには、Dockerコンテナを起動した状態でmysqlコンテナに移動し、mysqlにログインします。
※mysqlのユーザー情報はdocker-compose.mysql.yml
のMYSQL_USER=
、MYSQL_PASSWORD=
に記載されている。
1 2 3 4 5 |
$ docker compose exec -u root mysql bash $ mysql -u dbuser -p mysql> USE eccubedb; mysql> SELECT * FROM dtb_member; |
この投稿へのトラックバック
トラックバックはありません。
- トラックバック URL
この投稿へのコメント