Upgrade to Pro — share decks privately, control downloads, hide ads and more …

20200709_TAKEI_de_code夏まつり_LT.pdf

 20200709_TAKEI_de_code夏まつり_LT.pdf

Noriyuki TAKEI

July 08, 2020
Tweet

More Decks by Noriyuki TAKEI

Other Decks in Technology

Transcript

  1. © SIOS Technology, Inc. All rights Reserved. ブラウザでVS Codeがグリグリ動く︕︕ Visual

    Studio Codespacesのご紹介︕︕ 武井 宜⾏ 2020年7⽉8⽇
  2. © SIOS Technology, Inc. All rights Reserved. About me 2

    BCPVUNF Noriyuki TAKEI ෢Ҫ ٓߦ Information • サイオステクノロジー株式会社 • VS Code Meetup Organizer Favorites • Azure • Squash • Sweets blog https://tech-lab.sios.jp/ core skill Azure Kubernetes Service Docker
  3. © SIOS Technology, Inc. All rights Reserved. Visual Codespacesってスゴイ︕︕ 4

    Visual Studio Codeってなに︖ マイクロソフト製のオープンソースなエディタ 超軽量︕︕サクッと起動︕︕ 超豊富なプラグインで⾃由に拡張可能︕︕ アナタ⾊に染められる︕︕
  4. © SIOS Technology, Inc. All rights Reserved. Visual Codespacesってスゴイ︕︕ 5

    Visual Studio Codespacesってなに︖ ブラウザでグリグリ動くVS Code ほとんど、まんまVS Code 超豊富なプラグインで⾃由に拡張可能︕︕ アナタ⾊に染められる︕︕
  5. © SIOS Technology, Inc. All rights Reserved. Visual Codespacesってスゴイ︕︕ 6

    Visual Studio Code Visual Studio Codespaces まんま同じ︕︕
  6. © SIOS Technology, Inc. All rights Reserved. Visual Codespacesってスゴイ︕︕ 7

    Visual Studio Codespacesに必要なものってなーに︖ ブラウザ Azureのサブスクリプション ちょっとのお⾦
  7. © SIOS Technology, Inc. All rights Reserved. Visual Codespacesってスゴイ︕︕ 8

    実際いくらくらい︖ ※Basic(2 コア、4 GB RAM、64 GB SSD) 、リージョンは⽶国⻄部と します(2020年6⽉10⽇現在で⽇本リージョンがない(ToT))。) アクティブな時間の料⾦(1⽇7時間) 約1,990円 (¥9.476/時間 ✕ 7時間 ✕ 30⽇) ストレージの利⽤料 約707円 (¥0.9820/時間 ✕ 24時間 ✕ 30⽇) 合計 2,697円 お⼩遣いの範囲でOK
  8. © SIOS Technology, Inc. All rights Reserved. セットアップ 12 「Create

    Codespaces」をクリックします。ちなみにCodespaceはちょ うど、PC上で起動したVisual Studio Codeのアプリそのものに相当しま す。
  9. © SIOS Technology, Inc. All rights Reserved. 実⾏基盤 17 Visual

    Studio Codespacesの実⾏基盤はDockerコンテナです。ちょうど、 Visual Studio CodeのRemote DevelopmentでDockerコンテナ作った ときみたいなのがデフォになってます。 … Python PHP Dockerコンテナ Docker Engine Visual Studio Codespaces Azure 特に指定しないと、PythonやPHPなどメ ジャーなランタイムが全部のせされたコ ンテナが出来上がる。
  10. © SIOS Technology, Inc. All rights Reserved. 実⾏基盤 18 環境のカスタマイズは、devcontainer.jsonというファイルを変更するこ

    とで⾏います。 { // 任意の名前でOKです。 "name": "Hello", // 先程作成したDockerfileのファイル名を指定します。 "dockerFile": "Dockerfile", // コンテナへの転送ポートを指定します。 "forwardPorts": [80], // コンテナが作成されたあとに実⾏されるコマンドです。 // Gitリポジトリのsrcディレクトリにはソースが格納されるのですが、ソースを更新したら、すぐに // Apacheに反映されるよう、ApacheのDocumentRootのシンボリックリンク先をsrcディレクトリにしています。 "postCreateCommand": "rm -r /var/www/html;ln -s $PWD/src /var/www/html;usermod -aG root www-data;chmod g+x /root", // コンテナが⽣成されたときに、コンテナ側にインストールする拡張機能です。 // これを指定しないと、コンテナが再⽣成すると拡張機能が消えます。 // 今回はXdebugをインストールします。 "extensions": [ "felixfbecker.php-debug" ] }
  11. © SIOS Technology, Inc. All rights Reserved. カスタマイズ 20 Apache

    PHP with Xdebug ソースコード Dockerコンテナ Docker Engine Visual Studio Codespaces Azure デバッグのため 9000番ポートにアクセス Visual Studio Codespacesの環境をカスタマイズして、PHPでデバッグ できる環境を作ってみます。
  12. © SIOS Technology, Inc. All rights Reserved. カスタマイズ 21 Gitリポジトリに以下のようなファイルを作成します。個々のファイルの

    解説は次ページ以降でバッチリ⾏います。 リポジトリのTop ├── .devcontainer │ ├── Dockerfile │ ├── devcontainer.json │ ├── docker-php.conf │ └── xdebug.ini ├── .vscode │ └── launch.json └── src └── test.php
  13. © SIOS Technology, Inc. All rights Reserved. カスタマイズ 22 #

    リモートデバッグ接続先です。今回はサーバー側にXdebugが動くので、 # 127.0.0.1を指定します。 xdebug.remote_host = 127.0.0.1 # リモートデバッグを⾃動で開始します。 xdebug.remote_autostart = 1 # リモートデバッグを有効にします。 xdebug.remote_enable = 1 # リモートデバッグの接続ポートです。 xdebug.remote_port = 9000 .devcontainer/xdebug.ini PHPのデバッグするモジュールであるxdebugの設定ファイルです。
  14. © SIOS Technology, Inc. All rights Reserved. カスタマイズ 23 <FilesMatch

    \.php$> SetHandler application/x-httpd-php </FilesMatch> DirectoryIndex disabled DirectoryIndex index.php index.html <Directory /var/www/> # ApacheのDocumentRoot(/var/www/html)のシンボリックリンク先に、 # Gitリポジトリにあるソースを格納するディレクトリ(src)を設定します。 # そのためシンボリックリンクを有効にしています。 Options -Indexes +FollowSymLinks AllowOverride All Require all granted </Directory> .devcontainer/docker-php.conf PHPを動作させるためのApacheの設定ファイルです。もともとの設定ファイルに FollowSymLinks(シンボリックリンクを⾜せるような設定)が加わっています。
  15. © SIOS Technology, Inc. All rights Reserved. カスタマイズ 24 #

    PHPの公式Dockerイメージを指定します。 FROM php:7.3.8-apache # xdebugの設定をコンテナにコピーします。このディレクトリに # コピーするとPHPの設定として有効になります。 ADD xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini # 先程記述したdocker-php.confをコンテナにコピーします。 ADD docker-php.conf /etc/apache2/conf-available/docker-php.conf # xdebugのモジュールをインストールをします。 RUN pecl install xdebug && docker-php-ext-enable xdebug .devcontainer/Dockerfile コンテナを作成するためのDockerfileです。
  16. © SIOS Technology, Inc. All rights Reserved. カスタマイズ 25 {

    // 任意の名前でOKです。 "name": "Hello", // 先程作成したDockerfileのファイル名を指定します。 "dockerFile": "Dockerfile", // コンテナへの転送ポートを指定します。 "forwardPorts": [80], // コンテナが作成されたあとに実⾏されるコマンドです。Gitリポジトリのsrcディレクトリにはソースが格納されるのですが、ソースを // 更新したら、すぐにApacheに反映されるよう、ApacheのDocumentRootのシンボリックリンク先をsrcディレクトリにしています。 "postCreateCommand": "rm -r /var/www/html;ln -s $PWD/src /var/www/html;usermod -aG root www-data;chmod g+x /root", // コンテナが⽣成されたときに、コンテナ側にインストールする拡張機能です。 // これを指定しないと、コンテナが再⽣成すると拡張機能が消えます。 // 今回はXdebugをインストールします。 "extensions": [ "felixfbecker.php-debug" ] } .devcontainer/devcontainer.json Visual Studio CodespacesがDockerコンテナに接続するための設定ファイルです。
  17. © SIOS Technology, Inc. All rights Reserved. カスタマイズ 26 {

    "version": "0.2.0", "configurations": [ { "name": "Listen for XDebug", "type": "php", "request": "launch", "pathMappings": { "/var/www/html": "${workspaceRoot}/src" }, "port": 9000 } ] } .vscode/launch.json Visual Studio Codespacesでデバッグを⾏うときの設定ファイルです。
  18. © SIOS Technology, Inc. All rights Reserved. カスタマイズ 27 <?php

    echo "hoge"; echo "fuga"; ?> src/test.php テスト⽤のPHPです。
  19. © SIOS Technology, Inc. All rights Reserved. カスタマイズ 28 では、実際に起動してみましょう。「セットアップ」でご説明した⼿順

    に従って、Codespaceを作成します。もちろん、そのときのGitリポジト リの指定先は、先程のファイルを格納しているリポジトリです。 画⾯左上の波平のおでこみたいな のをクリックして、「Terminal」 →「New Terminal」の順にクリッ クします。
  20. © SIOS Technology, Inc. All rights Reserved. カスタマイズ 29 ターミナルで以下のコマンドを実⾏して、Apacheを起動します。

    root@vsonline_b1caf925-1600-4c16-9626-46e9765c4740:~/workspace/vscodespaces# /etc/init.d/apache2 start [....] Starting Apache httpd web server: apache2AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message . ok ちなみに補⾜なのですが、PHPのDocker公式イメージをはデフォルトでApacheのプロセスが起動するよう になっています。ただし、Visual Studio Codespaces(Visual Studio Codeもそうですが)、Dockerコンテ ナ起動時のコマンドを「while sleep 1; do :; done」で上書きして、Apacheが起動しません。これを防⽌ するためには、devcontainer.jsonに「”overrideCommand”: false」とすればいいのですが、なぜかこれ をやると上⼿く動作しなかったため、都度Apacheを起動しています。
  21. © SIOS Technology, Inc. All rights Reserved. カスタマイズ 32 画⾯左部のパソコンみたいなマークをクリックします。すると下図のように、コンテナに転送

    しているポートの⼀覧が表⽰され、その中に「Port: 80」があります。それを右クリックして、 「Copy Port URL」をクリックして下さい。これは、Visual Studio Codespacesが動作して いるコンテナに接続するためのURLです。Visual Studio CodeをローカルPCで動作している ときのlocalhostに相当するものです。
  22. © SIOS Technology, Inc. All rights Reserved. カスタマイズ 33 別ブラウザを起動して、URLの⼊⼒欄に、「先程コピーしたURL/test.php」と⼊⼒して下さ

    い。これで、デバッグ対象のtest.phpにアクセスできます。Visual Studio Codespacesの画 ⾯を⾒ると、ブレークポイントを付与したところで⽌まっているのがわかります。
  23. © SIOS Technology, Inc. All rights Reserved. まとめ 36 Visual

    Studio Codespacesを使って、 ブラウザだけでPythonでサクッとハロワ︕ https://tech-lab.sios.jp/archives/20257 ؔ࿈ϒϩά Visual Studio Codespacesでブラウザだけで本格アプリ開発︕︕ https://tech-lab.sios.jp/archives/20133 【連載】世界⼀わかりみが深いコンテナ & Docker⼊⾨ https://tech-lab.sios.jp/archives/18811