#author("2022-03-29T07:22:09+00:00","","") #author("2022-03-29T08:11:43+00:00","","") [[02_開発/01_開発環境構築]] #markdown{{ # ■ docker開発環境の構築手順 ## ■ docker環境をインストールする - WIndows 10 Professionalの場合 → [「Docker Desktop for Windows」をインストール](https://docs.docker.com/docker-for-windows/install/) - Docker Desktop for Windowsを起動したときにHyper-Vを有効にする告知が表示されたら案内に従って再起動する。 - Docker Toolboxを使用していた環境でdockerのコマンドがまったく動かないなら、「Windows PowerShell」で次のコマンドを実行する。 ```cmd [Environment]::SetEnvironmentVariable("DOCKER_CERT_PATH", $null, "User") [Environment]::SetEnvironmentVariable("DOCKER_HOST", $null, "User") [Environment]::SetEnvironmentVariable("DOCKER_MACHINE_NAME", $null, "User") [Environment]::SetEnvironmentVariable("DOCKER_TLS_VERIFY", $null, "User") [Environment]::SetEnvironmentVariable("DOCKER_TOOLBOX_INSTALL_PATH", $null, "User") ``` - dockerコマンドの実行で「no matching manifest for windows/amd64 ~ in the manifest list entries.」のエラーが表示される場合は次の手順を実行する。 - Docker Desktop for Windowsのアイコンを右クリックし、Settingsを開く。 - 「Daemon」を「Advanced」に変更し、「"experimental": true」にしてApplyする。 - Windowsキー → WIndows管理ツール → サービスを開き、「Service」と「Workstation」を実行中にする。 - Docker Desktop for Windowsのアイコンを右クリックし、Settingsを開く。 - 「Shared Drives」をチェックONに変更し、Applyする。 - WIndows 10 Home / Professionalの場合 → [「Docker Toolbox for Windows」をインストール](https://docs.docker.com/toolbox/toolbox_install_windows/) BIOSの設定でHyper-Vは無効とする。 - Dockerのインストーラーは標準のオプション(git for windowsはチェックオフとなっている)でインストールする。 - Windowsログオンはmicrosoftアカウントでないこと。 ### ■ hostsファイルを変更する 1. 以下の内容をhostファイルに書く。 - docker-toolbox(docker machineを使う)の場合。 - 「docker Quickstart Termnal」を起動したときのメッセージのIPアドレスでhostファイルを書く。 ```hosts 192.168.99.100 u.local.lcl 192.168.99.100 om.local.lcl 192.168.99.100 am.local.lcl 192.168.99.100 ad.local.lcl 192.168.99.100 lg.local.lcl 192.168.99.100 pm.local.lcl ``` - ※ docker-toolboxを再インストールするなどによりIPアドレスが変わったら上記手順でhostファイルを更新する。 - Docker Desktop(docker machineを使わない)の場合 ```hosts 127.0.0.1 u.local.lcl 127.0.0.1 om.local.lcl 127.0.0.1 am.local.lcl 127.0.0.1 ad.local.lcl 127.0.0.1 lg.local.lcl 127.0.0.1 pm.local.lcl ``` 1. コマンドプロンプトを開き、次のコマンドを実行する。 > ipconfig /flushdns ## ■ docker環境をインストールする ### ■ docker-composeでイメージのビルドと初回起動を行う 以下のようにファイルを配置したものとして説明する。 - gitリポジトリ 「/c/Users/(Windowsログオン名)/Documents/projects/uchicomi-source」 ※dockerに対応したもの ※配置先はユーザーディレクトリ以下であれば変更できる。 1. docker環境のファイルを配置する。 - [docker用ファイル一式をダウンロード](https://ambass.backlog.jp/alias/file/1093273257)して展開し、「/c/Users/(Windowsログオン名)/Documents/projects/docker/uchicomi」に配置する。 - その時点のソースに対応したDBのダンプファイルダウンロードして展開し、「db\docker-entrypoint-initdb.d」に配置する。 現時点で次のファイルを配置する。 - uchicomidev.sql.bak (最新は、phpmyadminより取得する。フォーマットは、SQLで、ファイルダウンロード後に、ファイルをリネームするだけでOK) 1. ローカルにチェックアウトしたgitリポジトリで、動作に必要な次のディレクトリを作成する。 - fuel/app/cache/stations 1. リポジトリ中の、docker-compose.ymlのvolumesに、リポジトリを配置したパスをフルパスで記載する(相対パスはWindowsではうまく動かない) ```docker-compose.yml(対象の箇所のコメントアウトを外し、元の記載をコメントアウトする。) //c/Users/(ユーザー名)/Documents/projects/uchicomi-source:/var/www/html/uchicomi.com ``` 1. docker-toolboxの場合は「Docker QuickStart Terminal」を開き、docker Desktopの場合は「Windows Powershell」を開き、docker-composeでコンテナを起動する。 - リポジトリ中のdocker-compose.ymlファイルがあるフォルダをカレントディレクトリにし、dockerイメージを初回ビルドする。 ※数十分かかる ```bash cd "/c/Users/(Windowsログオン名)/Documents/projects/docker/uchicomi" docker-compose build ``` - docker-composeで初回コンテナを起動する。 「import data」と表示されてMySQLコンテナのインポートに数十分かかる。 (「〜/docker/uchicomi/data/db」以下にMySQLのデータが作成され、永続化される) ```bash docker-compose up ``` - (最も時間がかかる)コンテナ起動が完了したことを示す次のログが表示されたら、CTRL+Cでコンテナを中断させる。 「mysqld: ready for connections.」 - MySQLのコンテナへのインポートをやり直したいときは「〜/docker/uchicomi/data/db」以下を削除してこの手順をやり直す。 ### ■ docker-composeで作業用にコンテナを起動する 1. Docker QuickStart Terminalからdockerコンテナをバックグラウンド起動する。 ```bash cd "/c/Users/(Windowsログオン名)/Documents/projects/docker/uchicomi" docker-compose up -d docker-compose ps ``` - コンテナが起動したかどうかは次のコマンドでSTATUSがupになっていればOK。 コンテナが正常に起動しない場合は、次のようにコンテナをダウンさせ、フロントで起動するとエラーを確認できる。 ```bash docker-compose down docker-compose up ``` - 不要なコンテナが起動し続けている場合は 、起動しているコンテナの一覧を表示してコンテナIDを確認し、個別に停止させてからコンテナを整理する。 ```bash docker ps -a docker stop 1e8b68e27e79 # 1e8b68e27e79はコンテナID docker container prune ``` - コンテナが起動していれば、Webサービスが動作しているOSに、次の操作で入ることができる。(コンテナの終了で設定等は失われる) ```bash docker-compose exec uchicomidev bash ``` ### ■ db.phpの内容を書き換える - dockerでの環境構築の場合、DBへのアクセス情報が異なるため下記ファイルの編集が必要 - fuel/app/config/development/db.php return array( 'default' => array( 'connection' => array( 'dsn' => 'mysql:host=uchicomiMySql;dbname=uchicomi', 'username' => 'ec2-user', 'password' => 'ec2-user', ), 'profiling' => true, ), ); - 注意点 - 現状、コミットはしていないので ``` git stash save ``` で保存している 1. ブラウザからWebページを開いて表示できることを確認する(アクセス情報等はリリース手順を参照) > http://u.local.lcl/ → 入居者フロントが表示される > http://om.local.lcl/ → 大家マイページが表示される > http://am.local.lcl/ → エージェントマイページが表示される > http://ad.local.lcl/ → 管理者画面が表示される > http://lg.local.lcl/ → リーガルチェック画面が表示される > http://pm.local.lcl:8080/ → PhpMyAdminが表示される。 ユーザー情報は ec2-user / ec2-user で。 > http://u.local.lcl:8025/ → MailHogが表示される。表示されたメッセージは文字化けしているのでテキストエディタへコピーペーストし、文字コードを直して内容を確認できる。 }}