Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Visual Studio Code + Docker + Remote Developmen...
Search
Noriyuki TAKEI
February 19, 2020
Technology
2.8k
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Visual Studio Code + Docker + Remote DevelopmentでTomcat上のWebアプリを超簡単にデバッグ
Noriyuki TAKEI
February 19, 2020
More Decks by Noriyuki TAKEI
See All by Noriyuki TAKEI
魔法少女がClaude Codeを監視する / ccportal-deck
noriyukitakei
0
560
魔法少女がClaude Codeを監視する / ccportal-deck
noriyukitakei
3
150
ラズパイ×ローカルLLMで“MAGIシステム”を作る 〜3体のAIによる合議制マルチエージェント〜/magibypi
noriyukitakei
0
110
ループエンジニアリングでE2Eテストを実践
noriyukitakei
0
510
第50回 Tokyo Jazug Night/react-deepdive
noriyukitakei
0
110
RAG構築のためのAzure OpenAI Serviceリファレンスアーキテクチャ詳解/wakarimiragarchitecture
noriyukitakei
0
320
生成AI時代の検索手法〜スターウォーズの登場人物で紐解くベクトル/セマンティック/ハイブリッド検索〜/wakarimiaisearch
noriyukitakei
0
130
Prompt flowでブログ記事紹介ツイートアプリをラクチン開発/wakarimipromptflow
noriyukitakei
0
79
世界一わかりみの深いAzure OpenAI Service/wakarimiaoai
noriyukitakei
1
960
Other Decks in Technology
See All in Technology
AI感のないAWS構成図をAIエージェントに描かせたい!
sagochiko
1
280
AIで社員の自主発信に広報目線を組み込む
_mossann_t
0
140
2026-09-08 そのJavaモダナイゼーション、AIに丸投げで大丈夫?IBM Bobで変わる品質と効率
yutanonaka
1
180
「ピッケル本」日本語版は4.0(第6版)が出版されるべき / pickaxe4-nagoyark05
kakutani
2
290
【ゲームメーカーズスクランブル2026】『Shadowverse: Worlds Beyond』UIとアニメーションで実現する最高のユーザー体験を叶えるプロトタイピング
cygames
PRO
0
340
アクセスキーこわい やめかたと漏らさない工夫
sassssan68
1
730
AIは推し活である。
kurazuuuuuu
1
960
特殊変数大全
dak2
0
120
Azure Serverless 2026:Production-ready な AI エージェント基盤 / Azure Serverless 2026: Production-Ready AI Agent Platform
miyake
2
580
Von-Neumann Machines, Dreams & The Futures of IT
ufried
0
130
「どのログを見ればいい?」 から始めた サーバーレス障害解析
y_waka1
1
140
CLIライブラリ開発を支える技術
htnabe
0
150
Featured
See All Featured
Exploring anti-patterns in Rails
aemeredith
4
510
The SEO Collaboration Effect
kristinabergwall1
1
570
The Mindset for Success: Future Career Progression
greggifford
PRO
0
510
So, you think you're a good person
axbom
PRO
2
2.2k
A Soul's Torment
seathinner
8
3.6k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
420
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.6k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
203
76k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
600
Large-scale JavaScript Application Architecture
addyosmani
515
110k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
920
Transcript
© SIOS Technology, Inc. All rights Reserved. VS Code Meetup
#3 〜 VS Code + Docker + Remote Developmentで Tomcat上のWebアプリを 超簡単にデバッグ 〜 技術部 2020年2⽉19⽇ 武井 宜⾏ サイオステクノロジー株式会社
© SIOS Technology, Inc. All rights Reserved. About me 2
Internal Only BCPVUNF Noriyuki TAKEI Ҫ ٓߦ Information • サイオステクノロジー株式会社 • クラウドネイティブアプリケーション • 千葉県在住 Favorites • Azure • Squash • Sweets blog https://tech-lab.sios.jp/ core skill Azure Kubernetes Service Azure Bot Service
© SIOS Technology, Inc. All rights Reserved. VS Code Meetup
3 Internal Only みなさん、 Visual Studio Codeの Remote Development 使ってますか︖ 本セッションの ブログのURL
© SIOS Technology, Inc. All rights Reserved. VS Code Meetup
4 Internal Only リモートサーバー上のコードを直接編集が可能 SSHで接続可能なリモートサーバーやコンテナ、WSL上に あるファイルをVisual Studio Codeから直接編集できる Remote Developmentとは︖ 拡張機能をリモートサーバーにインストールし、 リモートサーバー上で動作させることが可能 本セッションの ブログのURL
© SIOS Technology, Inc. All rights Reserved. VS Code Meetup
5 Internal Only 今回は Tomcat上の Webアプリを VS Codeでデバッグします。 本セッションの ブログのURL
© SIOS Technology, Inc. All rights Reserved. VS Code Meetup
6 Internal Only まずはちょっと イケてないやり⽅ 本セッションの ブログのURL
© SIOS Technology, Inc. All rights Reserved. VS Code Meetup
7 Internal Only 本セッションの ブログのURL OS PC Tomcat Web アプリケーション Java Visual Studio Code Tomcat for Java プラグイン ソースコード 構成はこんな感じ
© SIOS Technology, Inc. All rights Reserved. VS Code Meetup
8 Internal Only 本セッションの ブログのURL Java Extension Pack(Javaのコード補完などを⾏ってくれる便利な拡 張機能)を⼊れます。
© SIOS Technology, Inc. All rights Reserved. VS Code Meetup
9 Internal Only 本セッションの ブログのURL Tomcat for Javaプラグインを⼊れます。今回のキモです。これで Tomcat上のWebアプリを稼働・デバッグ出来ます。
© SIOS Technology, Inc. All rights Reserved. VS Code Meetup
10 Internal Only 本セッションの ブログのURL Mavenでプロジェクトの雛形を作成します。 $ mvn archetype:generate -DgroupId=com.example \ -DartifactId=helloworld \ -DarchetypeArtifactId=maven-archetype-webapp \ -DinteractiveMode=false こんなファイルとディレクトリが 出来上がります。
© SIOS Technology, Inc. All rights Reserved. VS Code Meetup
11 Internal Only サンプルのサーブレットを作成します。普通のハロワです。 package com.example; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class Hello extends HttpServlet { private static final long serialVersionUID = 1L; public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { PrintWriter out; res.setContentType("text/html; charset=utf-8"); out = res.getWriter(); out.println("<html><body>"); out.println("<h1>Hello World!</h1>"); out.println("</body></html>"); } } Hello.java 本セッションの ブログのURL
© SIOS Technology, Inc. All rights Reserved. VS Code Meetup
12 Internal Only 本セッションの ブログのURL 先程作成したHello.javaを以下のようなディレクトリを作成して配置 します。
© SIOS Technology, Inc. All rights Reserved. VS Code Meetup
13 Internal Only おなじみのpom.xmlです。 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven- v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>helloworld</artifactId> <packaging>war</packaging> <version>1.0-SNAPSHOT</version> <name>helloworld Maven Webapp</name> <url>http://maven.apache.org</url> <!-- ここから追加 --> <properties> <maven.compiler.source>1.6</maven.compiler.source> <maven.compiler.target>1.6</maven.compiler.target> </properties> <!-- ここまで追加 --> pom.xml 本セッションの ブログのURL
© SIOS Technology, Inc. All rights Reserved. VS Code Meetup
14 Internal Only <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <!-- ここから追加 --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.0.1</version> <scope>compile</scope> </dependency> <!-- ここまで追加 --> </dependencies> <build> <finalName>helloworld</finalName> </build> </project> pom.xml 〜 前ページからの続き 〜 本セッションの ブログのURL
© SIOS Technology, Inc. All rights Reserved. VS Code Meetup
15 Internal Only web.xmlに以下の内容を追加します。おなじみのServletのURLマッピ ングですね。 <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app> <display-name>Archetype Created Web Application</display-name> <!-- ここから追加 --> <servlet> <servlet-name>Hello</servlet-name> <servlet-class>com.example.Hello</servlet-class> </servlet> <servlet-mapping> <servlet-name>Hello</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping> <!-- ここまで追加 --> </web-app> web.xml 本セッションの ブログのURL
© SIOS Technology, Inc. All rights Reserved. VS Code Meetup
16 Internal Only 本セッションの ブログのURL Tomcatをダウンロードして解凍します(2020年1⽉22⽇時点での8.5 系最新バージョンです)。 $ wget http://ftp.riken.jp/net/apache/tomcat/tomcat-8/v8.5.50/bin/apache- tomcat-8.5.50.tar.gz $ tar xzvf apache-tomcat-8.5.50.tar.gz
© SIOS Technology, Inc. All rights Reserved. VS Code Meetup
17 Internal Only 解凍して出来たTomcatディレクトリをMavenプロジェクト直下に移動 します。以下のようになります。 本セッションの ブログのURL
© SIOS Technology, Inc. All rights Reserved. VS Code Meetup
18 Internal Only Visual Studio Code左メニュー部最上部の四⾓が2つ重なっているア イコンをクリックして「Open Folder」をクリックします。そして先 程作成した「helloworld」のディレクトリを選択します。 本セッションの ブログのURL
© SIOS Technology, Inc. All rights Reserved. VS Code Meetup
19 Internal Only 本セッションの ブログのURL コマンドパレットを起動します。
© SIOS Technology, Inc. All rights Reserved. VS Code Meetup
20 Internal Only 本セッションの ブログのURL 「Tomcat: Add Tomcat Server」を選択します。
© SIOS Technology, Inc. All rights Reserved. VS Code Meetup
21 Internal Only 先程Tomcatを解凍したディレクトリ(apache-tomcat-8.5.50)を選択 します。 本セッションの ブログのURL
© SIOS Technology, Inc. All rights Reserved. VS Code Meetup
22 Internal Only 本セッションの ブログのURL 画⾯左下部に「TOMCAT SERVERS」というのが表⽰され、その中に 先程選択したTomcatが表⽰されます。右クリックして「Start」をク リックします。
© SIOS Technology, Inc. All rights Reserved. VS Code Meetup
23 Internal Only 下記のように緑⾊になれば、正常に起動した証拠です。 本セッションの ブログのURL
© SIOS Technology, Inc. All rights Reserved. VS Code Meetup
24 Internal Only 本セッションの ブログのURL 「helloworld」ディレクトリに移動し、以下のコマンドを実⾏して warファイルを作成します。 $ mvn package
© SIOS Technology, Inc. All rights Reserved. VS Code Meetup
25 Internal Only 本セッションの ブログのURL targetディレクトリ配下に「helloworld.war」ができますので、それ を右クリックして「Debug on Tomcat Server」をクリックします。
© SIOS Technology, Inc. All rights Reserved. VS Code Meetup
26 Internal Only 本セッションの ブログのURL Hello.javaを開いて、任意の地点にブレークポイントを打ちます。
© SIOS Technology, Inc. All rights Reserved. VS Code Meetup
27 Internal Only 本セッションの ブログのURL 「http://127.0.0.1:8080/helloworld/hello」にブラウザでアクセス します。すると先程ブレークポイントを打ったところで⽌まりま す︕︕ステキーΣ(゚∀゚ノ)ノキャー
© SIOS Technology, Inc. All rights Reserved. VS Code Meetup
28 Internal Only 本セッションの ブログのURL イケてない・・・
© SIOS Technology, Inc. All rights Reserved. VS Code Meetup
29 Internal Only 本セッションの ブログのURL OS PC Tomcat Web アプリケーション Java Visual Studio Code Tomcat for Java プラグイン ソースコード プラグインをローカルにイ ンストールしなければなら ない。 JavaやTomcatをローカル にインストールしなければ ならない。
© SIOS Technology, Inc. All rights Reserved. VS Code Meetup
30 Internal Only 本セッションの ブログのURL それ、 Remote Developmentと Dockerで 解決できますから︕︕
© SIOS Technology, Inc. All rights Reserved. VS Code Meetup
31 Internal Only 本セッションの ブログのURL Remote DevelopmentとDockerを使うとこんな感じになります。
© SIOS Technology, Inc. All rights Reserved. VS Code Meetup
32 Internal Only 本セッションの ブログのURL 左部メニュー最下部にあるアイコン(四⾓が4つ並んでいるもの)をク リックし、「remote development」と⼊⼒し、Remote Developmentの拡張機能をインストールします。
© SIOS Technology, Inc. All rights Reserved. VS Code Meetup
33 Internal Only 本セッションの ブログのURL 次に新しいディレクトリを作成し、以下のようにファイルを作成しま す。srcディレクトリとpom.xmlは先程作成したものからまんまコピー したものです。そして今回新しく作成する必要があるのは、以下の2つ です。 • .devcontainerディレクトリとその配下のファイル • .vscodeディレクトリとその配下のファイル
© SIOS Technology, Inc. All rights Reserved. VS Code Meetup
34 Internal Only 本セッションの ブログのURL まず.devcontainer/Dockerfileの内容から説明します。コンテナを作 成するために必要なおなじみのものです。 # Tomcatのイメージをダウンロードします。 FROM tomcat:8.5.49-jdk8-openjdk # ローカルのソースコードをマウントするためのディレクトリを作成します。 RUN mkdir /opt/project # Mavenをインストールします。 RUN apt-get update && \ apt-get -y install maven Dockerfile
© SIOS Technology, Inc. All rights Reserved. VS Code Meetup
35 Internal Only 次に.devcontainer/devcontainer.jsonの内容です。VS Codeからコ ンテナを⽣成するための設定を記載します。 { # 任意の名前でOKです。 "name": "Hello", # Remoteでログインしたいコンテナを作成するためのDockerfileの名称を指定します。 "dockerFile": "Dockerfile", # この設定によりホストOSの8080宛の通信がコンテナの8080に転送されます。 "forwardPorts": [8080], # コンテナに⼊ったときに最初にここで指定したものがカレントディレクトリになります。 "workspaceFolder": "/opt/project", # ホストOSのVisual Studio Codeのプロジェクト直下のディレクトリをコンテナの/opt/projectディ レクトリにマウント>します。 "mounts": [ "source=${localWorkspaceFolder},target=/opt/project,type=bind,consistency=cached" ] devcontainer.json 本セッションの ブログのURL
© SIOS Technology, Inc. All rights Reserved. VS Code Meetup
36 Internal Only # コンテナが⽣成されたときに、コンテナ側にインストールする拡張機能です。 # これを指定しないと、コンテナが再⽣成すると拡張機能が消えます。 # 今回はJava Extension PackとTomcat for Javaをインストールします。 "extensions": [ "adashen.vscode-tomcat", "vscjava.vscode-java-pack" ] } devcontainer.json 〜 前ページからの続き 〜 本セッションの ブログのURL
© SIOS Technology, Inc. All rights Reserved. VS Code Meetup
37 Internal Only 本セッションの ブログのURL 次に.vscode/settings.jsonの内容です。これはHot Code Replaceの 定義です。これをautoにしておくと、javaファイルを変更したときに、 わざわざwarを作り直さなくても、⾃動的にTomcatに変更内容が反映 されます。 { "java.debug.settings.hotCodeReplace": "auto" } settings.json
© SIOS Technology, Inc. All rights Reserved. VS Code Meetup
38 Internal Only 本セッションの ブログのURL これで準備は整いました。Remote Developmentの機能でコンテナに 接続します。Visual Studio Codeの左隅にある緑のボタンをクリック します。
© SIOS Technology, Inc. All rights Reserved. VS Code Meetup
39 Internal Only 本セッションの ブログのURL すると以下のようなリストが表⽰されますので、「Remote- Containers: Open Folder in Container…」 をクリックします。そし て先程作成したディレクトリを選択します。
© SIOS Technology, Inc. All rights Reserved. VS Code Meetup
40 Internal Only 本セッションの ブログのURL 初回はちょっと時間がかかります。
© SIOS Technology, Inc. All rights Reserved. VS Code Meetup
41 Internal Only 本セッションの ブログのURL コマンドパレットを起動します。
© SIOS Technology, Inc. All rights Reserved. VS Code Meetup
42 Internal Only 本セッションの ブログのURL 「Tomcat: Add Tomcat Server」を選択します。
© SIOS Technology, Inc. All rights Reserved. VS Code Meetup
43 Internal Only 本セッションの ブログのURL コンテナ側のTomcatディレクトリである「/usr/local/tomcat」を選 択して、「OK」をクリックします。
© SIOS Technology, Inc. All rights Reserved. VS Code Meetup
44 Internal Only 本セッションの ブログのURL 画⾯左下部に「TOMCAT SERVERS」というのが表⽰され、その中に 先程選択したTomcatが表⽰されます。右クリックして「Start」をク リックします。
© SIOS Technology, Inc. All rights Reserved. VS Code Meetup
45 Internal Only 本セッションの ブログのURL 下記のように緑⾊になれば、正常に起動した証拠です。
© SIOS Technology, Inc. All rights Reserved. VS Code Meetup
46 Internal Only 本セッションの ブログのURL TERMINALにて「mvn package」と⼊⼒してwarファイルを作成しま す。
© SIOS Technology, Inc. All rights Reserved. VS Code Meetup
47 Internal Only 本セッションの ブログのURL targetディレクトリ配下に「helloworld.war」ができますので、それ を右クリックして「Debug on Tomcat Server」をクリックします。
© SIOS Technology, Inc. All rights Reserved. VS Code Meetup
48 Internal Only 本セッションの ブログのURL Hello.javaを開いて、任意の地点にブレークポイントを打ちます。
© SIOS Technology, Inc. All rights Reserved. VS Code Meetup
49 Internal Only 本セッションの ブログのURL 「http://127.0.0.1:8080/helloworld/hello」にブラウザでアクセス します。すると先程ブレークポイントを打ったところで⽌まりま す︕︕ステキーΣ(゚∀゚ノ)ノキャー
© SIOS Technology, Inc. All rights Reserved. VS Code Meetup
50 Internal Only 本セッションの ブログのURL 繰り返しになりますが、今回の環境は以下の通りとてもスッキリして ます。
© SIOS Technology, Inc. All rights Reserved. VS Code Meetup
51 Internal Only VS Code スゴイ︕︕ 本セッションの ブログのURL
© SIOS Technology, Inc. All rights Reserved. さいごに 52 Internal
Only 本資料の内容は 以下のブログで公開しています。 技術ブログ「SIOS TECH.LAB」 https://tech-lab.sios.jp/
© SIOS Technology, Inc. All rights Reserved. さいごに 53 Internal
Only 2019年11⽉号のSoftware Designの Azure特集に執筆しました。