【Firebase】Docker Composeを用いてFirebase CLI環境構築&Hello Worldを行っていく
はじめに
こんにちは、がんがんです。前回の記事でCloud Firestoreの実験を行っていきました。前回の記事は下記を参照ください。
gangannikki.hatenadiary.jp
今回は前回の予告通り、Cloud Functions for FirebaseのHello Worldを行っていきます。
目次
目的
- Docker Composeを用いてnode.js + firebase cliの環境を構築する
- firebase cliにてHello Worldを行う
公式ドキュメント
環境構築
docker-compose.yml
version: '3' services: app: build: . container_name: firebase-test ports: - 9005:9005 volumes: - ./app:/app tty: true stdin_open: true command: /bin/sh
Dockerfile
Cloud Functions for FirebaseにおけるNode.jsのサポートバージョンは8と10と記載されていました。そんため、今回は10のバージョンを使用しています。
FROM node:10.18-alpine WORKDIR /app RUN apk update && \ npm install -g npm \ npm install -g firebase-tools \ && rm -rf /var/lib/apt/lists/*
Dockerの立ち上げおよびfirebaseのログイン
docker-compose exec app sh
でコンテナ内に入り、プロジェクトの作成を行っていく。プロジェクトはすでに作成済みのプロジェクトに接続していきます。
$ docker-compose build && docker-compose up -d $ firebase login --no-localhost # 最初の質問 ? Allow Firebase to collect CLI usage and error reporting information? (Y/n) # 指示1 Visit this URL on any device to log in: (このリンクにアクセス) ? Paste authorization code here: (ブラウザに表示されたコードを貼り付け)
ログイン時にSuccess!
が返ってくればOKです。
firebase functionsのプロジェクトを作成していく
参考サイトを参考にしてプロジェクトを作成していきます。
firebase.google.com
$ firebase init functions
通常の生成時にはStorageやHostingなどの選択が行えますが、今回はfunctionsの実験をしたいので上記のようなコマンドとなりました。
基本的にすべてYを選択していき、言語もJavaScriptを選択しました。
deployしてみる
Hello World用のindex.js
をデプロイしてみます。
$ firebase deploy --only functions
デプロイしようとすると、下記のようなエラーが出ました。
Error: An unexpected error has occurred.
いろいろと調べてみると、下記の方がまとめていましたのでこちらを参考にしました。
qiita.com
しかし、これでも上記のエラー文は解決せずHello WorldのURLは表示されませんでした。
Dockerで使用しているnodeのバージョンは10
でした。そのため、package.json
のenginesのバージョンを変更してみました。
すると、エラー文は消えないもののデプロイは完了しました。Firebaseコンソール経由でURLを特定し、アクセスすると無事に下記の結果となりました。
無事にアクセスして理想の結果が表示されてよかったです。
メモ1:firebase loginのオプションについて
# firebase login -h Usage: firebase login [options] log the CLI into Firebase Options: --no-localhost copy and paste a code instead of starting a local server for authentication --reauth force reauthentication even if already logged in -h, --help output usage information
エラー1:Error: An unexpected error has occurred.
これについては後ほど改善して記していきたいと思います。
おわりに
今回はFirebase CLIの環境をDockerを用いて構築していきました。割と苦戦もしましたが、これはJSに対する慣れの問題かなと思ってます。
次回はFirebase CLI on Docker環境を用いて、Cloud Functions for Firebase
→Cloud Firestore
の実験を行っていきます。
[Update 02/25]
次回の更新記事はこちらです。
gangannikki.hatenadiary.jp