0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【ECCUBE4 + Docker Compose】途中からプロジェクト入った場合のローカル環境構築手順

Posted at

背景

ECCUBE4プロジェクトの環境構築にエラーで毎回悩まされるので備忘録

大まかな流れ

  1. プロジェクトのclone
  2. docker-compose.yml の調整
  3. .envの調整
  4. コンテナ起動、ビルド
  5. DBへデータインポート
  6. その他調整

1. プロジェクトのclone

gitがある場合はgitでclone。
FTPの場合はlogやバイナリ、キャッシュ系は容量が大きいので避けてダウンロード。

2. docker-compose.ymlの の調整

docker-compose.yml
version: "3"

networks:
  backend:
    driver: bridge

volumes:
  mailcatcher-data:
    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/www/html #ローカルと同期するために追記

      ### 同期対象からコストの重いフォルダを除外 #####################
      - "var:/var/www/html/var"
      - "vendor:/var/www/html/vendor"
      - "node_modules:/var/www/html/node_modules"
    environment:
      # .envや他のymlに記載する部分はコメントアウト
      # EC-CUBE environments
      # APP_ENV: "dev"
      # APP_DEBUG: 1
      # DATABASE_URL: "sqlite:///var/eccube.db"
      # DATABASE_SERVER_VERSION: 3
      # DATABASE_CHARSET: 'utf8'
      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"
    networks:
      - backend

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

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: 5.7
      DATABASE_CHARSET: 'utf8mb4'

  mysql:
    image: mysql:5.7
    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とか追加したい場合はここに ##

ポスグレの場合はpgAdminとか追加すると楽。

3. .envの調整

.env
# This file is a "template" of which env vars needs to be defined in your configuration or in an .env file
# Set variables here that may be different on each deployment target of the app, e.g. development, staging, production.
# https://symfony.com/doc/current/best_practices/configuration.html#infrastructure-related-configuration

###> symfony/framework-bundle ###
# For production servers, use: "APP_ENV=prod" and "APP_DEBUG=0"
# For local development, use: "APP_ENV=dev" and "APP_DEBUG=1"
APP_ENV=dev
APP_DEBUG=1

#TRUSTED_PROXIES=127.0.0.1,127.0.0.2
#TRUSTED_HOSTS=^localhost$,^example\.com$
###< symfony/framework-bundle ###

###> doctrine/doctrine-bundle ###
# Format described at http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url
# For a sqlite database, use: "sqlite:///%kernel.project_dir%/var/data.db"
# Set "serverVersion" to your server version to avoid edge-case exceptions and extra database calls

# MySQLの場合はここのコメントアウトを外す
DATABASE_URL=mysql://dbuser:secret@mysql/eccubedb

# DATABASE_URL=postgresql://postgres/eccubedb?user=dbuser&password=secret

# The version of your database engine
DATABASE_SERVER_VERSION=3

# The charset of your database engine
DATABASE_CHARSET=utf8mb4
###< doctrine/doctrine-bundle ###

###> symfony/mailer ###
MAILER_DSN=sendmail://localhost
###< symfony/mailer ###

###> APPLICATION CONFIG ###
# EC-CUBE Configs. The default value is defined in app/config/packages/eccube.yaml.
# Please remove commented out and enable it if you want to change.

#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_ADMIN_DENY_HOSTS=[]
#ECCUBE_FORCE_SSL=false
#ECCUBE_TEMPLATE_CODE=default
#ECCUBE_AUTH_MAGIC=<change.me>
#ECCUBE_COOKIE_NAME=eccube
#ECCUBE_COOKIE_PATH=/
#ECCUBE_COOKIE_LIFETIME=0
#ECCUBE_GC_MAXLIFETIME=1440
#ECCUBE_ADMIN_USER=admin
#ECCUBE_ADMIN_PASS=password
#ECCUBE_2FA_ENABLED=true
#ECCUBE_2FA_COOKIE_NAME=eccube_2fa
#ECCUBE_2FA_EXPIRE=14
#ECCUBE_RESTRICT_FILE_UPLOAD=0

###< APPLICATION CONFIG ###

ECCUBE_TEMPLATE_CODE=default
ECCUBE_LOCALE=ja

コンテナ起動テスト

bash
$ docker compose -f docker-compose.mysql.yml -f docker-compose.yml up -d

どこかのコンテナが死んだら原因調査→解決
composer install してないとか言われるけど、大体違う。
なんかのファイルが足りなかったり、DBのアクセス情報が間違ってたりする。

DBへデータインポート

MySQLの場合はphpMyAdmin、postgreSQLの場合はpgAdminとかを使用してデータをインポートする(dumpファイル使って。)
できない場合はDBに直接入ってインポート。

これを行うと、フロントを構成してる要素やプラグイン系の情報も読み込まれる。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?