- Goal
- GCE(Google Compute Engine)に、コンテナイメージをDeployして立ち上げる。
- Dockerのイメージは、DockerHUBから持ってくる。
- How
- 準備:DockerHUBに、コンテナイメージを作成する。
①Github のrepositoryと、DockerHUBを連携させる
■連携の仕方
https://docs.docker.com/docker-hub/builds/link-source/
②ドットインストールのPHP環境のテストをしたかったので、Docker fileなどを取得し、DockerHUBと連携させたGithubのrepositoryへpushする。すると、自動でDockerHUBにイメージが作成される!
■Githubのレポジトリ
https://github.com/pumpkinpietea/dockerhub
■連携されたDockerhubのレポジトリ
https://hub.docker.com/repository/docker/pumpkinpietea/github
- GCPのコンソールでGCEインスタンスをコンテナイメージを利用して立ち上げる。
■コンテナイメージ名に docker.io/アカウント名/レポ名 を入力する
- イメージを作成し、SSHでつないで見る。
~$ docker ps
でコンテナIDを調べて
~$ docker exec -it コンテナ名 sh
で、コンテナの中に入れる - Thanks!!
- 編集後記
- PHPの勉強をしようとして、ドットインストールさんの講座をみて進めようとしたが、Dockerをローカルmacには入れたくないと思い、GCPのf1-microインスタンスを使おうを思って取り組んだ。普通にインスタンス立ち上げて設定しようかとおもったが、少し調べてみたらコンテナイメージをDeployできるみたいなので試してみた。
- GCE 1インスタンスで、 1コンテナとのこと。GKEの勉強しないと実業務には使えないかもしれないが、1インスタンスの開発環境の立ち上げとかには、。
Oracle Application Express Notes | Apps development Notes | Google Cloud Platform | Python | apps test | Cool Beans | English | Books
2020/04/25
GCP: コンテナイメージから、GCEを立ち上げる方法 with Docker HUB -- GCP,GCE,docker
ラベル:
Docker,
GCE,
gcloud,
GCP,
Google Cloud Platform
2020/03/22
ロジスティクス4.0 物流の創造的革新 (日経文庫) 小野塚 征志 ー 本
メモ
1.ドローンーーーwalmartの在庫管理・ドローンで写真撮りチェック、無人遠隔運搬船
2.棚搬送型ロボット(Kiva:ドライブ、日立:ラックル)と協調型ロボット(ローカス・ボット)
3.求貨求車システム:トランコム、HACOBU、ハコベル、ララムーブ(香港)
→水屋の減少
4.デジタルフォワーダー:フレックスポート
5.DHLのロジスティクスマネジメントシステム:荷主向けの物流システムプラットフォーム。DHL以外の物流会社への委託も可能
6.物流機能会社の統合:家電→日通、三井倉庫へ統合、食品→味の素の物流会社へ統合、飲料→アサヒ、サッポロ、キリン、サントリーの共同物流、化学業界も同様
※荷主業界を核としたロジスティクスプラットフォーマー
7.荷物の輸送量・距離は、トラック1台あたりの積載量が変わらない限り、ドライバーの投入工数に準じる。自動運転トラック、ロボット、マッチングシステムはそれを変える可能性がある。
8.高速は、隊列走行(自動運転)して、インターチェンジからドライバーが運ぶ
9.DHLとシスコの「Internet of Things in Logistics」
10.物流サービスを仕組み化し、広く多くの荷主・荷物を取り扱うことに成功した一部の「ロジスティクスプラットフォーマー」のみが高収益を獲得し、あとは下請けとなる
11.物流業界内の再編の加速:日立物流と佐川のような
12.荷主による物流ビジネスの展開:アマゾン=世界最大の物流会社、ロジスティクスカンパニー
13.次世代WMS:ロボットの操作、自動化された設備のコントロール
14.NY5番街 1900年:馬車しかいない。 1913年:車しかない。

