使用Docker部署SpringBoot项目

使用Docker部署SpringBoot项目

  •  2019 年 1 月 3 日
  •  729
  •  Java SpringBoot Docker 

环境准备

  • Docker
  • JDK1.8+
  • Maven3.2+

项目准备

创建一个简单的SpringBoot项目,主要代码如下

@SpringBootApplication
@RestController
public class Application {

    @GetMapping("/")
    public String demo() {
        return "hello Docker World";
    }

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

}

pom.xml

<properties>
    <docker.image.prefix>docker</docker.image.prefix>
</properties>

<build>
    <finalName>spring-boot-docker</finalName>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-source-plugin</artifactId>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
        <plugin>
            <groupId>com.spotify</groupId>
            <artifactId>docker-maven-plugin</artifactId>
            <version>0.4.11</version>
            <configuration>
                <imageName>${docker.image.prefix}/${project.artifactId}</imageName>
                <dockerDirectory>src/main/docker</dockerDirectory>
                <resources>
                    <resource>
                        <targetPath>/</targetPath>
                        <directory>${project.build.directory}</directory>
                        <include>${project.build.finalName}.jar</include>
                    </resource>
                </resources>
            </configuration>
        </plugin>
    </plugins>
</build>

需要注意的是<docker.image.prefix>docker</docker.image.prefix>里面是你自己的Docker仓库定义的名字,不然推送的时候会失败。

Dockerfile

在src/main目录下创建Dockerfile文件,内容如下

FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD spring-boot-docker.jar app.jar
RUN sh -c 'touch /app.jar'
ENV JAVA_OPTS=""
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar"]

开始构建

控制台输入以下命令

$ mvn clean package docker:build

成功后可以看到以下输出

mvn clean package docker:buildSuccessfully built bdef4098d2e6
Successfully tagged docker/spring-boot-docker:latest
[INFO] Built docker/spring-boot-docker
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 10.815 s
[INFO] Finished at: 2018-12-27T18:53:28+08:00
[INFO] ------------------------------------------------------------------------

其中docker/spring-boot-docker:latest构建的镜像的名字,可以使用docker images查看

$ docker images
REPOSITORY                       TAG                 IMAGE ID            CREATED             SIZE
docker/spring-boot-docker   	 latest              bdef4098d2e6        15 hours ago        135MB

启动镜像

$ docker run --name spring-boot-docker -p 8080:8080 -d docker/spring-boot-docker

如果不出什么意外的话就可以通过浏览器访问localhost:8080看到效果,然后可以使用docker push image:tag命令推送到远程仓库。

DEMO地址

https://github.com/chenpeidong/spring-boot-docker

扫一扫分享到微信

已有 条评论
写评论