Linux(Centos 7) + docker + sringboot 项目整合(生成docker 镜像并启动)

本章节主要描述docker 镜像的创建,具体项目请自行处理。


1 springboot 项目修改

想要将maven 项目进制作成docker 镜像,需要做两件事

  • 修改pom.xml,添加docker 插件
  • 添加Dockerfile 文件

1.1 添加docker 插件

将项目中pom.xml 文件打开,添加docker 插件

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-maven-pluginartifactId>
        plugin>

        
        <plugin>
            <groupId>com.spotifygroupId>
            <artifactId>docker-maven-pluginartifactId>
            <version>1.0.0version>
            <configuration>
                <imageName>springboot/${project.artifactId}imageName>
                <dockerDirectory>src/main/dockerdockerDirectory>
                <resources>
                    <resource>
                        <targetPath>/targetPath>
                        <directory>${project.build.directory}directory>
                        <include>${project.build.finalName}.jarinclude>
                    resource>
                resources>
            configuration>
        plugin>
    plugins>
build>
  • springboot/${project.artifactId} 中指的是镜像构建后,docker 仓库中镜像的名字。
  • src/main/docker 指的是DockerFile 文件在此项目中的路径。

1.2 添加Dockerfile 文件

在路径src/main/docker 中创建Dockerfile 文件,输入以下内容:

FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD demo-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

其中需要注意的是第一行与第三行。
第一行为描述构建使用的jdk 版本。
第三行中demo-0.0.1-SNAPSHOT.jar 为maven 项目package 后的jar 文件名称,后面的app.jar 可自行修改,拷贝的镜像文件名。

细则可查询Dockerfile 定制文件命令。

此时项目就算是修改完成了。

将项目复制到linux 系统中,进行接下来的生成镜像操作。

2 镜像生成

我将项目复制到了~/workspace 下,其他人可自行修改,我的项目为demo

进入项目目录,输入命令

[root@localhost workspace]# mvn clean package -DskipTests docker:build
...................
...................
...................
BUILD SUCCESS
...................
...................
...................

经过一段时间之后,项目就算是打包完成了。
此时可以通过docker image 来查看docker 仓库刚刚生成的镜像。

[root@localhost workspace]# docker image list
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
springboot/demo     latest              ae0d6a737d07        42 hours ago        119MB
openjdk             8-jdk-alpine        5801f7d008e5        8 weeks ago         103MB

启动镜像的话,可以进行如下命令。

[root@localhost workspace]# docker run -it -p 8081:8080 springboot/demo

此时就会在控制台看到项目的输出信息了,但是此时容器启动状态为前端启动,我们可以按Ctrl + P + Q 隐藏容器,回到终端控制,也可以在启动的时候加入-d 参数。

-i: 启动一个终端输入。
-t: 用来启动一个伪终端连接到容器内部。
-p: 此命令用来映射容器内的端口,前面的端口号是指主机端口号,后面的端口号指的是容器内项目使用的端口号。
想了解详细命令内容,请自行学习。

隐藏在后端的容器,可以此种方式重新回到容器内部。

[root@localhost workspace]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
18986358b1f6        springboot/demo     "java -Djava.securit…"   5 minutes ago       Up 5 minutes        0.0.0.0:8081->8080/tcp   cranky_jennings
5df1a8815409        springboot/demo     "java -Djava.securit…"   15 minutes ago      Up 15 minutes                                thirsty_bhabha
[root@localhost workspace]# docker attach 18986358b1f6

你可能感兴趣的:(linux)