ElixirライブラリをHexに公開してみた⑥ Chatwork編
Elixirのライブラリ公開シリーズ第6弾
ドキュメント
必要な部分だけ実装。
何も問題なし。
ソースコード
公開
#!/bin/sh ENV=dev # get dependencies MIX_ENV=$ENV mix deps.get # build MIX_ENV=$ENV mix compile # publish hex MIX_ENV=$ENV mix hex.publish
無事Hexに公開されました。
ElixirライブラリをHexに公開してみた④ Instagram Login編
Elixirのライブラリ公開シリーズ第4弾
ドキュメント
Instagram Developer Documentation
今後大幅にAPIに変更が入る模様。
実装するタイミングミスったかもしれない。
ソースコード
公開
#!/bin/sh ENV=dev # get dependencies MIX_ENV=$ENV mix deps.get # build MIX_ENV=$ENV mix compile # publish hex MIX_ENV=$ENV mix hex.publish
無事Hexに公開されました。
ElixirライブラリをHexに公開してみた③ LINE Pay編
ElixirライブラリをHexに公開してみた② Paidy編
Elixirのライブラリ公開シリーズ第2弾
Paidyとは
事前登録不要・クレジットカード不要・早い・安心・支払いが便利なカンタン決済サービスです。
ドキュメント
JavaScriptのドキュメントで一部必須項目が間違っていたので注意。
どこだか忘れてしまった笑。
ソースコード
公開
#!/bin/sh ENV=dev # get dependencies MIX_ENV=$ENV mix deps.get # build MIX_ENV=$ENV mix compile # publish hex MIX_ENV=$ENV mix hex.publish
無事Hexに公開されました。
ElixirライブラリをHexに公開してみた① PAY.JP編
Elixirのライブラリ公開シリーズ第1弾
Hex
Hex は Elixir, Erlang 向けのパッケージ管理ツールです。
ruby で言うところの rubygems、node.js で言うところの npm です。
Hexの使い方は省きます。
PAY.JPとは
pay.jp
クレカの決済代行サービスです。
業務上決済機能を実装することになったので、そのタイミングで公開しました。
ドキュメント
大変読みやすく、まったく詰まることなく実装できました。
ありがたや。
ソースコード
GitHubのソースコードはこちら
GitHub - yuki-toida/ex_payjp
公開
#!/bin/sh ENV=dev # get dependencies MIX_ENV=$ENV mix deps.get # build MIX_ENV=$ENV mix compile # publish hex MIX_ENV=$ENV mix hex.publish
無事Hexに公開されました。
hex.pm
GCEとCloudSQLとDockerでmetabase
- metabaseってなんぞ?
- GCE(Container-Optimized OS)作成
- ユーザー定義bridgeネットワーク作成
- CloudSQLへのプロキシコンテナ作成
- metabase コンテナ作成
- PINGで疎通確認
- おまけ
metabaseってなんぞ?
データ可視化OSSです OSSのデータ可視化ツール「Metabase」が超使いやすい ちょっとつかってみた感じ、すこぶる良いです データ分析は全部こいつにぶん投げるのがとてもよさそう
GCE(Container-Optimized OS)作成
インスタンスの作成と設定 | Container-Optimized OS | Google Cloud
* コンソールのブートディスクからContainer-Optimized OSを選択する
* CloudSQLに接続可能なサービスアカウントCloudSQLClient
を作成し設定する(詳細省略)
* HTTP/HTTPSを開ける
ユーザー定義bridgeネットワーク作成
metanet
というbridgeネットワークを作成し各コンテナの起動時に指定する
これで同一ネットワーク内でコンテナを起動できる
docker network create -d bridge metanet
CloudSQLへのプロキシコンテナ作成
Cloud SQL Proxy Docker イメージを使用して MySQL クライアントを接続する | Cloud SQL for MySQL | Google Cloud
docker pull gcr.io/cloudsql-docker/gce-proxy:1.11
docker run --name cloud_sql_proxy --net=metanet -d \ -v /mnt/stateful_partition/cloudsql:/cloudsql \ -p 3306:3306 \ gcr.io/cloudsql-docker/gce-proxy:1.11 /cloud_sql_proxy \ -instances=planet-pluto-dev:asia-northeast1:mysql-dev=tcp:0.0.0.0:3306
ここでのポイントはポートをホストのローカル127.0.0.1
でバインドする必要がないこと
metanet
経由のコンテナ間通信を行い、ポート3306でCloudSQLにプロキシ接続する
あとは--net=metanet
を指定するのを忘れないこと
metabase コンテナ作成
docker run -d -p 80:3000 --name metabase --net=metanet metabase/metabase
同じように--net=metanet
を指定する
PINGで疎通確認
これで、metanet
内ではコンテナ名で名前解決可能になる
コンテナ内からPINGで疎通確認
docker exec -it metabase /bin/bash
ping cloud_sql_proxy
疎通できていたらmetabaseからMySQLをDBに設定
HOST : cloud_sql_proxy PORT : 3306
で接続できるはず
おまけ
ちなみに最初は docker-compose を使って接続していた
ただContainer-Optimized OSにdocker-compose をインストールするのが手間なので、オススメしない
Running Docker Compose with Docker | Google Cloud Platform Community | Google Cloud
一応そのときのdocker-compose.yml
を貼っとく
version: '2' services: cloud_sql_proxy: image: gcr.io/cloudsql-docker/gce-proxy:1.11 container_name: cloud_sql_proxy command: - "/cloud_sql_proxy" - "-instances=planet-pluto-dev:asia-northeast1:mysql-dev=tcp:0.0.0.0:3306" volumes: - /mnt/stateful_partition/cloudsql:/cloudsql ports: - "3306:3306" metabase: image: metabase/metabase container_name: metabase volumes: - /mnt/stateful_partition/tmp:/tmp environment: - "MB_DB_FILE=/mnt/stateful_partition/metabase.db" ports: - "80:3000"