{"id":16105816,"url":"https://github.com/devlights/vscode-docker-java8env-springboot","last_synced_at":"2026-02-17T13:31:01.650Z","repository":{"id":149716884,"uuid":"422104000","full_name":"devlights/vscode-docker-java8env-springboot","owner":"devlights","description":"(VSCode + Remote Container) + Docker + JDK8 + SpringBoot","archived":false,"fork":false,"pushed_at":"2021-10-28T07:22:45.000Z","size":65,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-19T12:55:43.953Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Dockerfile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/devlights.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-10-28T07:18:50.000Z","updated_at":"2021-10-28T07:22:45.000Z","dependencies_parsed_at":"2023-04-25T15:01:57.659Z","dependency_job_id":null,"html_url":"https://github.com/devlights/vscode-docker-java8env-springboot","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/devlights/vscode-docker-java8env-springboot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devlights%2Fvscode-docker-java8env-springboot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devlights%2Fvscode-docker-java8env-springboot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devlights%2Fvscode-docker-java8env-springboot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devlights%2Fvscode-docker-java8env-springboot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/devlights","download_url":"https://codeload.github.com/devlights/vscode-docker-java8env-springboot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devlights%2Fvscode-docker-java8env-springboot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29545559,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-17T13:00:00.370Z","status":"ssl_error","status_checked_at":"2026-02-17T12:57:14.072Z","response_time":100,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-09T19:10:42.206Z","updated_at":"2026-02-17T13:31:01.458Z","avatar_url":"https://github.com/devlights.png","language":"Dockerfile","funding_links":[],"categories":[],"sub_categories":[],"readme":"# はじめに\n\nVSCode上で Remote Container を使い、SpringBootアプリを開発して\n\nステージ用の tomcat と springboot コンテナでも起動するように調整する。\n（デバッグは、VSCodeでデバッグ起動して行う)\n\n作業を行うエンジニアのローカルには java がインストールされている必要はない。\n\n以下のものだけインストールされていれば良い。\n\n- VSCode\n- Docker\n\nまず、以下の作業からスタート\n\n- VSCodeで本ディレクトリを開く\n- コマンドパレットで \"reopen in container\" を実行\n\n# SpringBoot プロジェクト作成\n\n```sh\n$ spring init --dependencies=web demo\n```\n\n# resouces/application.properties を更新\n\n```\nserver.servlet.context-path=/demo\n```\n\n# DemoApplication.java を更新\n\n- War起動時に呼び出されるように SpringBootServletInitializer を継承\n\n```java\npackage com.example.demo;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework.boot.builder.SpringApplicationBuilder;\nimport org.springframework.boot.web.servlet.support.SpringBootServletInitializer;\n\n@SpringBootApplication\npublic class DemoApplication extends SpringBootServletInitializer {\n\n\tpublic static void main(String[] args) {\n\t\tSpringApplication.run(DemoApplication.class, args);\n\t}\n\n\t@Override\n\tprotected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {\n\t\treturn builder.sources(DemoApplication.class);\n\t}\n}\n```\n\n# HelloControllerを作成\n\n```java\npackage com.example.demo;\n\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RestController;\n\n@RestController\npublic class HelloController {\n\n    @RequestMapping(path = \"/hello\")\n    public String home() {\n        return \"helloworld\";\n    }\n}\n```\n\n# VSCode 上で SpringBoot を起動してデバッグ\n\nここまでの調整で、VSCode 上で F5 または SPRING BOOT DASHBOARD よりデバッグ起動できるようになっている。\n\n起動したら ```localhost:8080/demo/hello/``` で出力が表示されることを確認出来る。\n\n# pom.xml を war 出力用に調整\n\n- packaging を切替可能に\n- spring-boot-starter-tomcat を dependency に追加\n  - scope を切替可能に\n- build を調整\n\n```xml\n\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n\u003cproject xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n\txsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd\"\u003e\n\t\u003cmodelVersion\u003e4.0.0\u003c/modelVersion\u003e\n\t\u003cparent\u003e\n\t\t\u003cgroupId\u003eorg.springframework.boot\u003c/groupId\u003e\n\t\t\u003cartifactId\u003espring-boot-starter-parent\u003c/artifactId\u003e\n\t\t\u003cversion\u003e2.5.6\u003c/version\u003e\n\t\t\u003crelativePath/\u003e \u003c!-- lookup parent from repository --\u003e\n\t\u003c/parent\u003e\n\t\u003cgroupId\u003ecom.example\u003c/groupId\u003e\n\t\u003cartifactId\u003edemo\u003c/artifactId\u003e\n\t\u003cversion\u003e0.0.1-SNAPSHOT\u003c/version\u003e\n\t\u003cname\u003edemo\u003c/name\u003e\n\t\u003cdescription\u003eDemo project for Spring Boot\u003c/description\u003e\n\n\t\u003c!--\n\t\tプロファイルの指定で、jar と war を切り替える\n\n\t\thttps://stackoverflow.com/questions/8247720/changing-packaging-based-on-active-profile-in-pom\n\n\t\t- [jar]\n\t\t  - $ mvn package [-Pdebug]\n\t\t- [war]\n\t\t  - $ mvn package -Prelease\n\t--\u003e\n\t\u003cpackaging\u003e${packaging.type}\u003c/packaging\u003e\n\t\u003cprofiles\u003e\n        \u003cprofile\u003e\n            \u003cid\u003edebug\u003c/id\u003e\n            \u003cactivation\u003e\n                \u003cactiveByDefault\u003etrue\u003c/activeByDefault\u003e\n            \u003c/activation\u003e\n            \u003cproperties\u003e\n                \u003cpackaging.type\u003ejar\u003c/packaging.type\u003e\n\t\t\t\t\u003ctomcat.provided\u003e\u003c/tomcat.provided\u003e\n            \u003c/properties\u003e\n\t\t\u003c/profile\u003e\n        \u003cprofile\u003e\n            \u003cid\u003erelease\u003c/id\u003e\n            \u003cproperties\u003e\n                \u003cpackaging.type\u003ewar\u003c/packaging.type\u003e\n\t\t\t\t\u003ctomcat.provided\u003eprovided\u003c/tomcat.provided\u003e\n            \u003c/properties\u003e\n        \u003c/profile\u003e\n\t\u003c/profiles\u003e\n\n\t\u003cproperties\u003e\n\t\t\u003cjava.version\u003e8\u003c/java.version\u003e\n\t\u003c/properties\u003e\n\n\t\u003cdependencies\u003e\n\t\t\u003cdependency\u003e\n\t\t\t\u003cgroupId\u003eorg.springframework.boot\u003c/groupId\u003e\n\t\t\t\u003cartifactId\u003espring-boot-starter-web\u003c/artifactId\u003e\n\t\t\u003c/dependency\u003e\n        \u003cdependency\u003e\n            \u003cgroupId\u003eorg.springframework.boot\u003c/groupId\u003e\n            \u003cartifactId\u003espring-boot-starter-tomcat\u003c/artifactId\u003e\n            \u003cscope\u003e${tomcat.provided}\u003c/scope\u003e\n        \u003c/dependency\u003e\n\t\t\u003cdependency\u003e\n\t\t\t\u003cgroupId\u003eorg.springframework.boot\u003c/groupId\u003e\n\t\t\t\u003cartifactId\u003espring-boot-starter-test\u003c/artifactId\u003e\n\t\t\t\u003cscope\u003etest\u003c/scope\u003e\n\t\t\u003c/dependency\u003e\n\t\u003c/dependencies\u003e\n\n\t\u003cbuild\u003e\n\t\t\u003cfinalName\u003e${project.artifactId}\u003c/finalName\u003e\n\t\t\u003cplugins\u003e\n\t\t\t\u003cplugin\u003e\n\t\t\t\t\u003cgroupId\u003eorg.springframework.boot\u003c/groupId\u003e\n\t\t\t\t\u003cartifactId\u003espring-boot-maven-plugin\u003c/artifactId\u003e\n\t\t\t\u003c/plugin\u003e\n\t\t\t\u003cplugin\u003e\n\t\t\t\t\u003cgroupId\u003eorg.apache.maven.plugins\u003c/groupId\u003e\n\t\t\t\t\u003cartifactId\u003emaven-compiler-plugin\u003c/artifactId\u003e\n\t\t\t\t\u003cconfiguration\u003e\n\t\t\t\t  \u003csource\u003e${java.version}\u003c/source\u003e\n\t\t\t\t  \u003ctarget\u003e${java.version}\u003c/target\u003e\n\t\t\t\t\u003c/configuration\u003e\n\t\t\t  \u003c/plugin\u003e\t\n\t\t\u003c/plugins\u003e\n\t\u003c/build\u003e\n\n\u003c/project\u003e\n\n```\n\n# jar ファイル作成\n\n```sh\n$ (cd demo \u0026\u0026 mvn clean package -Pdebug)\n```\n\n以下で、SpringBootをtomcat内蔵版で起動\n\n```sh\n$ java -jar demo/target/demo.jar\n```\n\n# SpringBoot コンテナ用の Dockerfile 作成\n\n```docker\nFROM adoptopenjdk/openjdk8:alpine-slim\n\nWORKDIR /app\nCOPY ./demo/target/demo.jar  /app\n\nENTRYPOINT [ \"java\", \"-jar\", \"/app/demo.jar\" ]\nCMD [ \"sleep\", \"infinity\" ]\n```\n\n## Docker イメージビルド\n\n```sh\n$ docker image build -t stage-springboot -f Dockerfile.springboot ${PWD}\n```\n\n## Docker コンテナ起動\n\n```sh\n$ docker container run -dit -p 8082:8080 --rm --name stage-springboot-demo stage-springboot\n```\n\n## Docker コンテナ停止\n\n```sh\n$ docker container stop stage-springboot-demo\n```\n\n# war ファイル作成\n\n```sh\n$ (cd demo \u0026\u0026 mvn clean package -Prelease)\n```\n\n# Tomcat コンテナ用の Dockerfile 作成\n\n```docker\n# tomcat 8\n#FROM tomcat:8-jdk8-temurin\n\n# tomcat 9\nFROM tomcat:9-jdk8-temurin\n\n# tomcat 10\n#   tomcat10 で SpringBoot は現状動かない\n#     - https://github.com/spring-projects/spring-boot/issues/22414\n#FROM tomcat:jdk8-temurin\n\nWORKDIR /usr/local/tomcat/webapps/\nCOPY ./demo/target/demo.war  /usr/local/tomcat/webapps/\n```\n\n## Docker イメージビルド\n\n```sh\n$ docker image build -t stage-tomcat -f Dockerfile.tomcat ${PWD}\n```\n\n## Docker コンテナ起動\n\n```sh\n$ docker container run -dit -p 8081:8080 --rm --name stage-tomcat-demo stage-tomcat\n```\n\n## Docker コンテナ停止\n\n```sh\n$ docker container stop stage-tomcat-demo\n```\n\n# 作業しやすいように Makefile を用意\n\n```makefile\nbuild:\n\t(cd demo \u0026\u0026 mvn package -Pdebug -DskipTests=true \u0026\u0026 mvn package -Prelease -DskipTests=true)\n\tdocker image build -t stage-tomcat -f Dockerfile.tomcat ${PWD}\n\tdocker image build -t stage-springboot -f Dockerfile.springboot ${PWD}\n\nclean:\n\t(cd demo \u0026\u0026 mvn clean)\n\nstart-tomcat:\n\tdocker container run -dit -p 8081:8080 --rm --name stage-tomcat-demo stage-tomcat\n\t@echo \"Launch webapp: http://localhost:8081/demo/hello/\"\n\nstop-tomcat:\n\tdocker container stop stage-tomcat-demo\n\nstart-springboot:\n\tdocker container run -dit -p 8082:8080 --rm --name stage-springboot-demo stage-springboot\n\t@echo \"Launch webapp: http://localhost:8082/demo/hello/\"\n\nstop-springboot:\n\tdocker container stop stage-springboot-demo\n```\n\n- clean ターゲット\n  - ビルド生成物削除 (Jar and War)\n- build ターゲット\n  - jar作成\n  - war作成\n  - tomcat dockerイメージ作成\n  - springboot dockerイメージ作成\n- start-tomcat ターゲット\n  - tomcat dockerイメージからコンテナ起動\n  - 8081で起動\n- stop-tomcat ターゲット\n  - tomcat コンテナを停止 (同時にコンテナ削除)\n- start-springboot ターゲット\n  - springboot dockerイメージからコンテナ起動\n  - 8082で起動\n- stop-springboot ターゲット\n  - springboot コンテナを停止（同時にコンテナ削除）\n\n```sh\n$ make clean\n$ make build\n$ make start-tomcat\n$ make stop-tomcat\n$ make start-springboot\n$ make stop-tomcat\n```\n\n# 参考情報\n\n- https://www.saka-en.com/java/spring-boot-war-tomcat/\n- https://qiita.com/YumaInaura/items/1647e509f83462a37494\n- https://qiita.com/rockbirds12/items/13aebcb33214c0bd4d4b\n- https://stackoverflow.com/questions/52628246/spring-boot-web-app-not-running-on-tomcat-9\n- https://qiita.com/bokuwakuma/items/04c0d82b6abfa334fce9\n- https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html\n- https://github.com/spring-projects/spring-boot/issues/22414\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevlights%2Fvscode-docker-java8env-springboot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdevlights%2Fvscode-docker-java8env-springboot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevlights%2Fvscode-docker-java8env-springboot/lists"}