# Docker compose 使って ec-cube ローカル開発

Git clone

# SSH
git@github.com:EC-CUBE/ec-cube.git

# HTTP
https://github.com/EC-CUBE/ec-cube.git

デフォルトでは Sqlite になりますが、mysql に変更して docker-compose.yml ファイルをカスタマイズします。

version: "3"

networks:
  backend:
    driver: bridge

volumes:
  mailcatcher-data:
    driver: local
  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:
      - 8000:80
    # restart: "always"
    volumes:
      ### 同期対象からコストの重いフォルダを除外 #####################
      - "var:/var/www/html/var"
      - "vendor:/var/www/html/vendor"
      - "node_modules:/var/www/html/node_modules"
      - ".:/var/www/html:cached"
    environment:
      # EC-CUBE environments
      USER_ID: ${UID:-}
      GROUP_ID: ${GID:-}
      APP_ENV: "dev"
      APP_DEBUG: 1
      DATABASE_URL: "mysql://dbuser:secret@mysql/eccubedb"
      DATABASE_SERVER_VERSION: 5.7
      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_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"
    depends_on:
      - mysql
    networks:
      - backend
  mysql:
    image: mysql:5.7
    platform: linux/amd64
    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

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    environment:
      PMA_HOST: mysql
      PMA_USER: dbuser
      PMA_PASSWORD: secret
    ports:
      - "8080:80"
    # restart: always
    depends_on:
      - mysql
    networks:
      - backend

  ### Mailcatcher ##################################
  mailcatcher:
    image: schickling/mailcatcher
    ports:
      - "1080:1080"
      - "1025:1025"
    networks:
      - backend

# コンテナ起動

# コンテナの起動
docker-compose up -d

# 初回はインストールスクリプトを実行
# `www-data` ユーザで実行
# eccube:install コマンドの対話モードは使用ないので、非対話モード(-n オプション)を付与
docker-compose exec -u www-data ec-cube bin/console eccube:install -n
2023-04-23
  • ec-cube