1.ドローンーーーwalmartの在庫管理・ドローンで写真撮りチェック、無人遠隔運搬船
2.棚搬送型ロボット(Kiva:ドライブ、日立:ラックル)と協調型ロボット(ローカス・ボット)
3.求貨求車システム:トランコム、HACOBU、ハコベル、ララムーブ(香港)
→水屋の減少
4.デジタルフォワーダー:フレックスポート
5.DHLのロジスティクスマネジメントシステム:荷主向けの物流システムプラットフォーム。DHL以外の物流会社への委託も可能
6.物流機能会社の統合:家電→日通、三井倉庫へ統合、食品→味の素の物流会社へ統合、飲料→アサヒ、サッポロ、キリン、サントリーの共同物流、化学業界も同様
※荷主業界を核としたロジスティクスプラットフォーマー
7.荷物の輸送量・距離は、トラック1台あたりの積載量が変わらない限り、ドライバーの投入工数に準じる。自動運転トラック、ロボット、マッチングシステムはそれを変える可能性がある。
8.高速は、隊列走行(自動運転)して、インターチェンジからドライバーが運ぶ
9.DHLとシスコの「Internet of Things in Logistics」
10.物流サービスを仕組み化し、広く多くの荷主・荷物を取り扱うことに成功した一部の「ロジスティクスプラットフォーマー」のみが高収益を獲得し、あとは下請けとなる
11.物流業界内の再編の加速:日立物流と佐川のような
12.荷主による物流ビジネスの展開:アマゾン=世界最大の物流会社、ロジスティクスカンパニー
13.次世代WMS:ロボットの操作、自動化された設備のコントロール
14.NY5番街 1900年:馬車しかいない。 1913年:車しかない。
2020/02/11
GCP: gcloud コマンドラインで、GAEの全インスタンスを停止する --- GCP,GAE,shellscript,gcloud
・Goal
テストで作成したGAEの全サービスの全インスタンスをコマンドラインから削除・停止する。バージョン名等を指定せずに、どんどんデプロイすると稼働中のインスタンスが増える。それをコマンドラインで一気に全停止する。コンソール画面からだと、サービス毎/バージョン毎にプチプチと停止する必要があり面倒だった。。。
・How
これが基本形
~$ gcloud app instances delete [instance ID] -v [version] -s [service]
・Example
# step1 一覧で確認
~ $ gcloud app instances list
SERVICE VERSION ID VM_STATUS DEBUG_MODE
default master 00XXXXXXX N/A
test1 master 00XXXXXX1 N/A
test2 master 00686ff30 N/A
# step2 削除
~ $ gcloud app instances list | sed 1d | awk '{print $1, $2, $3}' | while read s v id; do gcloud app instances delete $id -v $v -s $s --quiet; done
Deleting the instance [default/master/00XXXXXXX].
Deleted [https://appengine.googleapis.com/v1/apps/---].
Deleting the instance [test1/master/00XXXXXX1].
Deleted [https://appengine.googleapis.com/v1/apps/---].
Deleting the instance [test2/master/00686ff30].
Deleted [https://appengine.googleapis.com/v1/apps/---].
# 説明
~ $ gcloud app instances list | \ # インスタンスのリストを出力
sed 1d | \ # 一行目をカット
awk '{print $1, $2, $3}' | \ # awk できれいにする。(この処理は不要・・・)
# 以下のハイライトの箇所で、順番に消していく。y/nを聞かれるので --quiet を追加
while read s v id; do gcloud app instances delete $id -v $v -s $s --quiet; done
テストで作成したGAEの全サービスの全インスタンスをコマンドラインから削除・停止する。バージョン名等を指定せずに、どんどんデプロイすると稼働中のインスタンスが増える。それをコマンドラインで一気に全停止する。コンソール画面からだと、サービス毎/バージョン毎にプチプチと停止する必要があり面倒だった。。。
・How
これが基本形
~$ gcloud app instances delete [instance ID] -v [version] -s [service]
・Example
# step1 一覧で確認
~ $ gcloud app instances list
SERVICE VERSION ID VM_STATUS DEBUG_MODE
default master 00XXXXXXX N/A
test1 master 00XXXXXX1 N/A
test2 master 00686ff30 N/A
# step2 削除
~ $ gcloud app instances list | sed 1d | awk '{print $1, $2, $3}' | while read s v id; do gcloud app instances delete $id -v $v -s $s --quiet; done
Deleting the instance [default/master/00XXXXXXX].
Deleted [https://appengine.googleapis.com/v1/apps/---].
Deleting the instance [test1/master/00XXXXXX1].
Deleted [https://appengine.googleapis.com/v1/apps/---].
Deleting the instance [test2/master/00686ff30].
Deleted [https://appengine.googleapis.com/v1/apps/---].
# 説明
~ $ gcloud app instances list | \ # インスタンスのリストを出力
sed 1d | \ # 一行目をカット
awk '{print $1, $2, $3}' | \ # awk できれいにする。(この処理は不要・・・)
# 以下のハイライトの箇所で、順番に消していく。y/nを聞かれるので --quiet を追加
while read s v id; do gcloud app instances delete $id -v $v -s $s --quiet; done
2020/02/09
GCP: Cloud Tasksにおける queueの設定 (GAEの特定のserviceへリクエストを投げたい) -- GAE 2nd gen, Python3, gcloud
・背景
GAEをタスクハンドラーとして使っている。
GAE-py の2nd Genへの移行に伴い、従来のapp engine task queueは
使えなくなり、Cloud Tasksへの移行が必要。
それに伴い従来のqueue.yaml の設定も不要。
今後は、コンソールからgcloudコマンドでqueueを作ることになるとのこと。
https://cloud.google.com/tasks/docs/migrating?hl=ja
そこで、試していたのだが、GAEのデフォルトじゃなくて、特定のサービスや、
バージョンに対してのリクエストの投げ方が解らずハマる。。。
http://[project ID].appspot.com/
ではなくて例えば、
http://[service]-dot-[project ID].appspot.com/
にリクエストを投げたい。
・Goal
GAEの特定のサービスに対するqueueを作成したい。
・How
gcloud コマンドで、--routing-overrideを設定すればよい。
[As-is]
XXX@cloudshell:~$ gcloud tasks queues describe queue-sample
name: projects/[project ID]/locations/us-central1/queues/queue-sample
rateLimits:
maxBurstSize: 100
maxConcurrentDispatches: 1000
maxDispatchesPerSecond: 500.0
retryConfig:
maxAttempts: 100
maxBackoff: 3600s
maxDoublings: 16
minBackoff: 0.100s
state: RUNNING
[変更]
XXX@cloudshell:~$ gcloud tasks queues update queue-sample --routing-override=service:test
WARNING: You are managing queues with gcloud, do not use queue.yaml or queue.xml in the future. More details at: https://cloud.google.com/tasks/docs/queue-yaml.
Updated queue [queue-sample].
[To-be]
XXX@cloudshell:~$ gcloud tasks queues describe queue-sample
appEngineRoutingOverride:
host: test.[project ID].appspot.com
name: projects/[project ID]/locations/us-central1/queues/queue-sample
rateLimits:
maxBurstSize: 100
maxConcurrentDispatches: 1000
maxDispatchesPerSecond: 500.0
retryConfig:
maxAttempts: 100
maxBackoff: 3600s
maxDoublings: 16
minBackoff: 0.100s
state: RUNNING
・Thanks!!
https://cloud.google.com/sdk/gcloud/reference/tasks/queues/update#--routing-override
GAEをタスクハンドラーとして使っている。
GAE-py の2nd Genへの移行に伴い、従来のapp engine task queueは
使えなくなり、Cloud Tasksへの移行が必要。
それに伴い従来のqueue.yaml の設定も不要。
今後は、コンソールからgcloudコマンドでqueueを作ることになるとのこと。
https://cloud.google.com/tasks/docs/migrating?hl=ja
そこで、試していたのだが、GAEのデフォルトじゃなくて、特定のサービスや、
バージョンに対してのリクエストの投げ方が解らずハマる。。。
http://[project ID].appspot.com/
ではなくて例えば、
http://[service]-dot-[project ID].appspot.com/
にリクエストを投げたい。
・Goal
GAEの特定のサービスに対するqueueを作成したい。
・How
gcloud コマンドで、--routing-overrideを設定すればよい。
[As-is]
XXX@cloudshell:~$ gcloud tasks queues describe queue-sample
name: projects/[project ID]/locations/us-central1/queues/queue-sample
rateLimits:
maxBurstSize: 100
maxConcurrentDispatches: 1000
maxDispatchesPerSecond: 500.0
retryConfig:
maxAttempts: 100
maxBackoff: 3600s
maxDoublings: 16
minBackoff: 0.100s
state: RUNNING
[変更]
XXX@cloudshell:~$ gcloud tasks queues update queue-sample --routing-override=service:test
WARNING: You are managing queues with gcloud, do not use queue.yaml or queue.xml in the future. More details at: https://cloud.google.com/tasks/docs/queue-yaml.
Updated queue [queue-sample].
[To-be]
XXX@cloudshell:~$ gcloud tasks queues describe queue-sample
appEngineRoutingOverride:
host: test.[project ID].appspot.com
name: projects/[project ID]/locations/us-central1/queues/queue-sample
rateLimits:
maxBurstSize: 100
maxConcurrentDispatches: 1000
maxDispatchesPerSecond: 500.0
retryConfig:
maxAttempts: 100
maxBackoff: 3600s
maxDoublings: 16
minBackoff: 0.100s
state: RUNNING
・Thanks!!
https://cloud.google.com/sdk/gcloud/reference/tasks/queues/update#--routing-override
ラベル:
gcloud,
GCP,
Google App Engine,
Python3
2019/08/04
GCP: GAE/Py から、ElasticSearch(GCE上で稼働)を呼び出す -- Python
- GOAL: レコメンドエンジンとしてElasticSearchを立ち上げ&セットアップする。その後、Google App Engine(GAE)から、ElasticSearchのAPIを呼び出して使う。
- POINT
1.GAEからの外部HTTP(REST API)呼び出しは、POSTで行うこと! GETは使うな!!
(GAE/Py27の環境で、requestsを利用して呼び出す場合)
2.Logstashは、必ず「Ctrl+D」で終了させること!
Ctrl+Zで終了させていたため、サービスが起動中となりハマりました。 - HOW
1.Martket Placeから、ELK(ElasticSearch+Logstash+Kibana)を起動
2.Logstashを使って、CSVデータをElasticSearchにロード
3.GAEから、ElasticSearchに検索クエリーを発行して結果を取得
----------------
1.Martket Placeから、ELK(ElasticSearch+Logstash+Kibana)を起動
・Bitnamiの仮想マシンを選択
・手順に沿って、選択をしていくだけ
2.Logstashを使って、CSVデータをElasticSearchにロード
3.GAEから、ElasticSearchに検索クエリーを発行して結果を取得
2019/07/27
GCP: Iphoneから、端末位置情報をIoT分析環境に送信する -- python, GCP, IoTcore
Goal: 「IoTデータ分析環境立ち上げ on GCP」の環境に対して、Iphoneから位置情報データをPushするサンプル。Iphoneをエッジ端末として活用して、色々できそう。
How
0. 前準備 Pythonista関連
a)Pythonista のインストール
https://apps.apple.com/jp/app/pythonista-3/id1085978097
b)Gitを使いたかったら、stashをインストール
https://github.com/ywangd/stash
c)説明サイト ググったらたくさんあると思いますが、私は、以下のリンクを参照させていただきました。ありがとうございました。
http://hitoriblog.com/?p=42145#Python-5
1. Pythonista を使って、端末の位置情報、スピード等を取得する
a)Iphone上で、位置情報などを確認してみる
2. GCPのPub/Subにパブリッシュする。これの詳細は、前出のブログを参照
a)GCP提供のサンプルプログラムをベースに追加加工する。
https://github.com/GoogleCloudPlatform/python-docs-samples/tree/master/iot/api-client/mqtt_example
をローカルPCにクローンして、Pythonの環境などをセットする。
cloudiot_mqtt_example.pyをベースに変更を加えたものが以下。
How
0. 前準備 Pythonista関連
a)Pythonista のインストール
https://apps.apple.com/jp/app/pythonista-3/id1085978097
b)Gitを使いたかったら、stashをインストール
https://github.com/ywangd/stash
c)説明サイト ググったらたくさんあると思いますが、私は、以下のリンクを参照させていただきました。ありがとうございました。
http://hitoriblog.com/?p=42145#Python-5
1. Pythonista を使って、端末の位置情報、スピード等を取得する
a)Iphone上で、位置情報などを確認してみる
2. GCPのPub/Subにパブリッシュする。これの詳細は、前出のブログを参照
a)GCP提供のサンプルプログラムをベースに追加加工する。
https://github.com/GoogleCloudPlatform/python-docs-samples/tree/master/iot/api-client/mqtt_example
をローカルPCにクローンして、Pythonの環境などをセットする。
cloudiot_mqtt_example.pyをベースに変更を加えたものが以下。
2019/06/09
文字列内の検索 str.find() str.rfind() --- Python3
Goal: 文字列の中に、特定の文字列が含まれているか? 含まれている場合は、INDEXを取得する。
How: 文字列メソッド find() 、rfind() を使う。
例)
01234567890123456789012345678901
THIS IS A PEN. THIS IS AN APPLE.
に、文字列が含まれているかどうかを確認する。
1: 'IS' を前から探す → 2が返ってくる
2: 'THIS' を前から探す → 0が返ってくる
3: 'THIS' を後ろから探す → 15が返ってくる
4: 'PINEAPPLE' を探す → 無いから、-1が返ってくる
Source:
Result:
-> % python test.py
2
0
15
-1
How: 文字列メソッド find() 、rfind() を使う。
例)
01234567890123456789012345678901
THIS IS A PEN. THIS IS AN APPLE.
に、文字列が含まれているかどうかを確認する。
1: 'IS' を前から探す → 2が返ってくる
2: 'THIS' を前から探す → 0が返ってくる
3: 'THIS' を後ろから探す → 15が返ってくる
4: 'PINEAPPLE' を探す → 無いから、-1が返ってくる
Source:
Result:
-> % python test.py
2
0
15
-1
登録:
投稿 (Atom)




