釣り臭いタイトルですね。
内容は結構他の人とかぶってるんですが、公式通りするとハマる部分があったので書いておく。
※これは開発環境とかの用途で使って下さい、本番でやるんだったらGKEとかの方がいいです。
※GCPは使える、課金設定は済んでる前提です。
GCPのGCEでDockerを動かす理由
これはずばりDockerに特化したOSが既に入っており、それを使うと楽だからです。
今回はSwaggerをみんなが見れるところで起動したかったので何か一番いいやつを探したら
GCP+docker-composeでした。
GCEマシンを立ち上げる
ふつーにWebGUIからGCEを立ち上げます。
開発用であんまりパワーいらないのでマシンタイプはmicroで十分。
ここでOSに「Container-Optimized OS 69-10895.172.0 stable」を選択します。
起動したらgcloudコマンドでsshします。
ここからgcloudコマンドは分かります。
gitから必要なソースを取得
今回はswagger-all-in-oneという超絶便利なソースを使わせてもらいます。
git clone https://github.com/elevennines-inc/swagger-all-in-one-docker-compose.git
docker-composeをインストール
公式の手順はこちら。
https://cloud.google.com/community/tutorials/docker-compose-on-container-optimized-os
docker-composeってdockerImagegaあるのねw
$ docker run docker/compose:1.22.0 version
この後公式では.barhrcにdocker-composeコマンドをaliasしていますが
この通りやるとハマりました。/rootfsってなんやねん。
$ echo alias dc="'"'docker run --rm \
-v /var/run/docker.sock:/var/run/docker.sock \
-v "$PWD:/$PWD" \
-w="/$PWD" \
docker/compose:1.22.0'"'" >> ~/.bashrc
$ source ~/.bashrc
↑個人的にdocker-composeって打つのが面倒なのでいつもdcってコマンドでalias切ってます。
docker-compose実行
さっきのcloneしたところに移動してdocker-composeを実行。
$ dc up -d --build
$ dc ps
Name Command State Ports
----------------------------------------------------------------------------------------
swagger-api /usr/local/bin/apisprout / ... Up 0.0.0.0:8083->8000/tcp
swagger-editor sh /usr/share/nginx/docker ... Up 0.0.0.0:8081->8080/tcp
swagger-nginx nginx -g daemon off; Up 80/tcp, 0.0.0.0:8084->8084/tcp
swagger-ui sh /usr/share/nginx/run.sh Up 80/tcp, 0.0.0.0:8082->8080/tcp
ファイアウォールに穴あけパンチ
GCEでデフォルトで作ったら80しか空いていないので8081〜8084の穴を開けましょう。
このリンクから辿っていって、tcp入力欄にカンマ区切りで8081,8082,8083,8084 って入力すればOK。
あとは作った設定をGCEに紐づけましょう。