プロジェクト

全般

プロフィール

環境構築 (Docker) » 履歴 » リビジョン 11

リビジョン 10 (市原 健司, 2026/07/07 16:08) → リビジョン 11/12 (市原 健司, 2026/07/07 17:22)

h1. 環境構築(Docker) 

 --- 

 {{toc}} 

 --- 

 h2. 前作業 


 h3. Docker Desktopインストール 

 * ダウンロードは下記公式からWindows用を選択   
  [Docker Desktop公式](https://www.docker.com/ja-jp/products/docker-desktop/) 

 h3. .gitconfigの確認 

 * 下記フォルダに.gitconfigが存在していることを確認 
 C:\Users\ユーザー名 

 * 存在しない場合はPowerShellを起動して下記コマンドで作成と設定 
 ** 名前とメールアドレスは自身に置き換える(gitの履歴などに表示される内容) 
 <pre > 
 git config --global user.name "名前" 
 git config --global user.email "メールアドレス" 
 </pre> 

 h3. VSCode拡張機能のインストール 

 * VSCodeを起動し拡張機能タブから "PHP DEBUG"を検索しインストール 

 --- 

 h2. 環境構築 

 h3. giteaよりClone 

 [giteaリンク](https://gitea.sowel.info/sowel/SilCity) 

 * プロジェクトフォルダ作成 
   C:\work\Docker\プロジェクトフォルダ(任意の名前 ※英数字推奨) 
 * プロジェクトフォルダにクローン実施 
   クローン元のgitは下記 
   https://gitea.sowel.info/sowel/SilCity.git 
   giteaのアカウント登録を行っていなければ画面右上に登録ボタンより登録 
 ** クローンの流れ 
 作成したプロジェクトフォルダをエクスプローラで開く 
 右クリック→ターミナルで開くを選択しコマンドプロンプトを表示し下記コマンドを実行しクローン 
 <pre> 
 git clone https://gitea.sowel.info/sowel/SilCity.git 
 </pre> 
 ユーザー名とパスワードの入力を求められるのでgiteaのユーザー名とパスワードを入力 
 失敗した場合はパスワードがトークンの場合があるので下記トークンを作成 
 giteaのページ右上の自身のアイコン→設定→アプリケーションタブ からアクセストークンを作成 
 作成後に表示される文字列をクローン時のパスワードに使用 
 ※この文字列は1度しか表示されないのでコピペして自身で保管しておくこと 

 ** プロジェクト 
   本番環境と同様に本番用とテスト用の2つのプロジェクトが存在しそれぞれ下記 
   本番用 
   wordpress-silcity 
   テスト用 
   wordpress-silcitytest 

 h3. 証明書のインストール 

   証明書(ルートCA)をインストール(初回のみ 各端末で1回) 
   'https://localhost' および 'https://localhost:8443' にアクセス時に警告ページが表示を回避 
   本番用、テスト用のプロジェクトにそれぞれ格納されているが本番用の1度でよい。 
 * インストールの流れ 
 ** wordpress-silcity\caroot\rootCA.crt をダブルクリックしダイアログ表示 
 (または右クリック →「証明書のインストール」) 
 ** 「証明書のインストール」をクリックし、証明書のインポートウィザードを開始 
 ** 格納場所は「ローカルコンピューター」を選択して「次へ」(管理者権限の確認が出る場合は「はい」) 
 ** 「証明書をすべて次のストアに配置する」を選択し、「参照」から「信頼されたルート証明機関」を指定して「次へ」 
 ** 「完了」をクリック「正しくインポートされました」と表示され登録完了 

 h3. wp-config設定 

   下記ファイルで本番用、テスト用ソースのDB接続設定などを行う。giteaからクローンした場合初期コミットのソースは設定済。 
   public_html\wp-config.php 

 ** DB接続情報の変更 
   下記の項目をコメントアウト 
 <pre><code class="php"> 
 define('DB_NAME', $connectstr_dbname); 
 define('DB_USER', $connectstr_dbusername); 
 define('DB_PASSWORD',$connectstr_dbpassword); 
 define('DB_HOST', $connectstr_dbhost); 
 </code></pre> 
   下記の内容を追加 
   本番用(wordpress-silcity) 
 <pre><code class="php"> 
 define('DB_NAME', 'silcitydb'); 
 define('DB_USER', 'mtbrtcghtp'); 
 define('DB_PASSWORD','I6MkjFOsSBWwV$oI'); 
 define('DB_HOST', 'mariadb'); 
 </code></pre> 
   テスト用(wordpress-silcitytest) 
 <pre><code class="php"> 
 define('DB_NAME', 'silcitytestdb'); 
 define('DB_USER', 'mtbrtcghtp'); 
 define('DB_PASSWORD','I6MkjFOsSBWwV$oI'); 
 define('DB_HOST', 'mariadb'); 
 </code></pre> 
 ** $mysql_sslconnectの処理変更 
    下記処理の'true'部分を'false'に変更(本番用、テスト用双方) 
 <pre><code class="php"> 
 $mysql_sslconnect = (getenv('DB_SSL_CONNECTION')) ? getenv('DB_SSL_CONNECTION') : 'true'; 
 </code></pre> 
 ** アクセスURLの設定追加 
   下記コメントの上に設定を追加する 
 <pre><code class="php"> 
 /* That's all, stop editing! Happy publishing. */ 
 </code></pre> 
   追加内容本番用(wordpress-silcity) 
 <pre><code class="php"> 
 define('WP_HOME',      'https://localhost'); 
 define('WP_SITEURL', 'https://localhost'); 
 $_SERVER['HTTPS'] = 'on'; 
 </code></pre> 
   追加内容テスト用(wordpress-silcitytest) 
 <pre><code class="php"> 
 define('WP_HOME',      'https://localhost:8443'); 
 define('WP_SITEURL', 'https://localhost:8443'); 
 $_SERVER['HTTPS'] = 'on'; 
 </code></pre> 

 h3. DB設定 

   DB設定は本番用、テスト用の両方の環境でそれぞれ行う 
 * DBとユーザーの作成(phpMyAdmin) 
 ** コンテナの起動 
   wordpress-silcityフォルダ(テスト用の場合wordpress-silcitytest)をエクスプローラで表示し右クリック→ターミナルで開く 
   コマンドプロンプトで下記コマンドを実行しコンテナを起動 
   下記はコンテナをビルドし起動するコマンドなので本番用、テスト用両方ビルド後は 
   Docker Desktopからの起動でよい 
 <pre> 
 docker compose up --build -d 
 </pre> 
 ** phpMyAdmin へアクセスしログイン 
   https://localhost/phpmyadmin/ 
   ユーザー名:root 
   パスワード:(空欄のまま) 
   URLは下記のように書き換え 
   本番用:localhost 
   テスト用:localhost:8443 
 ** DBの作成 
   「データベース」タブでDBを作成(本番用:silcitydb テスト用:silcitytestdb) 
   照合順序は utf8mb4_unicode_ci を選択 
 ** ユーザーの作成 
   phpMyAdmin画面左上の家アイコンよりホーム画面へ移動 
   「ユーザーアカウント」タブ→「ユーザーアカウントを追加する」で作成 
   作成時の各項目の内容は下記のように入力し画面下部の実行ボタンで作成 
   ユーザー名:mtbrtcghtp 
   ホスト名:初期状態(すべてのホスト %) 
   パスワード(再入力も同様):I6MkjFOsSBWwV$oI 
 ** ユーザーの権限設定 
   「ユーザーアカウント」タブの作成したユーザーを選択 
   「データベース」を選択し「以下のデータベースに権限追加」で作成したDBを選択し実行ボタンクリック 
   「データベース固有の権限」'□すべてチェックする'をチェックして実行ボタンクリック 
    次回以降のDBへのアクセスは作成したユーザーで行う 
 * DBデータ作成 
 ** ダンプファイルの準備 
   下記フォルダから C:\work\ フォルダにコピー 
   \\SWL-FS\案件-sr(共有)\202606_SRラーニングポータル保守\Dockerテスト用 
   本番用:20260626_091903_silcity.sql.gz 
   テスト用:20260625_104030_silcitytest.sql.gz 
 ** ダンプファイルをコンテナ内にコピー 
   事前にコンテナを起動しておき、プロジェクトフォルダ直下でターミナルで開いておく 
   下記コマンドでダンプファイルをコンテナ内にコピー 
   ※本番用なのでテスト用の場合はファイル名やコンテナ名の箇所を適宜書き換えること 
 <pre> 
 docker cp "C:/work/20260626_091903_silcity.sql.gz" wordpress-silcitytest-mariadb-1:/tmp/20260626_091903_silcity.sql.gz 
 </pre> 
 ** ダンプファイルの流し込み 
   下記コマンドでコンテナ内にコピーしたダンプファイルをDBに流す 
   ※本番用なのでテスト用の場合はファイル名やコンテナ名の箇所を適宜書き換えること 
 <pre> 
 docker exec -it wordpress-silcity-mariadb-1 bash 
 gunzip < /tmp/20260626_091903_silcity.sql.gz | mysql -u root silcitydb 
 </pre> 
 * srdbによるDBデータの置換 
   DBデータのURLのドメインを開発用のlocalhostやlocalhost:8443に置換 
 ** 置換実行 
   事前にコンテナを起動しておき、プロジェクトフォルダ直下でターミナルで開いておく 
   下記コマンドで置換実行(お試し --dry-run) 
   ※本番用なのでテスト用の場合は置換する文字列やコンテナ名の箇所を適宜書き換えること 
    (次項の補足に記載) 
 <pre> 
 docker exec -it wordpress-silcity-php-1 bash 
 cd /var/www/srdb 
 php srdb.cli.php -h mariadb -n silcitydb -u mtbrtcghtp -p 'I6MkjFOsSBWwV$oI' -s silcity.sr-net.co.jp -r localhost --dry-run 
 </pre> 
   お試しの置換が正常完了確認後、下記で本置換 
 <pre> 
 php srdb.cli.php -h mariadb -n silcitydb -u mtbrtcghtp -p 'I6MkjFOsSBWwV$oI' -s silcity.sr-net.co.jp -r localhost 
 </pre> 
 ** 補足 
   置換のコマンドの各項目について 
   -h ホスト名 
   -n DB名 
   -u ユーザー名 
   -p パスワード 
   -s 置換元文字列 
   -r 置換先文字列 
   置換のコマンドでは -n -s -rの部分のみ本番用とテスト用で変更が必要 
   本番用:-n silcitydb -s silcity.sr-net.co.jp -r localhost 
   テスト用:-n silcitytestdb -s silcity-test.azurewebsites.net -r localhost:8443 

 h3. SSOプラグインの削除 

   下記のフォルダが存在する場合フォルダごと削除(初期コミット時のソースからは削除済) 
   public_html\wp-content\plugins\miniorange-saml-20-single-sign-on 

 h3. 画面表示の確認 

   Docker Desktopでwordpress-silcitytest、wordpress-silcitytestのコンテナを起動後 
   画面にアクセスし表示を確認 
 * 本番用(wordpress-silcitytest) 
   [トップ画面](https://localhost/) 
   [管理画面](https://localhost/wp-login.php) 
   [phpMyAdmin](https://localhost/phpmyadmin} 
 * テスト用(wordpress-silcitytest) 
   [トップ画面](https://localhost:8443/) 
   [管理画面](https://localhost:8443/wp-login.php) 
   [phpMyAdmin](https://localhost:8443/phpmyadmin) 

 * 管理者画面ID/PW 
   ID:WPadmin 
   PW:xxQX98eP 

 h3. ソースやDBデータの入れ替え時 

   最新取得したソースやDBのデータを上記で構築した既存環境に反映させる場合に実施 
 * ソース入れ替え時 
   既に構築済の環境のpublic_htmlフォルダ内のファイルを削除またはバックアップとして移動 
   入れ替えるソースのwwwrootフォルダ内のファイルをすべてコピーしてpublic_htmlに格納 
   wp-config.phpの内容をwp-config設定項目の内容に変更 
   SSOプラグインの削除項目内容実施 
 * DBデータ入れ替え時 
 ** 既に入っているデータの削除 
   プロジェクトフォルダでターミナルを開いて実行する 
   下記のコマンドでコンテナの削除とDB(作成したユーザー等も含む)の削除 
 <pre> 
 docker compose down -v 
 </pre> 
 ** DB設定項目の内容を再度実施 
   コンテナにコピー、流すファイルは取得したダンプファイルに読み替えて実施   

 h3. その他資料・注意事項等 

 * 注意事項 
   初期コミット時ソース内容ではphp.iniの display_errors = Off となっているので 
   開発時は on に変更した方がよい 
    
   また、ソースのpublic_html\wp-content\plugins\gamipress-fixed-page-reward\index.php ファイル 
   にて下記処理で未定義の変数($object_id)を使用している為エラーが出ているので注意 
   php.iniの設定でエラーが非表示になっている 
 <pre><code class="php"> 
 /** ===== UIにイベントを登録(ラベルは自由) ===== */ 
 add_filter( 'gamipress_activity_triggers', function( $triggers ) { 
     $group = 'ページ閲覧'; 
     $triggers[ $group ] = $triggers[ $group ] ?? []; 
     $triggers[ $group ][ GP_EVENT_KEY ] = '任意の投稿/固定ページを閲覧(ページごとカウント)' . get_the_title( $object_id ); 
     return $triggers; 
 } ); 

 add_filter( 'gamipress_event_listeners', function( $listeners ) { 
     $listeners[ GP_EVENT_KEY ] = array( 
         'label'         => '任意の投稿/固定ページを閲覧(ページごとカウント)' . get_the_title( $object_id ), 
         'listener'      => GP_EVENT_KEY, 
         'description' => '単一コンテンツ閲覧時に発火。specific_id にページIDを渡します。', 
         'supports'      => array( 'points' => true, 'achievements' => true ), 
     ); 
     return $listeners; 
 } ); 
 </code></pre> 
 * 手順書 
   下記フォルダ内SilCity_Docker_手順書.docx内容にて構築、本ページ編集 
   \\SWL-FS\案件-webソリューション(共有)\Docker 
 * Docker 
   下記ファイルをそれぞれ本番用、テスト用のDockerとして使用 
    
   ・本番用 
    \\SWL-FS\案件-webソリューション(共有)\Docker\wordpress-silcity.zip 
   ・テスト用 
    \\SWL-FS\案件-webソリューション(共有)\Docker\wordpress-silcitytest.zip 
 * 初期コミット時使用ソース・DBダンプファイル 
    
   ・本番用 
    \\SWL-FS\案件-sr(共有)\202606_SRラーニングポータル保守\Dockerテスト用\20260626_091903_silcity.tar.gz 
    \\SWL-FS\案件-sr(共有)\202606_SRラーニングポータル保守\Dockerテスト用\20260626_091903_silcity.sql.gz 
   ・テスト用 
    \\SWL-FS\案件-sr(共有)\202606_SRラーニングポータル保守\Dockerテスト用\20260625_104030_silcitytest.tar.gz 
    \\SWL-FS\案件-sr(共有)\202606_SRラーニングポータル保守\Dockerテスト用\20260625_104030_silcitytest.sql.gz