プロジェクト

全般

プロフィール

環境構築 (Docker) » 履歴 » バージョン 12

市原 健司, 2026/07/07 17:37

1 9 市原 健司
h1. 環境構築(Docker)
2 1 市原 健司
3
---
4
5 9 市原 健司
{{toc}}
6
7
---
8
9 1 市原 健司
h2. 前作業
10
11
12
h3. Docker Desktopインストール
13
14
* ダウンロードは下記公式からWindows用を選択  
15
 [Docker Desktop公式](https://www.docker.com/ja-jp/products/docker-desktop/)
16
17
h3. .gitconfigの確認
18
19
* 下記フォルダに.gitconfigが存在していることを確認
20 3 市原 健司
C:\Users\ユーザー名
21 1 市原 健司
22
* 存在しない場合はPowerShellを起動して下記コマンドで作成と設定
23
** 名前とメールアドレスは自身に置き換える(gitの履歴などに表示される内容)
24
<pre >
25
git config --global user.name "名前"
26
git config --global user.email "メールアドレス"
27
</pre>
28
29 5 市原 健司
h3. VSCode拡張機能のインストール
30
31
* VSCodeを起動し拡張機能タブから "PHP DEBUG"を検索しインストール
32
33 1 市原 健司
---
34
35
h2. 環境構築
36 2 市原 健司
37
h3. giteaよりClone
38
39
[giteaリンク](https://gitea.sowel.info/sowel/SilCity)
40
41
* プロジェクトフォルダ作成
42
  C:\work\Docker\プロジェクトフォルダ(任意の名前 ※英数字推奨)
43
* プロジェクトフォルダにクローン実施
44
  クローン元のgitは下記
45
  https://gitea.sowel.info/sowel/SilCity.git
46
  giteaのアカウント登録を行っていなければ画面右上に登録ボタンより登録
47
** クローンの流れ
48 3 市原 健司
作成したプロジェクトフォルダをエクスプローラで開く
49
右クリック→ターミナルで開くを選択しコマンドプロンプトを表示し下記コマンドを実行しクローン
50 2 市原 健司
<pre>
51
git clone https://gitea.sowel.info/sowel/SilCity.git
52
</pre>
53
ユーザー名とパスワードの入力を求められるのでgiteaのユーザー名とパスワードを入力
54
失敗した場合はパスワードがトークンの場合があるので下記トークンを作成
55
giteaのページ右上の自身のアイコン→設定→アプリケーションタブ からアクセストークンを作成
56 1 市原 健司
作成後に表示される文字列をクローン時のパスワードに使用
57
※この文字列は1度しか表示されないのでコピペして自身で保管しておくこと
58
59
** プロジェクト
60 5 市原 健司
  本番環境と同様に本番用とテスト用の2つのプロジェクトが存在しそれぞれ下記
61
  本番用
62
  wordpress-silcity
63
  テスト用
64
  wordpress-silcitytest
65 3 市原 健司
66
h3. 証明書のインストール
67
68 8 市原 健司
  証明書(ルートCA)をインストール(初回のみ 各端末で1回)
69
  'https://localhost' および 'https://localhost:8443' にアクセス時に警告ページが表示を回避
70
  本番用、テスト用のプロジェクトにそれぞれ格納されているが本番用の1度でよい。
71 3 市原 健司
* インストールの流れ
72
** wordpress-silcity\caroot\rootCA.crt をダブルクリックしダイアログ表示
73
(または右クリック →「証明書のインストール」)
74
** 「証明書のインストール」をクリックし、証明書のインポートウィザードを開始
75
** 格納場所は「ローカルコンピューター」を選択して「次へ」(管理者権限の確認が出る場合は「はい」)
76
** 「証明書をすべて次のストアに配置する」を選択し、「参照」から「信頼されたルート証明機関」を指定して「次へ」
77 1 市原 健司
** 「完了」をクリック「正しくインポートされました」と表示され登録完了
78 9 市原 健司
79
h3. wp-config設定
80
81
  下記ファイルで本番用、テスト用ソースのDB接続設定などを行う。giteaからクローンした場合初期コミットのソースは設定済。
82
  public_html\wp-config.php
83
84
** DB接続情報の変更
85
  下記の項目をコメントアウト
86
<pre><code class="php">
87
define('DB_NAME', $connectstr_dbname);
88
define('DB_USER', $connectstr_dbusername);
89
define('DB_PASSWORD',$connectstr_dbpassword);
90
define('DB_HOST', $connectstr_dbhost);
91
</code></pre>
92
  下記の内容を追加
93
  本番用(wordpress-silcity)
94
<pre><code class="php">
95
define('DB_NAME', 'silcitydb');
96
define('DB_USER', 'mtbrtcghtp');
97
define('DB_PASSWORD','I6MkjFOsSBWwV$oI');
98
define('DB_HOST', 'mariadb');
99
</code></pre>
100
  テスト用(wordpress-silcitytest)
101
<pre><code class="php">
102
define('DB_NAME', 'silcitytestdb');
103
define('DB_USER', 'mtbrtcghtp');
104
define('DB_PASSWORD','I6MkjFOsSBWwV$oI');
105
define('DB_HOST', 'mariadb');
106
</code></pre>
107
** $mysql_sslconnectの処理変更
108
   下記処理の'true'部分を'false'に変更(本番用、テスト用双方)
109
<pre><code class="php">
110
$mysql_sslconnect = (getenv('DB_SSL_CONNECTION')) ? getenv('DB_SSL_CONNECTION') : 'true';
111
</code></pre>
112
** アクセスURLの設定追加
113
  下記コメントの上に設定を追加する
114
<pre><code class="php">
115
/* That's all, stop editing! Happy publishing. */
116
</code></pre>
117
  追加内容本番用(wordpress-silcity)
118
<pre><code class="php">
119
define('WP_HOME',    'https://localhost');
120
define('WP_SITEURL', 'https://localhost');
121
$_SERVER['HTTPS'] = 'on';
122
</code></pre>
123
  追加内容テスト用(wordpress-silcitytest)
124
<pre><code class="php">
125
define('WP_HOME',    'https://localhost:8443');
126
define('WP_SITEURL', 'https://localhost:8443');
127
$_SERVER['HTTPS'] = 'on';
128
</code></pre>
129 3 市原 健司
130 1 市原 健司
h3. DB設定
131 3 市原 健司
132 8 市原 健司
  DB設定は本番用、テスト用の両方の環境でそれぞれ行う
133 1 市原 健司
* DBとユーザーの作成(phpMyAdmin)
134 3 市原 健司
** コンテナの起動
135 8 市原 健司
  wordpress-silcityフォルダ(テスト用の場合wordpress-silcitytest)をエクスプローラで表示し右クリック→ターミナルで開く
136 3 市原 健司
  コマンドプロンプトで下記コマンドを実行しコンテナを起動
137 8 市原 健司
  下記はコンテナをビルドし起動するコマンドなので本番用、テスト用両方ビルド後は
138
  Docker Desktopからの起動でよい
139 3 市原 健司
<pre>
140
docker compose up --build -d
141 1 市原 健司
</pre>
142
** phpMyAdmin へアクセスしログイン
143
  https://localhost/phpmyadmin/
144 3 市原 健司
  ユーザー名:root
145
  パスワード:(空欄のまま)
146 8 市原 健司
  URLは下記のように書き換え
147
  本番用:localhost
148
  テスト用:localhost:8443
149 1 市原 健司
** DBの作成
150 6 市原 健司
  「データベース」タブでDBを作成(本番用:silcitydb テスト用:silcitytestdb)
151
  照合順序は utf8mb4_unicode_ci を選択
152 1 市原 健司
** ユーザーの作成
153 6 市原 健司
  phpMyAdmin画面左上の家アイコンよりホーム画面へ移動
154
  「ユーザーアカウント」タブ→「ユーザーアカウントを追加する」で作成
155
  作成時の各項目の内容は下記のように入力し画面下部の実行ボタンで作成
156
  ユーザー名:mtbrtcghtp
157
  ホスト名:初期状態(すべてのホスト %)
158 1 市原 健司
  パスワード(再入力も同様):I6MkjFOsSBWwV$oI
159 6 市原 健司
** ユーザーの権限設定
160 5 市原 健司
  「ユーザーアカウント」タブの作成したユーザーを選択
161 6 市原 健司
  「データベース」を選択し「以下のデータベースに権限追加」で作成したDBを選択し実行ボタンクリック
162
  「データベース固有の権限」'□すべてチェックする'をチェックして実行ボタンクリック
163 8 市原 健司
   次回以降のDBへのアクセスは作成したユーザーで行う
164 7 市原 健司
* DBデータ作成
165
** ダンプファイルの準備
166
  下記フォルダから C:\work\ フォルダにコピー
167
  \\SWL-FS\案件-sr(共有)\202606_SRラーニングポータル保守\Dockerテスト用
168
  本番用:20260626_091903_silcity.sql.gz
169
  テスト用:20260625_104030_silcitytest.sql.gz
170
** ダンプファイルをコンテナ内にコピー
171
  事前にコンテナを起動しておき、プロジェクトフォルダ直下でターミナルで開いておく
172
  下記コマンドでダンプファイルをコンテナ内にコピー
173
  ※本番用なのでテスト用の場合はファイル名やコンテナ名の箇所を適宜書き換えること
174
<pre>
175
docker cp "C:/work/20260626_091903_silcity.sql.gz" wordpress-silcitytest-mariadb-1:/tmp/20260626_091903_silcity.sql.gz
176
</pre>
177
** ダンプファイルの流し込み
178
  下記コマンドでコンテナ内にコピーしたダンプファイルをDBに流す
179 1 市原 健司
  ※本番用なのでテスト用の場合はファイル名やコンテナ名の箇所を適宜書き換えること
180
<pre>
181
docker exec -it wordpress-silcity-mariadb-1 bash
182
gunzip < /tmp/20260626_091903_silcity.sql.gz | mysql -u root silcitydb
183
</pre>
184
* srdbによるDBデータの置換
185 8 市原 健司
  DBデータのURLのドメインを開発用のlocalhostやlocalhost:8443に置換
186
** 置換実行
187
  事前にコンテナを起動しておき、プロジェクトフォルダ直下でターミナルで開いておく
188
  下記コマンドで置換実行(お試し --dry-run)
189
  ※本番用なのでテスト用の場合は置換する文字列やコンテナ名の箇所を適宜書き換えること
190
   (次項の補足に記載)
191
<pre>
192
docker exec -it wordpress-silcity-php-1 bash
193
cd /var/www/srdb
194
php srdb.cli.php -h mariadb -n silcitydb -u mtbrtcghtp -p 'I6MkjFOsSBWwV$oI' -s silcity.sr-net.co.jp -r localhost --dry-run
195
</pre>
196
  お試しの置換が正常完了確認後、下記で本置換
197
<pre>
198
php srdb.cli.php -h mariadb -n silcitydb -u mtbrtcghtp -p 'I6MkjFOsSBWwV$oI' -s silcity.sr-net.co.jp -r localhost
199
</pre>
200
** 補足
201
  置換のコマンドの各項目について
202
  -h ホスト名
203
  -n DB名
204
  -u ユーザー名
205
  -p パスワード
206
  -s 置換元文字列
207
  -r 置換先文字列
208
  置換のコマンドでは -n -s -rの部分のみ本番用とテスト用で変更が必要
209
  本番用:-n silcitydb -s silcity.sr-net.co.jp -r localhost
210
  テスト用:-n silcitytestdb -s silcity-test.azurewebsites.net -r localhost:8443
211
212
h3. SSOプラグインの削除
213
214
  下記のフォルダが存在する場合フォルダごと削除(初期コミット時のソースからは削除済)
215
  public_html\wp-content\plugins\miniorange-saml-20-single-sign-on
216
217
h3. 画面表示の確認
218
219
  Docker Desktopでwordpress-silcitytest、wordpress-silcitytestのコンテナを起動後
220
  画面にアクセスし表示を確認
221
* 本番用(wordpress-silcitytest)
222
  [トップ画面](https://localhost/)
223
  [管理画面](https://localhost/wp-login.php)
224
  [phpMyAdmin](https://localhost/phpmyadmin}
225
* テスト用(wordpress-silcitytest)
226
  [トップ画面](https://localhost:8443/)
227
  [管理画面](https://localhost:8443/wp-login.php)
228
  [phpMyAdmin](https://localhost:8443/phpmyadmin)
229 10 市原 健司
* 管理者画面ID/PW
230
  ID:WPadmin
231 1 市原 健司
  PW:xxQX98eP
232 12 市原 健司
233
h3. デバッグの確認
234
235
* 確認方法
236
  それぞれのコンテナを起動
237
  VSCodeでwordpress-silcityまたはwordpress-silcitytestフォルダを開く
238
  VSCode画面左のデバッグタブをクリックし実行とデバッグ ▷ボタンクリック
239
  public_html\wp-content\themes\learning-portal\front-page.php の下記処理にブレークポイントを設定
240
  トップ画面にアクセスし、設定した箇所で止まることを確認
241
<pre><code class="php">
242
$uri = get_template_directory_uri();
243
</code></pre>
244 11 市原 健司
245
h3. ソースやDBデータの入れ替え時
246
247
  最新取得したソースやDBのデータを上記で構築した既存環境に反映させる場合に実施
248
* ソース入れ替え時
249
  既に構築済の環境のpublic_htmlフォルダ内のファイルを削除またはバックアップとして移動
250
  入れ替えるソースのwwwrootフォルダ内のファイルをすべてコピーしてpublic_htmlに格納
251
  wp-config.phpの内容をwp-config設定項目の内容に変更
252
  SSOプラグインの削除項目内容実施
253
* DBデータ入れ替え時
254
** 既に入っているデータの削除
255
  プロジェクトフォルダでターミナルを開いて実行する
256
  下記のコマンドでコンテナの削除とDB(作成したユーザー等も含む)の削除
257
<pre>
258
docker compose down -v
259
</pre>
260
** DB設定項目の内容を再度実施
261
  コンテナにコピー、流すファイルは取得したダンプファイルに読み替えて実施  
262
263
h3. その他資料・注意事項等
264
265
* 注意事項
266
  初期コミット時ソース内容ではphp.iniの display_errors = Off となっているので
267
  開発時は on に変更した方がよい
268
  
269
  また、ソースのpublic_html\wp-content\plugins\gamipress-fixed-page-reward\index.php ファイル
270
  にて下記処理で未定義の変数($object_id)を使用している為エラーが出ているので注意
271
  php.iniの設定でエラーが非表示になっている
272
<pre><code class="php">
273
/** ===== UIにイベントを登録(ラベルは自由) ===== */
274
add_filter( 'gamipress_activity_triggers', function( $triggers ) {
275
    $group = 'ページ閲覧';
276
    $triggers[ $group ] = $triggers[ $group ] ?? [];
277
    $triggers[ $group ][ GP_EVENT_KEY ] = '任意の投稿/固定ページを閲覧(ページごとカウント)' . get_the_title( $object_id );
278
    return $triggers;
279
} );
280
281
add_filter( 'gamipress_event_listeners', function( $listeners ) {
282
    $listeners[ GP_EVENT_KEY ] = array(
283
        'label'       => '任意の投稿/固定ページを閲覧(ページごとカウント)' . get_the_title( $object_id ),
284
        'listener'    => GP_EVENT_KEY,
285
        'description' => '単一コンテンツ閲覧時に発火。specific_id にページIDを渡します。',
286
        'supports'    => array( 'points' => true, 'achievements' => true ),
287
    );
288
    return $listeners;
289
} );
290
</code></pre>
291
* 手順書
292
  下記フォルダ内SilCity_Docker_手順書.docx内容にて構築、本ページ編集
293
  \\SWL-FS\案件-webソリューション(共有)\Docker
294
* Docker
295
  下記ファイルをそれぞれ本番用、テスト用のDockerとして使用
296
  
297
  ・本番用
298
   \\SWL-FS\案件-webソリューション(共有)\Docker\wordpress-silcity.zip
299
  ・テスト用
300
   \\SWL-FS\案件-webソリューション(共有)\Docker\wordpress-silcitytest.zip
301
* 初期コミット時使用ソース・DBダンプファイル
302
  
303
  ・本番用
304
   \\SWL-FS\案件-sr(共有)\202606_SRラーニングポータル保守\Dockerテスト用\20260626_091903_silcity.tar.gz
305
   \\SWL-FS\案件-sr(共有)\202606_SRラーニングポータル保守\Dockerテスト用\20260626_091903_silcity.sql.gz
306
  ・テスト用
307
   \\SWL-FS\案件-sr(共有)\202606_SRラーニングポータル保守\Dockerテスト用\20260625_104030_silcitytest.tar.gz
308
   \\SWL-FS\案件-sr(共有)\202606_SRラーニングポータル保守\Dockerテスト用\20260625_104030_silcitytest.sql.gz