GCP上にオンラインメモ帳をつくる


手数をかけずにオンラインメモ帳環境をつくってみる。

環境

  • インフラ
    • GCE(GCP)
    • docker-compose
  • アプリケーション
    • HackMD
    • PostgreSQL(MySQLも可)

今回はGCPの無料枠でやってみるのでGCP公式の手順に沿って実施する。

GCEインスタンスの作成

GUIでポチポチしていくだけなのでかんたん。

左上のメニュー「≡」からCompute Engineを選択し、VMインスタンスを作成する。

今回は無料枠なのでMicroを選択。

ブートディスクはContainer-Optimized OSのstableで一番新しいものを選択する。
=> なぜかうまく行かなかったのでContainer-Optimized OS, 69-10895.385.0 stableで作り直した。

SSHでログインしDockerの起動

作成後、ターミナルからSSHでログインする。
ログイン情報は以下から確認できる。

SSHでログイン後、docker-composeをセットアップ。

docker run docker/compose:1.24.0 version

HackMDのdockerリポジトリをclone。

git clone https://github.com/hackmdio/docker-hackmd.git
cd docker-hackmd/

80番ポートで接続できるようにdockerホストの80ポートをコンテナの3000ポートにフォワード。

docker-compose.yml
  ~略~
  app:
    ports:
      # 3000を80に変更
      # - "3000:3000"
      - "80:3000"
  ~略~

docker-composeコマンドのエイリアスを作成する。

echo alias docker-compose="'"'docker run --rm \
     -v /var/run/docker.sock:/var/run/docker.sock \
     -v "$PWD:$PWD" \
     -w="$PWD" \
     docker/compose:1.24.0'"'" >> ~/.bashrc

反映。

$ source ~/.bashrc

docker-composeで起動。

$ docker-compose up -d
Starting docker-hackmd_database_1 ... done
Starting docker-hackmd_app_1      ... done

これで以下のURLにアクセスすればCodiMDのページが!

http://インスタンスの外部IP/

(番外編)ポートの穴あけ

あえてdocker-compose.ymlを編集せずに3000番ポートに穴をあけてみるパターンも試してみた。(試してみたかっただけ)

インスタンスの「ネットワーク詳細を表示」を選択。

左のファイアウォールルールから「ファイアウォールルールを作成」を選択。

以下のように3000番ポートを許可するルールを作成する。

項目 入力内容
名前 allow-3000
ターゲットタグ allow3000-server
IP範囲 0.0.0.0/0
プロトコルとポート tcp:3000


GCEインスタンスに戻り、編集を選択する。

ネットワークタグに先程作成した「allow3000-server」を入力して保存。

これでポートを指定すればCodiMDのページが表示される。

http://インスタンスの外部IP:3000/