環境構築からデプロイまで一通りやってみる。

さて、ぼちぼち環境構築する準備が整ってきたかなぁということで、

自分の作りたい環境をチュートリアル的に構築してみようかな。

 

前提

・GitHub、herokuのアカウント作成や初期設定は終わっているものとして進めます。

・docker、docker-composeのインストールも終わっているものとして進めます。

・プロジェクト名は仮に「project-x」としておきます。

・Dockerは予め起動しておきます。

 

プロジェクト・リポジトリの準備など

①プロジェクトのディレクトリを作成して、そのディレクトリに移動

これ、「mkdir」と「cd」で毎回同じディレクトリ名を2回入れて面倒くさっって思ってたけど、
ちゃんと方法があったんですねぇ…。

 

②GitHubにてリモートリポジトリを作成

リポジトリ名にはプロジェクト名を付けます。

 

 

 

 

 

 

 

 

③「.gitignore」ファイルを作成

これで「logs」ディレクトリ以下はコミットされなくなります。
文字通り、無視ですね。

ところで、Readmeは作成しておくのがマナーなのかな?
個人的には英語でもReadmeに使い方が書いてあって助かった記憶がままあるので、
あった方が親切なんだろうなーとは思います。

今回は練習なのでスキップ、もしくは以下のようにプロジェクト名だけ入れておきます。

 

④ローカルリポジトリ作成 & 初回コミット

カレントディレクトリにてリポジトリを新規作成して、コミットします。

 

⑤リモートリポジトリに名前を紐付け

リモートリポジトリのURLを「origin」という名前に紐付けます。
URLに名前をつけることで呼び出しやすくしています。

これで「git push」する時に「origin」と書けば、
リモートリポジトリが指定できるようになると。

DNSとかエイリアスみたいなもんですね。
いや、分かりやすいかは人に依るなw

ちなみに、リモートリポジトリのデフォルト名が「origin」なので、
慣習的に「origin」が使われることが多いけど、好きな名前をつけてOKみたい。

 

⑥リモートリポジトリにPush

GitHubにあるリモートリポジトリにPushします。

「-u」オプションをつけてPushが成功すると、これ以降はpushもpullも
リポジトリ名とブランチ名を省略できるので、ちょっぴり便利かと思います。

これは、Push先であるリモートのmasterブランチがローカルのmasterブランチの
上流ブランチに設定されるためらしいんですが…

上流ブランチって何?って思って調べてみたんですけど、
イマイチ定義がよく分かんなくて、明確に説明できないんですよねぇ…
ここは追々勉強します。

 

ファイル・ディレクトリの準備

最終的にはこんなフォルダ構成になる予定

 

①必要なディレクトリを作成

 

②必要なファイルを作成

一気に空ファイルだけ作成します。

 

docker設定ファイルの準備

さっき作った空ファイルに内容をペーストしていきます。
(※Finder上で「.env」などの隠しファイルが見つけられない場合は、
ディレクトリを開いて、[shift]+[command]+[.]キーで現れると思います。)

 

①「.env」

「docker-compose.yml」から参照する環境変数をまとめたファイルです。

環境を切り替えやすくするために別ファイルに切り出すものなんですが、
どんな場面で使われるんだろうか…?

 

②「docker-compose.yml」

7行目の「context:」は、「Dockerfile」をプロジェクト直下に置きたくて設定。
17〜24行目や39〜49行目は、DBにPostgreSQLを使うためにに少しいじっています。

