docker build 构建自己的镜像文件。
1、在本地工程中运行生成一个springboot的可运行的jar。
因为我习惯用eclipse,所以在eclipse下新建一个springboot的工程,firstSpringboot的工程。
maven配置文件中,注意:必须指定生成文件后运行的主函数mian,否则可能导致的结果是无法访问main函数的错误。
maven配置的pom.xml文件
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<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.springboot</groupId> <artifactId>firstSpringboot</artifactId> <version>0.0.1-SNAPSHOT</version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.0.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </dependency> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> </dependency> </dependencies> <build> <!-- 生成文件的包名称 --> <finalName>firstSpringboot</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <!-- 必须指定主函数 --> <configuration> <mainClass>com.springboot.Application</mainClass> <executable>true</executable> </configuration> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-deploy-plugin</artifactId> <version>2.8.2</version> <configuration> <skip>true</skip> </configuration> </plugin> </plugins> </build> </project>
springmvc中,访问后,会打印出这样一句话。
执行 maven命令打包,也可通过工具直接build。mvn clean package 或install 都可以。
生成文件后如图所示。
2、在本地测试一下是否可访问。
在本机doc下启动我们的jar包看看看是否可以启动。
如果没主函数main指定,会报找不到主干数错误。
doc下启动服务命令:
java -jar 路径firstSpringboot argetfirstSpringboot-0.0.1-SNAPSHOT.jar
启动完成,本地测试,在浏览器中输入 :
http://localhost:8090/hello
访问通了,可见我们的jar包是ok的,页面展示如下:
3、在/usr/local下创建一个dockerapp的目录,将本地生成的jar文件上传到docker服务器上的这个目录。/usr/local/dockerapp
cd /usr/loca
mkdir dockapp
然后通过ftp、或者secureCRT将我们的jar包上传到服务器下。
4、在上传文件的目录/usr/local/dockerapp 下新建一个Dockerfile文件,文件内容定义jar包信息在docker容器中的名称。保存文件。
创建Dockerfile文件。
文件内容:意思是使用的是jdk8,将firstSpringboot.jar文件添加到docker容器下,并且名字为first-springboot.jar,对外声明启动端口是8090,跟我们的application.yml配置文件一样。最后就是执行命令生成
###java8环境镜像
FROM java:8
###复制文件到容器app-springboot
ADD firstSpringboot.jar /first-springboot.jar
###声明启动端口号
EXPOSE 8090
###配置容器启动后执行的命令
ENTRYPOINT ["java","-jar","/first-springboot.jar"]
生产可用Dockerfile
# 若用docker部署,将该文件复制到项目工程下 FROM openjdk:8-jre-alpine VOLUME /tmp ADD 项目应用名称-0.0.1-SNAPSHOT.jar app.jar # RUN bash -c 'touch /app.jar' ENV TZ=PRC RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","app.jar"] EXPOSE 8761
执行成功。如图所示:
5、用docker build -t 文件名称 . 这个命令构建镜像文件image ,后面那个“.”表示当前目录。
docker build -t first-springboot .
6、查看镜像文件是否生成。
docker images
7、运行docker run 命令启动我们的应用。
启动应用。
docker run -p 8080:8090 first-springboot
服务启动成功,如下图所示
8、测试应用是否可访问。
访问地址:http://192.168.5.129:8080/hello
浏览器显示如下:证明很ok。
9、测试原端口是否可以访问。
访问:http://192.168.5.129:8090/hello
请求失败。。
10、设置服务在后台运行
#在后台运行,在run后面加-d docker run -d -p 8080:8090 first-springboot #查看有哪些容器在运行 docker ps
如图
总结:docker部署流程,有点复杂,但是熟练后,应该很简单。接着学。