一、创建一个简单的SpringBoot项目
1、直接访问http://start.spring.io/,自动生成SpringBoot项目,创建的时候直接选择了web模块
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.4.RELEASE</version>
<relativePath/>
</parent>
<groupId>com.dockerProject</groupId>
<artifactId>docker</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>docker</name>
<description>Demo project for Spring Boot</description>
<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>
</dependency>
</dependencies>
2、创建一个DockerController,
3、启动项目,浏览器访问http:localhost:8080/docker,页面输出Hello Docker,说明SpringBoot项目配置一切正常。
二、SpringBoot项目添加Docker相关配置
1、pom.xml中添加docker插件
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- Docker maven plugin -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.1.1</version>
<configuration>
<imageName>springboot/${project.artifactId}</imageName>
<dockerDirectory>src/main/resources/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
<!-- Docker maven plugin -->
</plugins>
</build>
2、在项目的src/main/resources/docker下创建Dockerfile,该文件是用来说明如何构建Docker镜像的
Dockerfile是用来说明Docker镜像构建的相关的信息,里面是一些指令,Docker会从Dockerfile文件中从上到下执行指令,在该文件中#是注释。Dockerfile第一条指令必须为FROM。
FROM openjdk:8-jdk-alpine
MAINTAINER testDocker
ADD *.jar app.jar
CMD java -jar app.jar
FROM:指定基础镜像,必须为第一个命令,表示使用 Jdk8 环境 为基础镜像,如果镜像不是本地的会从 DockerHub 进行下载
MAINTAINER: 维护者信息,可以写自己的名字或者邮箱
ADD:将本地文件添加到容器中,tar类型文件会自动解压(网络压缩资源不会被解压),可以访问网络资源,类似wget
CMD:构建容器后调用,也就是在容器启动时才进行调用。
大致介绍我使用到的,需要详细的各种用法的可以百度一下Dockerfile指令详解
三、在Linux下安装Docker
1、安装docker,yum -y install docker
2、启动docker,并设置为开机自启
systemctl start docker
systemctl enable docker
3、使用Docker 中国加速器,vim /etc/docker/daemon.json
在daemon.json最后面加上:
{
"registry-mirrors": ["https://registry.docker-cn.com"],
"live-restore": true
}
4、重启docker,systemctl restart docker
5、输入docker version,出现以下则代表成功
四、Linux下安装JDK
1、登录Oracle官网下载Linux环境下的jdk1.8的压缩包,jdk-8u211-linux-x64.tar.gz
2、解压,tar vxf jdk-8u211-linux-x64.tar.gz
3、配置环境变量,vim /etc/profile,在最后加上
export JAVA_HOME=/usr/jdk1.8.0_211
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
4、修改完成之后,使其生效,source /etc/profile
5、输入java -version
返回版本信息则安装正常。
五、Linux下安装MAVEN
1、登录Apache官网下载maven压缩包,apache-maven-3.5.4.tar.gz
2、解压,tar vxf apache-maven-3.5.4.tar.gz
3、配置环境变量,vim /etc/profile,在最后加上
export MAVEN_HOME=/usr/local/apache-maven-3.5.4
export PATH=${PATH}:${MAVEN_HOME}/bin
4、修改完成之后,使其生效,source /etc/profile
5、输入mvn -version
返回版本信息则安装正常。
六、使用Docker部署jar包项目
1、将SpringBoot项目拷贝到服务器中,进入该项目的根目录,运行mvn package,将项目进行打包
2、使用Dockerfile构建镜像,mvn package docker:build
当看到以下内容的时候表明构建成功:
3、使用docker images
命令查看已经存在的镜像:
4、运行该镜像,docker run -p 8086:8086 -t springboot/docker,因为我8080端口被占用了,所以我就使用了8086端口
注意:该命令的第一个端口是容器暴露给外部访问用的,当你启动以后访问的时候,必须访问第一个端口,然后第一个端口访问第二个端口对应已经启动的服务。如果你创建的SpringBoot项目配置的端口是8081,然后你运行这个命令,也能启动,但是你却访问不到,因为你访问容器的8086端口,它会找运行端口为8086的项目,而你的项目运行在8081上,无法找到。而且你直接访问8081也访问不到,因为放在了容器内运行了。
5、运行docker ps,可以看到已经处于运行中了
6、浏览器访问192.168.9.75:8086/docker可以看到显示了Hello Docker
7、若想停止运行该项目,则运行docker stop CONTAINER ID,CONTAINER ID在上图能找到,就是容器id
再运行docker ps,可以看到没有运行的镜像了。
8、若本地镜像过多想删除,也可以删除,但是前提是先删除该镜像的容器,删除容器之前先把容器停掉
docker images,查看全部镜像
docker ps -a,查看所有的容器
doceker rm + 容器id,删除容器
doceker rmi +镜像id,删除镜像