イメージOSをAlpineに統一したり、やたら最新バージョンに設定したりしてます。
公式イメージの最新バージョンはDocker Hub(https://hub.docker.com/)で確認できます。

${ 〜 }と書かれている箇所は、「.env」ファイルの変数を参照してるもの。
${ 〜 :- 〜 }となっているのは、「:-」の右側がデフォルト値です。

データの永続化は分かったようで分かってなかった!
もうちょっと勉強が必要です。

 

③「Dockerfile」

独自パラメータは、1行目にあるイメージのバージョンと、11行目のPostgresの
開発用パッケージのインストール、それから12行目のPHPの拡張機能のインストールに
「pgsql pdo_pgsql」を追加しています。これ2つとも必要だったんだっけか…?

 

各コンテナ用の設定ファイルの準備(PHP・nginx)

①「php.ini」

ここもイマイチよく分かってなくて、恥ずかしながらこちらから丸パクさせていただきました。
https://qiita.com/ucan-lab/items/0d74378e1b9ba81699a9

 

②「default.conf」(nginxの設定ファイル)

 

コンテナの起動 & Laravelインストール

①イメージの構築&コンテナの構築・起動

-dオプションはログ出力なしで、バックグラウンドで実行します。
オプションなしで実行してみると違いが分かるはず。

ちなみに、本来は「docker-compose build」でイメージ構築してから、
「docker-compose up」でコンテナの構築・起動という流れになります。

ただし、初回のようにイメージが未構築の状態で「docker-compose up」を
実行すると、イメージ構築も実行してくれるようです。

この2つは「docker-compose up -d –build」で1行にまとめることもできます。

他にもイメージ・コンテナ構築時のキャッシュオプションや、コンテナの起動・終了
を行うstart、stopコマンド、コンテナの終了・削除まで行うdownコマンドなど、
憶えることはまだありそうです…

 

②コンテナの起動を確認

Docker DesktopのDashboardからでも確認できます。

 

 

 

 

 

 

③Laravelをインストール&プリセットをReactに切り替え(デフォルトはVue)

appコンテナに入ってコマンドを実行します。
2行目のLaravelインストールは少し時間がかかるかも。
4行目の「–auth」はログイン認証機能を簡単に実装できるオプションデス。
後でテストしてみたいのでここでは付けておきます。

 

④npmのインストール

nodeコンテナに入ってコマンド実行。

 

⑤マイグレーション実行

appコンテナに入ってコマンド実行。

 

⑥動作確認

ローカルでの環境構築が完了したはずなので、
127.0.0.1:10080 にアクセスしてLaravelのWelcomeページが表示されることを確認します。

 

 

 

 

 

 

⑦コミット&GitHubへプッシュ

ここらでGitHubのリモートリポジトリにPushしておきます。

 

herokuにデプロイ

①herokuにログイン

heroku: Press any key to open up the browser to login or q to exit:
というメッセージが出たら、「q」以外の適当なキーを押します。
ブラウザでログイン画面が開くので「Log in」をクリックしてターミナルへ戻ります。

 

 

 

 

 

 

 

 

②プロジェクトを作成

heroku上にPHPの新規プロジェクトを作成します。

「project-x」というプロジェクト名は被ったので、適当に文字列を追加します。

 

③アプリケーションキーの発行と追加

表示されたキーをコピーして、次のコマンドにペースト

 

④アドオンのインストール

herokuでPostgresを利用するためのアドオンをインストールします。

 

⑤データベース接続情報をセット

2行目の「db」はデータベースコンテナのコンテナ名です。

 

⑥Webサーバー設定

heroku上でWebサーバーを動かすための設定を入れておきます。

 

⑦デプロイ実行

プロジェクトディレクトリ直下に戻って、herokuのリモートリポジトリへPushします。
Pushするのは「src」ディレクトリのみです。

 

⑧herokuにmigrateをインストールして、heroku上でmigrateを実行

Do you really wish to run this command? (yes/no) [no]:
と聞かれるので「yes」と入力してreturnを押します。

 

⑨動作確認

ブラウザでWelcomeページが開きます。
右上の「 REGISTER」からユーザー登録ができます。
ログイン、ログアウトが正常にできるかを試してみます。

 

 

 

 

 

 

Reactの動作確認

さて、もう一息。

最後はheroku上でReactがちゃんと動作してるか簡単に確認してみます。

 

いまログインすると、画面上に「You are logged in!」と出てきますが、

その下に指定した文字を表示させてみます。

 

①「home.blade.php」の編集

ログイン後に表示されるページ「home.blade.php」を編集します。
場所は「project-x/src/resources/views/」の中です。

18行目を追記します。

 

②「app.js」の編集

「project-x/src/resources/js/app.js」に16行目を追記します。

 

③「Test.js」の作成

「project-x/src/resources/js/components/」に「Test.js」を以下の内容で作成します。

 

④コンパイルを実行

nodeコンテナでコマンドを実行します。

 

⑤動作確認

まずは、localhostで 127.0.0.1:10080 表示を確認します。
ユーザーを登録してログインしてみてください。

 

 

 

 

 

⑥「package.json」を編集

「project-x/src/package.json」に11行目を追記します。
(※10行目の末尾に「,」カンマも忘れずに)

これでherokuにデプロイした際にアセットのコンパイルが行われる!
…ようになったみたいなんですが、「なぜ?」がまだよく分かってないので、
その辺りは追い追い。

 

⑦コミット&GitHubにプッシュ

 

⑧herokuにデプロイ

 

⑨動作確認

ブラウザで開きます。
こちらもユーザーを登録してログインしてみてください。

 

 

 

 

 

ふぅ=、ちょっと長くなっちゃいましたが、

とりあえず完了ですね。

 

まだまだ理解が浅いところがありますが、

だいぶ勉強になりました。

 

次はようやく、市場調査かな…やるかな…どうかな…。

シェアする

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA


コメントする