ちょっと友達とWebサービスを作るか的な話になり
サーバーを動かすのにDocker使うぜ
この前いったgcp ja night #28でもらったクーポンもあるし
とりあえずお試しでGCP使うぜーということでDocker Registryの保存先をGCSにすることになりました。
そして色々ハマったのでメモしときます。
前提
環境はMac OSX 10.9.5
を使用しています。
gsutil version: 4.6
$ docker version
Client version: 1.2.0
Client API version: 1.14
Go version (client): go1.3.1
Git commit (client): fa7b24f
OS/Arch (client): darwin/amd64
Server version: 1.2.0
Server API version: 1.14
Go version (server): go1.3.1
Git commit (server): fa7b24f
boot2dockerで動かしてます。
VirtualBoxのポートフォワーディングの設定、localhost:5000
にマッピング済みです。
事前にprojectは課金設定まで済ませています。
ストレージの作成
gsutilを使ってストレージを作成します。
-p
でプロジェクトを指定し
-l
でリージョンを指定しておきます。
リージョンがUSで構わない場合はなくても大丈夫です。
$ gsutil mb -p <project> -l ASIA gs://unique-storage-id
認証情報を格納したコンテナの作成
以下のコマンドを使い
$ docker run -ti --name gcloud-config google/cloud-sdk gcloud auth login
OAuth認証を済ませましょう。
あともしかしたら役に立つかもなのでプロジェクトのセッティングもしておきます。
$ docker run -ti --volumes-from gcloud-config google/cloud-sdk \
gcloud config set project <project>
DockerRegistryを実行
your-secondary-emailに認証したemailを入れて実行します。
$ docker run -d -e GCS_BUCKET=<unique-storage-id> GCP_ACCOUNT=your-secondary-email -p 5000:5000 \
--volumes-from gcloud-config google/docker-registry
これでdocker ps
で動いてるなーと確認できればOKです。
docker push
以下のコマンドでpushできるか確認しておきましょう。
$ docker tag <image_id> localhost:5000/<name>
$ docker push localhost:5000/<name>
まとめ
docker-registryをサービスを動かすインスタンスでも動かせば
他の認証とか用意しなくても動かせるって記事がありましたので
あとはtravisでよしなにするスクリプト組めばdeployの心配はなくなるかな?