Corretto11 + Maven + SpringBoot + Dockerでアプリを動かす
目的
Corretto11を利用してDockerコンテナを動かしたい
2019/3/17追記
Corretto11のDockerが公開されました。
使用している環境
Docker version 18.09.2
Corretto11 (java version "11.0.2" 2019-01-15 LTS)
maven (Apache Maven 3.6.0 (97c98ec64a1fdfee7767ce5ffb20918da4f719f3; 2018-10-25T03:41:47+09:00))
プロジェクトを作成する
mvn -B archetype:generate -DgroupId=com.maskedgetter -DartifactId=rest-service -Dversion=1.0.0-SNAPSHOT -DarchetypeArtifactId=maven-archetype-quickstart
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.maskedgetter</groupId> <artifactId>rest-service</artifactId> <packaging>war</packaging> <version>1.0.0-SNAPSHOT</version> <name>rest-service</name> <url>http://maven.apache.org</url> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.3.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
App.javaを編集
作成されたApp.javaを編集して、/にアクセスされた時に0を返すように実装する。
package com.maskedgetter; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; @SpringBootApplication @RestController public class App extends SpringBootServletInitializer{ public static void main( String[] args ){ SpringApplication.run(App.class, args); } @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(App.class); } @RequestMapping(value = "/", method = RequestMethod.GET) public String getZero() { return "0"; } }
warファイルを作成
mvn clean package spring-boot:repackage
Dockerfileを作成
FROM amazonlinux:2 ENV \ JAVA_HOME=/opt/jdk \ PATH=${JAVA_HOME}/bin:PATH \ APP_NAMW= RUN \ yum -y update && \ yum -y install wget gzip tar && \ wget https://d2jnoze5tfhthg.cloudfront.net/amazon-corretto-11.0.2.9.1-linux-x64.tar.gz && \ tar xvzf amazon-corretto-11.0.2.9.1-linux-x64.tar.gz && \ rm amazon-corretto-11.0.2.9.1-linux-x64.tar.gz && \ mv amazon-corretto-11.0.2.9.1-linux-x64/ /opt/jdk && \ rm -rf /var/cache/yum/* && \ yum clean all && \ wget http://ftp.yz.yamagata-u.ac.jp/pub/network/apache/tomcat/tomcat-9/v9.0.16/bin/apache-tomcat-9.0.16.tar.gz && \ tar xvzf apache-tomcat-9.0.16.tar.gz && \ rm apache-tomcat-9.0.16.tar.gz && \ mv apache-tomcat-9.0.16 /opt/tomcat COPY ./target/rest-service-1.0.0-SNAPSHOT.war /opt/tomcat/webapps/rest-service.war CMD ["sh", "/opt/tomcat/bin/catalina.sh", "run"]
Dockerイメージの作成と実行
docker build -t spring-corretto11 . docker run --name spring-corretto11 -itd -p 8080:8080 spring-corretto11
リンクにアクセス
http://0.0.0.0:8080/rest-service/
0が出た
メモ
コンテナにアクセスしたい
docker exec -it spring-corretto11 /bin/bash
コンテナを止めたい
docker stop spring-corretto11