Springの公式Webサイトには、Dockerを使用してSpring Bootアプリケーションを公開する方法を紹介するGeting Start Articleがあります。それは非常に詳細ですが、いくつかの詳細は言及されておらず、公式ウェブサイトのエントリマニュアルは英語版です。英語の貧弱な友人のための参照として、ここで再編成して録音し、自分に覚書を残してください。
準備する
必要なツールと運用環境:
プロジェクトを作成します
まず、Spring Bootプロジェクトを作成する必要があります。 Spring Tool SuiteとIntellijのアイデアには、作成するプラグインが付属しています。別の方法は、http://start.spring.io/から作成することです。この方法をお勧めします。 Group IdとArtifact Idにフォームに記入した後、[プロジェクトの生成]ボタンをクリックして生成し、ダウンロードしたプロジェクトをお気に入りのIDEにインポートします。
pom.xmlファイルを変更し、docker-maven-pluginを追加します。
<?xml version = "1.0" encoding = "utf-8"?> <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/xsd/maven-4.0.0.0.0.0.0.0.0. <modelversion> 4.0.0 </modelversion> <groupid> org.matrixstudio.springboot </groupid> <artifactid> docker </artifactid> <バージョン> 0.0.1-snapshot </version> <packaging> jar </packaging> <name </name> <説明<groupid> org.springframework.boot </groupid> <artifactid> spring-boot-boot-starter-parent </artifactid> <version> 1.5.2.release </version> <relativepath/> <! - lookup parent from repository-> </parent> <properties> <project.build. <project.reporting.outputencoding> utf-8 </project.reporting.outputencoding> <java.version> 1.8 </java.version> <docker.image.prefix> springio </docker.image.prefix> </properties> <artifactid> spring-boot-starter-web </artifactid> </dependency> <dependency> groupid> org.springframework.boot </groupid> <artifactid> spring-boot-starter-test </artifactid> <scope> test </scope> </dentency <groupid> org.springframework.boot </groupid> <artifactid> spring-boot-maven-plugin </artifactid> </plugin> <! - docker mavenプラグイン - > <plugin> <groupid> com.spotify </groupid> <artifactid> docker-maven-plugin </artifactid> <Imagename> $ {docker.image.prefix}/$ {project.artifactid} </imageName> <dockerdirectory> src/main/docker </dockerdirectory> <sostas> <resurce>/</targetpath> </targetpath> <directory> $ {project.directory} </directory> <cludent> $ {project.build.finalname} .jar </inctrual> </resources> </configuration> </plugin> </plugins> </build> </project>Docker-Maven-Pluginプラグインは、Spring Boot ProjectsをDocker画像に構築するために使用されます。
DockerApplication.javaファイルを開き、次のコンテンツに変更します。
Package org.matrixstudio.springboot; Import org.springframework.boot.springApplication; Import org.springframework.boot.autoconfigure.springbootapplication; Import org.springframework.web.bind.annotation.RequestMapping; org.springframework.web.bind.annotation.restcontroller;@springbootapplication@restcontrollerpublic class dockerapplication {@requestmapping( "/")public string home(){return "hello docker world"; } public static void main(string [] args){springApplication.run(dockerApplication.class、args); }}コンパイルして実行します
次のコマンドを実行して、スプリングブートプロジェクトを実行します。
MVNパッケージ&& Java -jar Target/docker-0.0.1-snapshot.jar
ブラウザを開き、 http://localhost:8080を入力します。 「Hello Docker World」が表示される場合、それは実行が成功したことを意味します。
注:上記のコマンドを実行するときは、公式のMavenリポジトリから多くの依存関係パッケージをダウンロードする必要があります。国内ネットワークは安定しておらず、ダウンロード速度が遅いです。 AlibabaのMaven Mirrorリポジトリなど、サードパーティが提供するミラーサイトの使用を検討できます。次の構成を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.apach/4.0. http://maven.apache.org/xsd/maven-4.0.0.0.xsd "> <modelversion> 4.0.0 </modelversion> <groupid> org.matrixStudio.springboot </groupId> <artifactid> docker </artifactid> <! - 依存関係 - > ...... <! - ビルド - > ...... <! - aliyunリポジトリ - > <リポジトリ> <id> central </id> <name> aliyun </name> <url> http://maven.aliyun.com/nexus/content/groups/public/ </repository> </repository> </repository> </repository> </project>
コンテナ化プロジェクト
まず、Dockerがマシンにインストールされていることを確認してください。 DockerがLinuxサーバーにインストールされている場合は、上記のSpring Bootプロジェクトをサーバーにアップロードする必要があります。次の手順では、Linux環境で動作していると仮定します。
dockerfileを作成します
DockerはDockerfileという名前のファイルを使用して画像レイヤーを指定するため、最初にDockerfileファイルを作成し、次のコマンドを実行してDockerfileファイルを作成する必要があります。
sudo tee src/main/docker/dockerfile << - 'eof'from frolvlad/alpine-oraclejdk8:slimvolume/tmpadd docker-0.0.1-snapshot.jar app.jarrun sh -c' 'touch/app.jar'env java_opts = "" "" "" "" "" "" "" "" "" "" "" "" java_opts = $ java_opts -djava.security.egd = file:/dev/./ urandom -jar/app.jar "] eof
上記のコマンドを大まかに説明しましょう。
Docker画像を作成します
次のコマンドを実行して、Docker画像を作成します。
MVNパッケージDocker:ビルド
ビルドが完了したら、次のコマンドを実行して表示します。
sudo docker画像
結果は次のとおりです。
リポジトリタグ画像IDが作成されたサイズ
Springio/Docker最新7E2BA2F7E81E 2分前195 MB
Frolvlad/Alpine-Oraclejdk8 Slim 00D8610F052E 4日前167 MB
構築した画像が表示されていることがわかり、次のステップは画像を実行することです。
Docker画像を実行します
次のコマンドを実行して、前のステップで構築されたDocker画像を実行します。
sudo docker run -p 8080:8080 -t springio/docker
予期しないことが起こらないと、次の出力が表示されます。
。 ____ _ __ _ /// / ___'_ __ _(_)_ __ __ __ ____ / / / /(() / ___ | '_ |' _ | / / / / / / / / / / / / / / / / / / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | .__ || | _ | | _ | | _ | | _/__、| / / / / / ================================================================= / = / _ / _ / :: SPRING BOOT ::(V1.5.2.REELEASE)2017-03-08 03:34:59.434情報dockerapplication v0.0.1-snapshot on 00eed53e6928 with pid 6( /app.jarはroot in / /)2017-03-08 03:34:59.445情報6-- [メイン] omspringboot.dockerapplication:アクティブなプロフィールを戻しません。 --- [Main] CationConfigemdedDedWebApplicationContext:refsing org.springframework.boot.context.embedded.annotationconfigemdedwebapplicationcontext@4B9a9a9:起動日[水曜日08 03:34:59 GMT 2017];コンテキストのroot hierarchy2017-03-08 03:35:03.755情報6 --- [メイン] sbcettomcatembeddedservletcontainer:ポートで初期化:8080(http)2017-03-08 03:35:03.807 INFO] SERVICE TOMCAT2017-03-08 03:35:03.821 INFO 6 --- [MAIN] org.apache.catalina.core.standardengine:サーブレットエンジンの開始:Apache Tomcat/8.5.112017-03-08 03:35:04.042情報:スプリング埋め込みWebApplicationContext2017-03-08 03:35:04.043 INFO 6 --- [OST-STARTSTOP-1] OSS-WEB.CONTEXT.CONTEXTLOADER:ROOT WebApplicationContext:Root WebApplicationContext:4303 MS2017-03-08 03:35:04.441情報ost-bwservlet.servletregistrationbean:マッピングサーブレット:「DispatcherServlet」から[/] 2017-03-08 03:35:04.455 INFO 6 - [OST-STARTSTOP-1] OSBWSERVLET.FILTERREGISTRATIONBEAN:マッピングフィルター:[/*] 03:35:04.457 INFO 6 --- [OST-STARTSTOP-1] OSBWSERVLET.FILTERREGISTRATIONBEAN:マッピングフィルター:「HiddenHttpMethodFilter 'to:[/*] 2017-03:35:04.468情報フィルター: 'httpputformcontentfilter' to:[/*] 2017-03-08 03:35:04.468 INFO 6 --- [OST-STARTSTOP-1] OSBWSERVLET.FILTERREGISTRATIONBEAN:マッピングフィルター:[/*] 2017-03-08 05:35:35:35: swsmarequestmappinghandleradapter:@controlleradvice:org.springframework.boot.context.embedded.annotationconfigemdeddedwebapplicationcontext@4b9a9a9:起動日[3月08 03:34:59 GMT 2017];コンテキストのroot hierarchy2017-03-08 03:35:05.390 Info 6 --- [Main] SWSMAREQUESTMAPPINGHANDLERMAPPING:マッピング「{[/]}」情報6 --- [メイン] SWSMMAREQUESTMAPPINGHANDLERMAPPING:MAPPED "{[/ERROR]、produces = [text/html]}" to public org.springframework.web.servlet.modelandview org.springframework.boot.autoconfigure.web.basicerrorcontroller.errorhtml(javax.servlet.http.httpservletrequest、javax.servlet.http.httpservletresponse) swsmarequestmappinghandlermapping:マッピング "{[/error]}" "to public org.springframework.http.responseentity <java.util.map <java.lang.string、java.lang.object >> org.springframework.autoconfigure.web.basicerrorcontroller.error.error(javax.servlet.http.httpservletrequest)2017-03-08 03:35:05.512 INFO 6--- [メイン] OSWSHANDRER.SIMPLERLHHNEDLERMAPPING: [クラスorg.springframework.web.servlet.resource.resourcehttprequesthandler] 2017-03-08 03:35:05.512 INFO 6 - [MAIN] OSWSHANDLER.SIMPLEURLHANDLERMAPPING:マッピングされたURLパス[/**]のハンドラーの[/**] org.springframework.web.servlet.resource.resourcehttprequesthandler] 2017-03-08 03:35:05.639 INFO 6 --- [Main] OSWSHANDLER.SIMPLERLHANDLERMAPPING:マッピングURLパス[/**/Favicon.ico] org.springframework.web.servlet.resource.resourcehttprequesthandler] 2017-03-08 03:35:06.019 INFO 6 --- [メイン] OSJEAANNOTATIONMBEANEXPORTER:JMX曝露のために豆を登録するJMX露出sbcettomcatembeddedservletcontainer:Tomcatはポートで開始されました:8080(http)2017-03-08 03:35:06.183 INFO 6 --- [MAIN] OMSPRINGBOOT.DOCKERAPPLICATION:7.893秒でDockerApplicationを開始03:35:56.728 INFO 6 --- [NIO-8080-EXEC-1] ockc [tomcat]。[localhost]。[/]:Spring frameworkservlet 'dispatcherservlet'2017-03-08 03:35:56.728 Info 6--- [NIO-800-EXEC-diservleteblet. frameworkservlet 'dispatcherservlet':初期化開始201017-03-08 03:35:56.774 INFO 6 --- [NIO-8080-EXEC-1] OSWEB.SERVLET.DISPATCHERSERVET:FREALWORKSERVLET 'DISPATCHERSERVLET':43 MSで完了した初期化次のコマンドを実行して、実行中のDockerコンテナを表示します。
sudo docker ps
Dockerコンテナが実行されていることがわかります。
コンテナID画像コマンド作成ステータスポートNames00eed53e6928 springio/docker "sh -c 'Java $ java ..."
次に、http:// localhost:8080を入力して、「hello docker world」の結果を表示します。
コンテナを停止したい場合は、次のコマンドを実行できます。
sudo docker stop 00e
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。