我们都知道docker是一个非常好用的虚拟化容器,所谓虚拟化容器其实就是说可以将各个应用都隔离开来,每个应用都可以有自己的独立的运行时环境,这对于我们程序开发是非常有好处的,可以不需要去配置环境,每个组件都有独立的运行环境,不会互相干扰,而且想要更换组件的版本也是非常容易的。本文就记录一下我安装docker以及将springboot项目打包成镜像运行的过程。
docker安装
我的环境是centos7,网上有非常多的教程教你安装docker,我是按照下面的教程安装成功的,当然你也可以找其他的教程
centos7安装Docker详细步骤(无坑版教程) - 腾讯云开发者社区-腾讯云 (tencent.com)
这是我的环境
这个教程说是无坑,其实是有坑的,就是等安装完docker后会没有办法启动,会报下面的这个错
Cannot connect to the Docker daemon at tcp://localhost:4243. Is the docker daemon running?
我的解决办法是这篇文章
(2条消息) 完美解决Cannot connect to the Docker daemon at tcp://localhost:4243. Is the docker daemon running?_"connection to the docker daemon at 'localhost' fa_喜欢吃腊肉的Naro的博客-CSDN博客
简单说就是要找到docker.service文件,然后添加一些内容
我的文件路径和文章里稍微有点不同
在做完上述两步后我的docker就可以正常使用了
springboot项目打包运行
首先是创建springboot项目,我用的jdk版本是1.8,对应的springboot版本应该是2开头的,idea默认创建的springboot版本是3开头的会报错,我的pom.xml配置如下
<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.5</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.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>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
如果运行项目的时候提示找不到springboot相关的注解的话别忘了将下面的选项勾上
编写一个简单的接口,看到浏览器能正常访问了就说明springboot项目构建成功
然后将springboot项目打成jar包
编写Dockerfile文件,文件名就叫这个,没有后缀
# 基础镜像java
FROM openjdk:8
# 添加jar包
ADD /demo.jar //
#地址映射
CMD ["--server.port=8080"]
#对外暴露端口
EXPOSE 8080
#执行命令
ENTRYPOINT ["java","-jar","/demo.jar"]
将打包的jar包和Dockerfile文件传到linux服务器上,因为我的docker是安装在linux服务器上的,我使用的是虚拟机,然后用winSCP传文件
到指定的目录下用docker打包
打包的命令是
docker build -t springboot-demo .
接着我们可以查看镜像并且运行
使用ifconfig命令查看linux的ip地址
根据相应的ip地址进行访问
到这里就大功告成啦ヾ(✿゚▽゚)ノ