はじめに
今回とあるハッカソンに出るにあたってphp
を用いたAPIサーバー
が必要になった。
それの構築中に起きた問題である。
環境構築
まずはcomposer
をインストール
brew install composer
次にcomposer
を用いてlaravel
の雛形を作成する
composer create-project laravel/laravel --prefer-dist hoge
これでhoge
ディレクトリ配下に雛形が作成される。
次にhoge
ディレクトリ配下の.env
ファイルを編集してデータベース接続の設定をする。
~~~~~
DB_CONNECTION=pgsql
DB_HOST=db
DB_PORT=5432
DB_DATABASE=test
DB_USERNAME=user
DB_PASSWORD=password
~~~
実行
これでhoge
ディレクトリ配下で
php artisan serve
するとサーバーが起動する。
この時点でデータベースはポート番号:5432
で起動しており、テストデータが入っていることもadminer
により確認できている
また
curl localhost:8000/api/users
でユーザー一覧が取得できるように実装済みで、データが取得できることも確認できた。
問題
今回api開発するにあたってdocker
を使う必要が出てきた。
てことで以下のようにDockerfile
とdocker-compose.yml
を追加した
FROM bitnami/laravel
RUN mkdir -p /app
COPY . /app
WORKDIR /app
CMD [ "php", "artisan", "serve","--host=0.0.0.0" ]
#====================
db:
container_name: mosa-db
image: postgres:14
volumes:
- dbdata:/var/lib/postgresql/data/
- ./db/init:/docker-entrypoint-initdb.d
env_file:
- .env
ports:
- "5432:5432"
hoge:
build:
context: ./hoge
dockerfile: Dockerfile
container_name: hoge-php
ports:
- '50000:8000'
volumes:
- ./hoge:/app
#====================
以下コマンドを実行することで起動できる
docker compose up --build hoge db
起動が確認できたので以下コマンドを実行
curl localhost:8000/api/users
が、しかしなっがいエラー文が返されたので
curl localhost:8000/api/users > hoge.html
データベースに接続できていない
docker
的な問題かと思い、接続文字列をクラウドデータベースに変更してもエラーの内容は変わらなかった
現在解決方法を模索中
分かり次第追記します。
また同じような事例があって解決方法がわかる方がいらっしゃれば教えていただければ幸いです。
追記
こちら結果といたしまして、dockerのネットワークの問題であると推測されました。
解決方法としては
こちらが考えられます。
今回作るプロダクトにはそってないと考えた結果、dockerの使用をやめ、vps上に環境を構築しました。