Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docker-compose ファイルを分割に伴う修正 #183

Merged
merged 2 commits into from
Apr 14, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 12 additions & 10 deletions _pages/penetration-testing/quick_start.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
## メールアドレスを [email protected] に変更
docker-compose -f docker-compose.yml -f docker-compose-owaspzap.yml exec ec-cube bin/console doctrine:query:sql "UPDATE dtb_customer SET email = '[email protected]' 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 = '[email protected]' 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 の管理画面が表示されます
Expand All @@ -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}
Expand Down
6 changes: 3 additions & 3 deletions _pages/penetration-testing/testing/context.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
```

このコンテキストごとにテストを実施し、それぞれテスト結果のレポートを評価します。
Expand Down
2 changes: 1 addition & 1 deletion _pages/penetration-testing/testing/settings.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ permalink: /penetration-testing/testing/settings
**Note:** 後ほど詳細含めて追記します
{: .notice}

### docker-compose-owaspzap.yml で自動設定される内容
### docker-compose.owaspzap.yml で自動設定される内容

#### VOLUME マウントディレクトリ

Expand Down
74 changes: 47 additions & 27 deletions _pages/quickstart/install.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -237,6 +238,7 @@ docker-compose exec -u www-data ec-cube bin/console eccube:install
```

2回目以降の起動時も同様のコマンドを使用します。

```shell
# コンテナの起動
docker-compose up -d
Expand All @@ -245,53 +247,71 @@ 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 で設定される)

#### ファイルの同期

docker-composeを用いてインストールした場合、ホストのローカルディレクトリとコンテナ上のファイルは同期します。`.env`等の設定ファイルについても、ホスト上のファイルを直接編集します。

なお、一部環境において著しいパフォーマンスの劣化が発生する場合があるため、以下のフォルダは同期の対象から除外しています。
- /var
- /vendor
- /vendor
- /node_modules

上記除外対象のフォルダについてはDocker Volumeを用いて別途永続化を行っています。
88 changes: 88 additions & 0 deletions _pages/quickstart/install_docker-compose_405orlower.md
Original file line number Diff line number Diff line change
@@ -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を用いて別途永続化を行っています。