# ■ docker開発環境の構築手順
## ■ docker環境をインストールする
```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する。
### ■ 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の内容を書き換える
- 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が表示される。表示されたメッセージは文字化けしているのでテキストエディタへコピーペーストし、文字コードを直して内容を確認できる。