前言
Docker 是一个开源的应用容器引擎,基于 Go 语言开发。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。使用Docker可以实现开发人员的开发环境、测试人员的测试环境、运维人员的生产环境的一致性。
今天,我们将spring boot 项目打包成docker镜像到远程服务器并启动服务的二种方式
一、方式一(使用Dockerfile文件生成镜像)
1、先把java项目使用maven插件打包成jar包。
2、将.jar包放在有docker环境的服务器中(本文使用本机windows)
3、先将.jar文件放入指定目录,并新建Dockerfile文件
Dockerfile文件内容:
# java8运行环境
FROM java:8
# 作者名称
MAINTAINER Dome
# 切换工作目录
WORKDIR /root/java
# 添加demo-start-1.0.0.jar文件到docker环境内
ADD demo-start-1.0.0.jar /root/java/demo-start-1.0.0.jar
# 暴露端口8080
EXPOSE 8080
# 运行命令
ENTRYPOINT ["java", "-server", "-Xms512m", "-Xmx512m", "-jar", "/root/java/demo-start-1.0.0.jar"]
4、在当前目录下运行指令,构建镜像
docker build -t demo:0.0.1
说明:
-t 参数指定构建成后,镜像的仓库、标签等
demo:0.0.1 demo镜像名称、0.0.1 镜像标签
5、直接运行镜像试试能不能成功
docker run -p 8080:8080 -t demo:0.0.1
如何将Docker镜像上传到Docker hub仓库
1、先创建Docker hub账号,记住username password后面验证时,需要使用到。
2、先登录Docker hub
docker login -u username -p passwork
3、将构建好的镜像打上标签
docker tag demo:0.0.1 username/demo:0.0.1
说明:
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
本地镜像名称:版本号 DockerHub账号名/镜像名称:版本号
上传中
上传后结果(Docker hub仓库):
注:
如果需要上传到其他镜像创建上面命令的改动如下(以阿里云为例子):
先登录:
docker login -u username [registry.cn-shenzhen.aliyuncs.com](<http://registry.cn-shenzhen.aliyuncs.com/>)
回车后输入密码,则登录成功
打标记:
docker tag demo:0.0.1 [registry.cn-shenzhen.aliyuncs.com](<http://registry.cn-shenzhen.aliyuncs.com/>)/username/demo:0.0.1
上传镜像:
docker push [registry.cn-shenzhen.aliyuncs.com](<http://registry.cn-shenzhen.aliyuncs.com/>)/username/demo:0.0.1
二、方式二(maven插件)
Maven是目前最流行的Java项目管理工具之一,提供了强大的包依赖管理和应用构建功能。
1、修改pom.xml
<plugins>
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>3.2.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
<configuration>
<from>
<!-- 与Dockfile文件的 《FROM java:8》相当 -->
<image>java:8</image>
</from>
<to>
<!-- docker.io 镜像仓库域名 -->
<!-- username 账号名称 -->
<!-- demo 镜像名称 -->
<!-- 0.0.2 标签 -->
<image>docker.io/username/demo:0.0.2</image>
<auth>
<!-- username 账号名称 -->
<!-- passwork 账号密码 -->
<username>username</username>
<password>passwork</password>
</auth>
</to>
<container>
<creationTime>USE_CURRENT_TIMESTAMP</creationTime>
<!--命令参数 -->
<jvmFlags>
<jvmFlag>-server</jvmFlag>
<jvmFlag>-Xms512m</jvmFlag>
<jvmFlag>-Xmx512m</jvmFlag>
</jvmFlags>
<args>
<arg>--spring.profiles.active=prod</arg>
</args>
</container>
</configuration>
</plugin>
</plugins>
2、执行打包命令,即可上传到指定仓库