Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Visual Studio Code + Docker + Remote Developmen...
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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
第50回 Tokyo Jazug Night/react-deepdive
noriyukitakei
0
89
RAG構築のためのAzure OpenAI Serviceリファレンスアーキテクチャ詳解/wakarimiragarchitecture
noriyukitakei
0
280
生成AI時代の検索手法〜スターウォーズの登場人物で紐解くベクトル/セマンティック/ハイブリッド検索〜/wakarimiaisearch
noriyukitakei
0
89
Prompt flowでブログ記事紹介ツイートアプリをラクチン開発/wakarimipromptflow
noriyukitakei
0
62
世界一わかりみの深いAzure OpenAI Service/wakarimiaoai
noriyukitakei
1
910
AIとペアプロ!! ChatGPTとGitHub Copilotで ToDoアプリを爆速ライブコーディング/wakarimigithubcopilot
noriyukitakei
0
98
世界一わかりみの深いApplicationGateway/wakarimiappilicationgateway
noriyukitakei
0
390
クラウドデザインパターンを使ってクールな設計をしよう/jazug12th
noriyukitakei
1
420
アウトプットはいいぞ!!〜人生折り返し地点からの情報発信で学びが楽しくなった話〜/outputisgood
noriyukitakei
0
210
Other Decks in Technology
See All in Technology
SONiCで構築・運用する生成AI向けパブリッククラウドネットワーク ~実装編~
sonic
0
270
【セミナー資料】Claude Code をセキュアに使うための考え方と設定の勘どころ / Claude Code Webinar 20260616
masahirokawahara
2
410
GitHub Copilot 最新アップデート – 「一歩先」の実践活用術
moulongzhang
4
1.5k
2026TECHFRESH畢業分享會 - Lightning Talk - 資料也要 CI/CD? 用 Airbyte 自動化資料同步
line_developers_tw
PRO
0
1.2k
不要なレビューをAIにまかせて AIコーディングの環境改善を加速した
shoota
1
220
2026TECHFRESH畢業分享會 - 原生還是跨平台? App 開發踩坑實錄
line_developers_tw
PRO
0
1.3k
Flow 不死:AI 時代 DevOps 的不變本質
cheng_wei_chen
2
210
AI駆動開発を通して感じた、 AI時代のデザイナーの役割変化
whisaiyo
3
2.3k
AWS Security Hub CSPMの成功・失敗体験
cmusudakeisuke
0
180
ACE-Step-1.5で見る 音楽生成AIのしくみと“破綻だけ直す”Retake機能の開発【zennfes spring 2026 登壇資料】
personabb
1
530
失敗を資産に変えるClaude Code
shinyasaita
0
710
いまさら聞けない「仕様駆動開発入門」 〜AI活用時代の開発プロセスを考える〜
findy_eventslides
2
160
Featured
See All Featured
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
RailsConf 2023
tenderlove
30
1.5k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.4k
Optimising Largest Contentful Paint
csswizardry
37
3.7k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
170
From π to Pie charts
rasagy
0
210
So, you think you're a good person
axbom
PRO
2
2.1k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
730
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
750
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.9k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
330
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2k
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特集に執筆しました。