SpingBoot项目打包成jar 包 部署在docker容器中首先要准备两个文件:
1、项目jar包(在这里不做说明);
2、dockerfile 文件(没有任何后缀的文件)
2.1 dockerfile 文件的编写:
文件内容如下:
FROM java:8
VOLUME /tmp
COPY springBootDocker-0.0.1-SNAPSHOT.jar app.jar
RUN bash -c "touch /app.jar"
EXPOSE 9011
ENTRYPOINT ["java","-jar","app.jar","--spring.profiles.active=test","--server.port=9011",">/log/app.log"]
对以上内容做一个简单说明:
java:8是指Docker Hub上官方提供的java镜像,版本号是8也就是jdk1.8,有了这个基础镜像后,Dockerfile可以通过FROM指令直接获取它的状态——也就是在容器中java是已经安装的,接下来通过自定义的命令来运行Spring Boot应用:
VOLUME指向了一个/tmp的目录,由于Spring Boot使用内置的Tomcat容器,Tomcat默认使用/tmp作为工作目录。效果就是在主机的/var/lib/docker目录下创建了一个临时文件,并连接到容器的/tmp。
COPY 将项目的jar文件作为app.jar添加到容器
RUN表示在新创建的镜像中执行一些命令,然后把执行的结果提交到当前镜像。这里使用touch命令来改变文件的修改时间,Docker创建的所有容器文件默认状态都是“未修改”。这对于简单应用来说不需要,不过对于一些静态内容(比如:index.html)的文件就需要一个“修改时间”。
EXPOSE 容器暴露端口
ENTRYPOINT 应用启动命令 参数设定
3、将准备好的dockerfile 文件和 jar 架包 上传到服务器的同一文件夹下如下:
-rw-r--r-- 1 root root 228 Apr 20 10:24 Dockerfile
-rw-r--r-- 1 root root 16103675 Apr 20 10:43 springBootDocker-0.0.1-SNAPSHOT.jar
4、执行命令 将jar打包为镜像 (docker build -t 镜像名 .) 命令最后的 “ . ” 不要丢
[root@xxxxx dockerTest]# docker build -t spring-boot-docker-test .
Sending build context to Docker daemon 16.11MB
Step 1/6 : FROM java:8
---> d23bdf5b1b1b
Step 2/6 : VOLUME /tmp
---> Running in 6b4e03ffc2e7
Removing intermediate container 6b4e03ffc2e7
---> 8769a34dcd31
Step 3/6 : COPY springBootDocker-0.0.1-SNAPSHOT.jar app.jar
---> 949fe4a2a361
Step 4/6 : RUN bash -c "touch /app.jar"
---> Running in fb3d86a4882a
Removing intermediate container fb3d86a4882a
---> a15fe3f2a1b0
Step 5/6 : EXPOSE 9011
---> Running in 04dc3e21e88b
Removing intermediate container 04dc3e21e88b
---> d1cccdf738de
Step 6/6 : ENTRYPOINT ["java","-jar","app.jar","--spring.profiles.active=test","--server.port=9011",">/log/app.log"]
---> Running in 7e000ca7e6b7
Removing intermediate container 7e000ca7e6b7
---> 0969ececcf8b
Successfully built 0969ececcf8b
Successfully tagged spring-boot-docker-test:latest
出现successfully 说明镜像打包成功
执行 docker images :
[root@xxxx dockerTest]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
spring-boot-docker-test latest 0969ececcf8b 37 seconds ago 675MB
5、 运行镜像
[root@xxxx dockerTest]# docker run \
> --name testServer -d \
> -v /home/testServer/logs:/log \
> -p 9011:9011 spring-boot-docker-test
查看运行状态:
[root@xxxx dockerTest]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
135a2da801eb spring-boot-docker-test "java -jar app.jar -…" 9 seconds ago Up 7 seconds 0.0.0.0:9011->9011/tcp testServer