# VisualStudioCodeでプログラミングを始めよう③ ### 前提条件 手元で作業される場合は、以下のインストールや取得が必要です。 WindowsでもMacでもおk - VisualStudioCodeのインストール https://code.visualstudio.com/download - Gitのインストール [インストール手順](https://git-scm.com/book/ja/v2/%E4%BD%BF%E3%81%84%E5%A7%8B%E3%82%81%E3%82%8B-Git%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB) - DockerHub登録 https://hub.docker.com - Docker Desktopのインストール (Windows10はProじゃないと動きません) https://www.docker.com/products/docker-desktop - マイクロソフトアカウントとAzureサブスクリプションの取得 https://azure.microsoft.com/ja-jp/ ※5/2の「令和になったしAzure始めよう」セッションも合わせてどうぞ。 --- ## VSCodeでコンテナアプリ開発 SoftwareDesign4月号の寄稿されてる記事を参考に進めます。 手元でやる方、分からなかったら買いましょう!(せめてもの宣伝) ### 1. VS Codeに拡張機能を入れる 拡張機能の画面はCtrl+Shift+Xで開ける。 MS公式の拡張機能[**Docker**]を入れる。 - Dockerfile,docker-compose.ymlのハイライトやインテリセンス - VSCodeからDockerDesktopやAzureのコンテナサービスに対する操作 - コマンドパレットからDockerの操作 ### 2.Node.jsでサンプルアプリを作る 以下のリポジトリからClone https://github.com/asashiho/webapp-container ``` > git clone https://github.com/asashiho/webapp-container.git ``` ファイルの解説 - .dockerignore :Dockerイメージに含めないファイルを定義 - .gitignore :gitにコミットしないファイルを定義 - Dockerfile :Dockerイメージの定義 - package.json :node.jsのパッケージの依存関係などを定義 - server.js :コンテナ内で実行されるnode.jsのファイル Dockerfileのベースのイメージをalpineに変えよう コンテナのサイズが1/10以下になるよ ``` 変更前)FROM node:8 変更後)FROM node:8-alpine ``` ### 3.Dockerfileをビルドする。 VSCodeのコマンドパレット(Ctrl+Shift+P)から [**Docker Build Image**]を選択。 Dockerイメージの名前をつけて実行。 [あなたのDockerHubID]/[コンテナ名]:[タグ] (tenn25/webapp-container:1.0) 実際には以下のコマンドが実行されます。 ``` > docker build --rm -f "Dockerfile" -t [あなたのDockerHubID]/webapp-container:1.0 . ``` Dockerイメージができてることを確認する ``` > docker images REPOSITORY TAG IMAGE ID CREATED SIZE tenn25/webapp-container 1.0 aef419f087c8 5 minutes ago 69.8MB node 8-alpine 75a2ffce2f88 7 days ago 66.7MB ``` ### 4.コンテナ起動 コマンドパレット(Ctrl+Shift+P)から [**Docker Run Interactive**]を選択 今作ったDockerイメージを選択。 実際には以下のコマンドが実行されます。 ``` > docker run --rm -it -p 8080:8080/tcp tenn25/webapp-container:1.0 ``` ブラウザでlocalhost:8080にアクセス プログラムが動いてることを確認できればOK ### 5.その後のアプリなどの変更 コマンドパレット(Ctrl+Shift+P)から [**Docker Remove COntainer**]でコンテナ停止後、 再度イメージのビルド→コンテナ起動を実施すればOK 試しにserver.jsを書き換えて再度ビルドしてみよう。 これでローカルでのコンテナアプリ開発はOK!! ### 6.コンテナイメージの共有 DockerHubにPushしよう。 コマンドパレット(Ctrl+Shift+P)から [**Docker Push**]を選択。 自分のDockerHubアカウントで認証 ブラウザ上からDockerHubにログインしてPushされてることを確認しよう。 また、リポジトリがPublicになってることも確認しよう。 ### 7.クラウド(Azure)にデプロイ VSCode画面左側のDocker拡張からも認証して連携可能。 Registries>tenn25>webapp-container:1.0を右クリック [Deploy Image to Azure AppService] を選択。 リソースグループ AppServicePlan名 AppServicePlanのインスタンスサイズ WebAppsの名前(一意) を入力すると、Webappsにデプロイされる。 ブラウザから動作確認。 ### お片付け AppServiceインスタンスの削除を忘れずに。 Azureポータルにログインして、リソースグループごと削除しよう。 --- ## 個人でプログラミングを勉強していく方法 意見くださいー #### モチベーション - 作りたいものがあるといいよね - 同じ言語勉強してる人が身近にいると心強い - ミニマムスタートがいい - スクリプト言語から始めてみる? #### 勉強方法 - Udemy 個人的に導入は一番スムーズ --- ## VSCodeでサーバレスとIoT **★★こっちはセッションとは別で延長戦としてやります。 お時間あればお付き合いください★★** ### 1.拡張機能のインストール Microsoft公式の[**Azure Tools**]という拡張機能をインストール 主要な4サービスが包括的に使えるお手軽拡張機能みたいなやつ 今回はFunction(FaaS)とCosmosDB(NoSQL)を使います。 ### 2.開発環境構築 Windowsの場合はnpmで入れるのでNode.js8.0以上をインストール。 Macはbrewで入れられるので不要。 https://nodejs.org/en/download/ ``` >node --version v10.15.3 ``` Azure Functions Core Toolsのインストール https://docs.microsoft.com/ja-jp/azure/azure-functions/functions-run-local 今回はバージョン2を使います(2はマルチプラットフォーム対応) ``` Win) npm install -g azure-functions-core-tools Mac) brew tap azure/functions brew install azure-functions-core-tools ``` VSCodeを再起動しましょう。 ### 3. AzureFunctionの作成 VSCode拡張画面 「FUNCTION」のフォルダマーク(Create New Project)を選択 - 言語:Javascript - トリガー:HTTP Trigger - バージョン:V2 - Function名:vscode-function-demo プロジェクトが作成されればOK ### 4.ローカルでデバッグ実行 Debug>Start Debugging コンソールに http://localhost:7071/api/vscode-function-demo と表示されるのでアクセス。 http://localhost:7071/api/vscode-function-demo?name=tenn25 とnameパラメータをつけると ``` Hello tenn25 ``` と返ってくる。 次は、このパラメータをDBに保存するようにする。 ### 5.CosmosDBの作成 CosmosDBはグローバル分散型のNoSQLデータベースです。 VSCode拡張画面 「COSMOS DB」から+マーク(Create Account)を選択 - アカウント名:好きに - DBの種類:今回は「SQL(DocumentDB)」を選択 - リソースグループ:新規作成 - リージョン:Japan East ### データベースの作成 VSCode拡張画面 「COSMOS DB」>サブスクリプション>cosmosdb-tenn25(SQL) - データベース名:demo-db - コレクション名:function-logs - パーティションキー:id - スループット:1000 まとめるの疲れた・・ こっから先はSoftwareDesignを読みながら進めます。 ---
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.