0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[PostgreSQL][PHP][Vue]お手頃アプリ作成

Posted at

認証無しのAPIでデータ取ってきて画面に表示するだけの簡単なシステム

の、ためだけにわざわざローカル環境にApache・PHP・Node・DB入れるとかめんどくせ~(ものぐさ

そんな時は。。。

そう、DevContainerだね

環境としてはこちら

  • PHP:8.3
  • PostgreSQL:16

設定ファイルはこちら

devcontainer.json
{
	"name": "passport-inquiry",
	"image": "mcr.microsoft.com/devcontainers/php:1-8.3-bullseye",

	"forwardPorts": [
		8080, // Apache
		5173 // vite
	],
	"features": {
		"ghcr.io/itsmechlark/features/postgresql:1": {
			"version": "16"
		},
		"ghcr.io/devcontainers-extra/features/vue-cli:2": {
			"version": "latest"
		}
	}
}

ベースはPHPで、ポスグレとVueCliを一緒に入れてる感じです。
※正直VueCliはプロジェクトを作るために入れた感じですが既にローカルとかでプロジェクト作成されている場合はなくてもいいと思ってる。
→PHPかポスグレ入れたタイミングでNodeが付属されているため

この構成で入れるとApacheがPHPに付属してきて、localhost:8080からアクセスできるようになります。

じゃあ作ってくか。。。

色々と設定を変えれば簡単にできると思うけど、その設定を調べるのも面倒くさいので、ビルド後の配置はコマンドゴリゴリでやるための構成です。
自分で使う時はvite.configやPHPソースの場所、マウントするフォルダなどを色々と切り替えて考えて行ってね!

フォルダ構成はこんな感じ
スクリーンショット 2025-03-03 152549.png

phpフォルダには名前の通り、PHPのバッチとか共通的なクラスとかFunctionを格納する。
vueフォルダはVueプロジェクトのルートフォルダとなります。

公開(ローカルブラウザ)で見るためには?

内包されているApacheのDocrootがデフォルトだと「/var/www/html」になるので、vue資源をビルドして出来るdistフォルダの中身を /var/www/html にコピーすればよろし。

PHP製のAPIを追加するとかであれば、
phpフォルダ内にapiフォルダを作ってそこで実装し /var/www/html にコピーする。
またはvueプロジェクトしたのpublicフォルダ下にapiフォルダを作ってそこで作ってビルドすればdistにそのままコピーされるため、vueの資源と一緒に /var/www/html にコピーすればいいだけになるね。

ちなみにviteだけでの起動も出来るため、いちいちビルドがめんどくせぇって時はviteで立ち上げておいて、localhost:5173をブラウザで開くのもよろし。
→そのためにDevContainerの設定JSONのforwardPortsにポート指定してある

こんな感じで「ちょっとこんな感じの案件が有るんだけど。。。」みたいな時のプロトを作る際の手間をちょっとでも減らせればということで記事化してみた。

ね、簡単でしょ?

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?