Spring Boot入门样例-280-docker使用Docker容器运行

Spring Boot入门样例-280-docker使用Docker容器运行

使用docker容器可以大大简化线上运营部署。本demo演示如何演示如何使用Docker容器运行Spring Boot项目。

前言

本Spring Boot入门样例准备工作参考:

pox.xml

必要的依赖如下,具体参见该项目的pox.xml

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <maven.build.timestamp.format>yyyyMMddHHmmss</maven.build.timestamp.format>
        <java.version>1.8</java.version>
        <dockerfile-version>1.4.9</dockerfile-version>
    </properties>

    <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>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

    <build>
        <finalName>spring-boot-demo-280-docker</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>dockerfile-maven-plugin</artifactId>
                <version>${dockerfile-version}</version>
                <configuration>
                    <repository>${project.build.finalName}</repository>
                    <tag>${project.version}</tag>
                    <buildArgs>
                        <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
                    </buildArgs>
                </configuration>
            </plugin>
        </plugins>
    </build>

配置文件

resources/application.yml配置内容

server:
  port: 8080

Dockfile文件

# 基础镜像
FROM openjdk:8-jdk-alpine

# 作者信息
MAINTAINER "funsonli@163.com"

# 添加一个存储空间
VOLUME /tmp

# 8080端口 和 yml文件保持一致
EXPOSE 8080

# JAR变量
ARG JAR_FILE=spring-boot-demo-280-docker.jar

# 往容器中添加jar包
ADD ${JAR_FILE} app.jar

# 启动镜像自动运行程序
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/urandom","-jar","/app.jar"]

代码解析

其他代码解析参考 spring-boot-demo-040-jpa 模块。

SpringBootDemo280DockerApplication.java 如下 访问根路径显示hello docker

@RestController
@SpringBootApplication
public class SpringBootDemo280DockerApplication {

    @GetMapping("/")
    public String index() {
        return "hello docker";
    }

    public static void main(String[] args) {
        SpringApplication.run(SpringBootDemo280DockerApplication.class, args);
    }

}

编译

使用maven进行编译

D:\java\spring-boot-demo\spring-boot-demo-280-docker>mvn clean package -Dmaven.test.skip=true

[INFO] --- maven-jar-plugin:3.1.2:jar (default-jar) @ spring-boot-demo-280-docker ---
[INFO] Building jar: D:\java\spring-boot-demo\spring-boot-demo-280-docker\target\spring-boot-demo-280-docker.jar
[INFO]
[INFO] --- spring-boot-maven-plugin:2.2.0.RELEASE:repackage (repackage) @ spring-boot-demo-280-docker ---
[INFO] Replacing main artifact with repackaged archive
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  2.809 s
[INFO] Finished at: 2019-10-24T16:22:35+08:00
[INFO] ------------------------------------------------------------------------

部署运行

将target\spring-boot-demo-280-docker.jar 和 Dockerfile 文件上传到有docker环境

本demo在Centos环境下,centos安装docker请参考 https://www.runoob.com/docker/centos-docker-install.html

# docker build -t spring-boot-demo-docker .
# docker images
REPOSITORY                            TAG                 IMAGE ID            CREATED             SIZE
spring-boot-demo-docker              latest              7f67e65c32be        About an hour ago   122 MB

# docker run -d -p 80:8080 spring-boot-demo-docker

将80端口指向docker image的8080端口,即Spring Boot项目中的端口

浏览器访问 http://112.123.234.22/   您的服务器ip
hello docker

参考

  • Spring Boot入门样例源代码地址 https://github.com/funsonli/spring-boot-demo
  • Bootan源代码地址 https://github.com/funsonli/bootan

如果您喜欢本Spring Boot入门样例和样例代码,请点赞Star

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值