VisualStudioで作ったDockerイメージでWebアプリってほんとに動かせるのか試す

前回

 VisualStudioでWebアプリを、Dockerサポートを有効にして作り始めた。ローカルでのデバッグ実行は、ブラウザにサイトが表示されたので成功。ではコンテナを実際Webサーバにのっけるとどうなるだろう。それをAzure Container Instanceで試す。
 DockerでWebアプリを走らせる方法はいくらかある。VPSを用意してそこにDockerを入れるとか。だけどコンテナホスティングサービスを使うのがかなり楽。いろいろ楽。

 まずDockerイメージをビルドしてDocker Hubへプッシュする。Docker Hubをググって探して、アカウントを取得しておく。
 プロジェクト内にdocker-compose.ymlがあるので、imageというキーに対応する値に自分のDockerHubアカウント名を入れる。これで作成されたイメージはDockerHubへプッシュできる。
    image: tetsujin

   ↓
    image: [account name]/tetsujin

 dokcer-compose.ymlの編集が済んだらDockerイメージをビルドする。VisualStudioでソリューション構成をReleaseにして、ソリューションをビルドする。PowerShellを開いて"docker images"を実行し、dokcer-compose.ymlでimageに設定した通りの名前のDockerイメージができているのを確認する。
 確認できたらプッシュ。
docker push matoba/tetsujin




 Dockerイメージをパブリックな場所に用意できた。つぎはAzure Container InstanceでこのDockerイメージを使ってWebアプリとして実行する。Azure Portalで指示に従ってもろもろ埋めて立ち上げる。


 作成されたリソースをのぞいてIPを確認する。

 ブラウザでIPへアクセスしてみる。

動作が確認できた。

 VisualStudioで作ったDockerイメージからWebアプリを動かせるのを確認した。引き続きASP.NET Core MVCでのブログの開発を続けていく。
comment: 0

Azure Web App on LinuxでDockerコンテナによるデプロイをしてみる

 前回でTravisCIからDocker hubへ、テストにとおったDockerイメージをプッシュした。これのデプロイ先としてAzure Web App on Linuxを選んだ場合をちょっとやってみる。

 AzureポータルでWeb App on Linuxを選び、イメージのソースをDocker hubに上げてあるイメージを指定。そして進む。


 デプロイが済むまでちょい待ってからアクセスしてみると、しっかりアプリが起動している。あれ?デプロイこんだけで済んじゃう?という感想。



 ところで、遊びに使うにはちょい高い。まあアプリケーションに注力するために、OSなどをよしなにやってくれるマネージドだからこんなところか。



 Docker hubとAzureの連携で継続的デプロイも可能。
Azure Web App on Linux での Docker Hub の継続的なデプロイ





comment: 0

遠隔でMongoDBサーバのバックアップを取る2

 前回に構築したMongoDBサーバの自動遠隔バックアップシステムを削除し、新しくバックアップシステムを組んだ。今回はMongoDBサーバでバックアップコマンドを実行し、それをAzure Blob StorageにPythonでアップするという流れ。

backup.sh

#!/bin/sh
cd /home/h/backup
mongodump --host foo -u bar -p boo
tar zcvf dump.tar.gz dump
python3.5 /home/h/up.py
rm -rf *


up.py

from azure.storage.blob import BlockBlobService
import datetime

account = "xxx"
key = "yyy"
block_blob_service = BlockBlobService(account_name=account, account_key=key)
filename = datetime.datetime.now().strftime("%Y%m%d")
block_blob_service.create_blob_from_path("mongo", filename, "dump.tar.gz")



comment: 0

遠隔でMongoDBサーバのバックアップを取る1

 クッソなバックアップシステムを組んでしまった。まあとりあえず動く。だからメモとして残すが、バックアップシステムは組みなおす。



 MongoDBのホスティングサービスを使いたいのだが、経済的な理由から安いVPSをMongoDBサーバにしている。
ConoHaにMongoDBサーバを立てた

 ↑の自動バックアップを組みたい。バックアップは外部に置く。外部にバックアップを置くことを考えると、もっとも簡単な方法は、バックアップを置く端末からバックアップコマンドを実行することだろう。
mongodump --host foo -u bar -p pw


 うちの常時稼動RaspberryPiで上記を実行したい。しかしそのコマンドが入ったMongoDB ToolsはARMでは64bit用しか用意されていない。標準のRaspbianは今のところ32bitOSなので今のところ無理。経済的に超ローコストで問題を解決したい。
 RaspberryPiにMongoDB Toolsは入れられん。だけどAzureのCLIは入れられる…
・RaspberryPiでAzureのVMの電源を入れたり切ったり
→AzureのVMにMongoDB Toolsを入れてそっちでバックアップ
 上記のようにすれば、VMの電源は一時的にしか入らないので大したコストはかからん。

 まずRaspberryPiにAzureCLIを入れて、VMの電源をコントロールできるようにする。AzureCLIをインストールしたら、下記のような.shを用意してCRONで走らせるようにする。
az login -u foo -p bar

az account set -s xxx-xxx-xxx
az vm start -g xxx -n yyy
#az vm deallocate -g xxx -n yyy


 次にVMでmongodumpコマンドをCRONに入れる。これでMongoDBサーバのバックアップが自動でとれるようになった。しかもVMは一時的にしか電源が入らないからコストにはならん…アホらし。
 MongoDBサーバのバックアップを取るのに、コストを抑えるためだからってわざわざこんな構成組むのはアホらし。
・問題解決はシンプルに
・金を払ってシンプルに解決できるならそれで
・金がなくても極力シンプルに


 課題はシンプルに解決する。一通り組み終わって、べつの解決法を思いついたのでバックアップシステムの組み直し。
comment: 0

RaspbianにAzure CLI 2.0を入れる

 RaspberryPiからAzureで立てた仮想マシンに仕事をしてほしかったので、CLIをインストールしてみた。ストレートにワンコマンド…といかなかったのでメモ。
sudo apt-get install libffi-dev

sudo apt-get install python-dev
#sudo apt-get install python3-dev
sudo apt-get install libssl-dev

sudo curl -L https://aka.ms/InstallAzureCli | bash


 インストールが済んだらコマンドで確認してみる。

comment: 0