From 5162a8da926167011d2fc0199cbb357de22c3e63 Mon Sep 17 00:00:00 2001 From: Kentaro Ohkouchi Date: Thu, 8 Apr 2021 16:02:25 +0900 Subject: [PATCH 1/2] =?UTF-8?q?docker-compose.yml=20=E3=81=AE=E5=88=86?= =?UTF-8?q?=E5=89=B2=E3=81=AB=E4=BC=B4=E3=81=86=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit see https://github.com/EC-CUBE/ec-cube/pull/4955 --- _pages/quickstart/install.md | 74 ++++++++++------ .../install_docker-compose_405orlower.md | 88 +++++++++++++++++++ 2 files changed, 135 insertions(+), 27 deletions(-) create mode 100644 _pages/quickstart/install_docker-compose_405orlower.md diff --git a/_pages/quickstart/install.md b/_pages/quickstart/install.md index 5fb35c9a..8f6c717b 100644 --- a/_pages/quickstart/install.md +++ b/_pages/quickstart/install.md @@ -218,13 +218,14 @@ docker run --name ec-cube -p "8080:80" -p "4430:443" --link container_mysql:db e --- ### 4.Docker Composeを使用してインストールする + +[EC-CUBE4.0.5以下のバージョンをお使いの場合はこちらをご覧ください。](/quickstart/install_docker-compose_405orlower) + **開発環境として関連サービス(DB、メールデバッグ環境等)も含め手軽に一括構築したい場合におすすめの方法です** 前提として、 [Docker Desktop のインストール](https://hub.docker.com){:target="_blank"} が必要です。 + 初期状態では SQLite3 を使用します -+ ローカルディレクトリをマウントします - ```shell cd path/to/ec-cube @@ -237,6 +238,7 @@ docker-compose exec -u www-data ec-cube bin/console eccube:install ``` 2回目以降の起動時も同様のコマンドを使用します。 + ```shell # コンテナの起動 docker-compose up -d @@ -245,46 +247,63 @@ docker-compose up -d docker-compose down ``` -#### 各種コンテナの使用 -EC-CUBE 4が動作するWebサーバを含め、以下のコンテナが簡単に起動できます。 +docker-compose を使用したインストールでは、基本的な設定は `.env` ではなく、 `docker-compose.yml` の `environment` の項目で設定します。(詳細は[.env の使用について](#env-の使用について)の項目をご覧ください。) -| コンテナ名 | 概要 | ブラウザアクセス例 | -| ----------- | -------------------------------- | -------------------------- | -| ec-cube | EC-CUBE 向けPHP Webサーバ | [http://localhost:8080](http://localhost:8080){:target="_blank"} | -| postgres | PostgreSQLデータベースサーバ | | -| mysql | MySQLデータベースサーバ | | -| mailcatcher | MailCatcher デバッグ用SMTPサーバ | [http://localhost:1080](http://localhost:1080){:target="_blank"} | +各種 `docker-compose.*.yml` を指定することで、ローカルディレクトリをマウントしたり、データベースを変更することができます。 -起動時にコンテナ名を列挙することで、各種コンテナを起動します。 -```shell -# 例:EC-CUBEとMySQLとphpMyAdminとMailCatcherを起動する -docker-compose up -d ec-cube mysql mailcatcher +#### PostgreSQL を使用する場合 -# 省略した場合はすべてのサービスが起動します -docker-compose up -d -``` -各種コンテナと連携させる場合は、以下の通り設定が必要です。 -##### メール送信を使用する場合 -`.env` にて `MAILER_URL=smtp://mailcatcher:1025` としておきます。 +`docker-compose.pgsql.yml` を指定します。 -##### PostgreSQL を使用する場合 -`.env` にて `DATABASE_URL=postgres://dbuser:secret@postgres/eccubedb` としておきます。 +``` shell +docker-compose -f docker-compose.yml -f docker-compose.pgsql.yml up -d +``` データベーススキーマを初期化していない場合は、以下の実行が必要です。 + ``` # スキーマ作成+初期データ投入 -docker-compose exec ec-cube composer run-script compile +docker-compose -f docker-compose.yml -f docker-compose.pgsql.yml exec ec-cube composer run-script compile ``` -##### MySQL を使用する場合 -`.env` にて `DATABASE_URL=mysql://dbuser:secret@mysql/eccubedb` としておきます。 +#### MySQL を使用する場合 + +`docker-compose.mysql.yml` を指定します。 + +``` shell +docker-compose -f docker-compose.yml -f docker-compose.mysql.yml up -d +``` データベーススキーマを初期化していない場合は、以下の実行が必要です。 + ``` # スキーマ作成+初期データ投入 -docker-compose exec ec-cube composer run-script compile +docker-compose -f docker-compose.yml -f docker-compose.mysql.yml exec ec-cube composer run-script compile +``` + +#### ローカルディレクトリをマウントする場合 + +`docker-compose.dev.yml` を指定します。 + ``` +## MySQL を使用する例 +docker-compose -f docker-compose.yml -f docker-compose.mysql.yml -f docker-compose.dev.yml up -d +``` + +#### .env の使用について + +docker-compose を使用したインストールでは、 `DATABASE_URL` などの各種環境変数は `docker-compose.*.yml` の `environment` の項目で設定します。 + +`.env` を使用したい場合は、以下のように設定し ec-cube コンテナを up することで利用できます。 + +1. `docker-compose*.yml` で `APP_ENV: ~` とする +1. ローカルディレクトリの `.env` の `APP_ENV` をコメントアウトする + +各種環境変数の設定される優先順位は以下の通りです。 +1. `docker-compose*.yml` の `environment` +1. ローカルディレクトリの `.env` (phpdotenv ではなく docker-compose 経由で設定される) +1. ec-cube コンテナの `.env` (phpdotenv で設定される) #### ファイルの同期 @@ -292,6 +311,7 @@ docker-composeを用いてインストールした場合、ホストのローカ なお、一部環境において著しいパフォーマンスの劣化が発生する場合があるため、以下のフォルダは同期の対象から除外しています。 - /var - - /vendor + - /vendor + - /node_modules 上記除外対象のフォルダについてはDocker Volumeを用いて別途永続化を行っています。 diff --git a/_pages/quickstart/install_docker-compose_405orlower.md b/_pages/quickstart/install_docker-compose_405orlower.md new file mode 100644 index 00000000..527b979f --- /dev/null +++ b/_pages/quickstart/install_docker-compose_405orlower.md @@ -0,0 +1,88 @@ +--- +layout: single +title: インストール方法 +keywords: install +tags: [quickstart, install, docker, docker-compose] +permalink: quickstart/install_docker-compose_405orlower +folder: quickstart +description: Docker Composeを使用してインストールする場合(EC-CUBE4.0.5以下)の説明です。 +--- +### Docker Composeを使用してインストールする(EC-CUBE4.0.5以下の場合) + +**開発環境として関連サービス(DB、メールデバッグ環境等)も含め手軽に一括構築したい場合におすすめの方法です** + +前提として、 [Docker Desktop のインストール](https://hub.docker.com){:target="_blank"} が必要です。 + ++ 初期状態では SQLite3 を使用します ++ ローカルディレクトリをマウントします + + +```shell +cd path/to/ec-cube + +# コンテナの起動 (初回のみビルド処理あり) +docker-compose up -d + +# 初回はインストールスクリプトを実行( **`www-data` ユーザで実行する点に注意!** ) +docker-compose exec -u www-data ec-cube bin/console eccube:install +``` + +2回目以降の起動時も同様のコマンドを使用します。 +```shell +# コンテナの起動 +docker-compose up -d + +# コンテナの停止 +docker-compose down +``` + +#### 各種コンテナの使用 +EC-CUBE 4が動作するWebサーバを含め、以下のコンテナが簡単に起動できます。 + +| コンテナ名 | 概要 | ブラウザアクセス例 | +| ----------- | -------------------------------- | -------------------------- | +| ec-cube | EC-CUBE 向けPHP Webサーバ | [http://localhost:8080](http://localhost:8080){:target="_blank"} | +| postgres | PostgreSQLデータベースサーバ | | +| mysql | MySQLデータベースサーバ | | +| mailcatcher | MailCatcher デバッグ用SMTPサーバ | [http://localhost:1080](http://localhost:1080){:target="_blank"} | + +起動時にコンテナ名を列挙することで、各種コンテナを起動します。 +```shell +# 例:EC-CUBEとMySQLとphpMyAdminとMailCatcherを起動する +docker-compose up -d ec-cube mysql mailcatcher + +# 省略した場合はすべてのサービスが起動します +docker-compose up -d +``` +各種コンテナと連携させる場合は、以下の通り設定が必要です。 +##### メール送信を使用する場合 +`.env` にて `MAILER_URL=smtp://mailcatcher:1025` としておきます。 + +##### PostgreSQL を使用する場合 +`.env` にて `DATABASE_URL=postgres://dbuser:secret@postgres/eccubedb` としておきます。 + +データベーススキーマを初期化していない場合は、以下の実行が必要です。 +``` +# スキーマ作成+初期データ投入 +docker-compose exec ec-cube composer run-script compile +``` + +##### MySQL を使用する場合 +`.env` にて `DATABASE_URL=mysql://dbuser:secret@mysql/eccubedb` としておきます。 + +データベーススキーマを初期化していない場合は、以下の実行が必要です。 +``` +# スキーマ作成+初期データ投入 +docker-compose exec ec-cube composer run-script compile +``` + + +#### ファイルの同期 + +docker-composeを用いてインストールした場合、ホストのローカルディレクトリとコンテナ上のファイルは同期します。`.env`等の設定ファイルについても、ホスト上のファイルを直接編集します。 + +なお、一部環境において著しいパフォーマンスの劣化が発生する場合があるため、以下のフォルダは同期の対象から除外しています。 + - /var + - /vendor + +上記除外対象のフォルダについてはDocker Volumeを用いて別途永続化を行っています。 From 9326b5635620882ca8a74cbff27f13b2dc2b6ff5 Mon Sep 17 00:00:00 2001 From: Kentaro Ohkouchi Date: Thu, 8 Apr 2021 16:23:09 +0900 Subject: [PATCH 2/2] =?UTF-8?q?docker-compose-owaspzap.yml=20=E3=81=AE?= =?UTF-8?q?=E3=83=95=E3=82=A1=E3=82=A4=E3=83=AB=E5=90=8D=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _pages/penetration-testing/quick_start.md | 22 ++++++++++--------- _pages/penetration-testing/testing/context.md | 6 ++--- .../penetration-testing/testing/settings.md | 2 +- 3 files changed, 16 insertions(+), 14 deletions(-) diff --git a/_pages/penetration-testing/quick_start.md b/_pages/penetration-testing/quick_start.md index 25e23cba..486b7d09 100644 --- a/_pages/penetration-testing/quick_start.md +++ b/_pages/penetration-testing/quick_start.md @@ -10,18 +10,20 @@ permalink: /penetration-testing/quick_start 1. [docker-compose を使用して EC-CUBE をインストールします](https://doc4.ec-cube.net/quickstart_install#4docker-compose%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B) 1. テスト用のデータを生成しておきます ```shell - ## APP_ENV=dev に設定 - sed -i.bak -e 's/APP_ENV=prod/APP_ENV=dev/g' ./.env + ## APP_ENV: dev に設定 + sed -i.bak -e 's/APP_ENV: "prod"/APP_ENV: "dev"/g' ./docker-compose.yml + docker-compose up -d # 変更を反映 ## customer を1件生成 - docker-compose -f docker-compose.yml -f docker-compose-owaspzap.yml exec ec-cube bin/console eccube:fixtures:generate --products=0 --customers=1 --orders=0 + docker-compose -f docker-compose.yml -f docker-compose.owaspzap.yml exec ec-cube bin/console eccube:fixtures:generate --products=0 --customers=1 --orders=0 ## メールアドレスを zap_user@example.com に変更 - docker-compose -f docker-compose.yml -f docker-compose-owaspzap.yml exec ec-cube bin/console doctrine:query:sql "UPDATE dtb_customer SET email = 'zap_user@example.com' WHERE id = 1;" - ## ZAP でテストする場合は APP_ENV=prod に設定しておく - sed -i.bak -e 's/APP_ENV=dev/APP_ENV=prod/g' ./.env + docker-compose -f docker-compose.yml -f docker-compose.owaspzap.yml exec ec-cube bin/console doctrine:query:sql "UPDATE dtb_customer SET email = 'zap_user@example.com' WHERE id = 1;" + ## ZAP でテストする場合は APP_ENV: prod に設定しておく + sed -i.bak -e 's/APP_ENV: "dev"/APP_ENV: "prod"/g' ./docker-compose.yml + docker-compose up -d # 変更を反映 ``` 1. OWASP ZAP コンテナを起動します ```shell - docker-compose -f docker-compose.yml -f docker-compose-owaspzap.yml up -d zap + docker-compose -f docker-compose.yml -f docker-compose.owaspzap.yml up -d zap ``` - *アドオンをアップデートするため、少し時間がかかります* - 起動してから、 Firefox 以外のブラウザで `http://localhost:8081/zap/` へアクセスすると、OWASP ZAP の管理画面が表示されます @@ -42,11 +44,11 @@ permalink: /penetration-testing/quick_start 1. コンテキストをインポートします。 ```shell ## 管理画面用 - docker-compose -f docker-compose.yml -f docker-compose-owaspzap.yml exec zap zap-cli -p 8090 context import /zap/wrk/admin.context + docker-compose -f docker-compose.yml -f docker-compose.owaspzap.yml exec zap zap-cli -p 8090 context import /zap/wrk/admin.context ## フロント(ログイン用) - docker-compose -f docker-compose.yml -f docker-compose-owaspzap.yml exec zap zap-cli -p 8090 context import /zap/wrk/front_login.context + docker-compose -f docker-compose.yml -f docker-compose.owaspzap.yml exec zap zap-cli -p 8090 context import /zap/wrk/front_login.context ## フロント(ゲスト用) - docker-compose -f docker-compose.yml -f docker-compose-owaspzap.yml exec zap zap-cli -p 8090 context import /zap/wrk/front_guest.context + docker-compose -f docker-compose.yml -f docker-compose.owaspzap.yml exec zap zap-cli -p 8090 context import /zap/wrk/front_guest.context ``` **Note:** *複数のコンテキストを同時にインポートすると、セッションが競合してログインできなくなる場合があるため注意* {: .notice--warning} diff --git a/_pages/penetration-testing/testing/context.md b/_pages/penetration-testing/testing/context.md index 94717815..6f04d68e 100644 --- a/_pages/penetration-testing/testing/context.md +++ b/_pages/penetration-testing/testing/context.md @@ -27,11 +27,11 @@ OWASP ZAP には、ログインが必要なページをテストするための ```shell ## 管理画面用 -docker-compose -f docker-compose.yml -f docker-compose-owaspzap.yml exec zap zap-cli -p 8090 context import /zap/wrk/admin.context +docker-compose -f docker-compose.yml -f docker-compose.owaspzap.yml exec zap zap-cli -p 8090 context import /zap/wrk/admin.context ## フロント(ログイン用) -docker-compose -f docker-compose.yml -f docker-compose-owaspzap.yml exec zap zap-cli -p 8090 context import /zap/wrk/front_login.context +docker-compose -f docker-compose.yml -f docker-compose.owaspzap.yml exec zap zap-cli -p 8090 context import /zap/wrk/front_login.context ## フロント(ゲスト用) -docker-compose -f docker-compose.yml -f docker-compose-owaspzap.yml exec zap zap-cli -p 8090 context import /zap/wrk/front_guest.context +docker-compose -f docker-compose.yml -f docker-compose.owaspzap.yml exec zap zap-cli -p 8090 context import /zap/wrk/front_guest.context ``` このコンテキストごとにテストを実施し、それぞれテスト結果のレポートを評価します。 diff --git a/_pages/penetration-testing/testing/settings.md b/_pages/penetration-testing/testing/settings.md index 5f1fad10..8bafa9a1 100644 --- a/_pages/penetration-testing/testing/settings.md +++ b/_pages/penetration-testing/testing/settings.md @@ -17,7 +17,7 @@ permalink: /penetration-testing/testing/settings **Note:** 後ほど詳細含めて追記します {: .notice} -### docker-compose-owaspzap.yml で自動設定される内容 +### docker-compose.owaspzap.yml で自動設定される内容 #### VOLUME マウントディレクトリ