SpringBoot 部署 docker 打包镜像
SpringBoot 部署 docker 打包镜像
环境:
1、代码编写工具:IDEA
2、打包:maven
3、docker
4、linux
7、JDK1.8
8、Xshell
9、Xftp
第一步:使用idea创建简单的springboot项目
第二步:设置项目生成jar包(两种方式)
1、修改pom文件
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>ordinary</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>ordinary</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.6.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <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>
2、或者在生成项目的时候 可以选择jar和war
第三步:使用maven 生成包 (使用idea不用命令 直接界面操作就可以(如果Maven设置没问题 直接就可以生成 包 log会提示生成后的文件目录))
第四步:docker概念
1、docker:最早是dotCloud公司出品的一套容器管理工具,但后来Docker慢慢火起来了,连公司名字都从dotCloud改成Docker。
2、dockerfile:它是Docker镜像的描述文件,可以理解成火箭发射的A、B、C、D……的步骤。
3、docker镜像:通过Dockerfile做出来的,包含操作系统基础文件和软件运行环境,它使用分层的存储方式。
4、docker容器:是运行起来的镜像,简单理解,Docker镜像相当于程序,容器相当于进程。
第四步:dockerfile指令
Dockerfile由多条指令组成,每条指令在编译镜像时执行相应的程序完成某些功能,由指令+参数组成,以逗号分隔,#作为注释起始符,虽说指令不区分大小写,但是一般指令使用大些,参数使用小写
第五步:dockerfile文件例子(我只是简单将springboot项目生成docker镜像没有什么多余配置)
TODO:有一点需要注意的地方就是dockerfile文件没有任何后缀
# Pull base image FROM java:8 MAINTAINER yihj "yihj@yinghaikeji.com" VOLUME /tmp # 添加 ADD ordinary.jar app.jar RUN bash -c 'touch /app.jar' # Define default command. ENTRYPOINT ["java","-Dspring.profiles.active=online","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] #设置时区 RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
第六步:将dockerfile文件和生成好的jar 使用ftp工具上传到linux服务器 随便找个文件夹 放进去 jar和dockerfile在同级目录下
第七步:使用 docker build -t ordinary:v1.0 .
TODO:
1、 最后面的这个 . 代表在当前目录下面寻找 dockerfile 文件
2、ordinary 镜像名字
3、v1.0版本
第八步:查看镜像及启动
1、使用docker images 来查看生成的镜像
2、使用docker create 来创建容器 docker run 来创建并且运行容器
3、也可以使用docker logs 容器名 --tail 100 -f 来查看项目启动日志 看项目是否启动
3、如果上面步骤一切正常 可以直接调用IP加端口来访问项目
通过Docker run命令定义Spring Profile
可以将spring profile作为环境变量传递给docker run命令,使用 -e 标记。
例如 -e “SPRING_PROFILES_ACTIVE=dev”会将dev profile传递给Docker容器
docker run -d -p 8080:8080 -e "SPRING_PROFILES_ACTIVE=dev" --name rest-api dockerImage:latest