前言
最近有小伙伴来咨询自己的开源项目,我很是激动,但是我没有部署一个线上版本,所以只能让他们拉项目本地跑起来。然后告诉他们那个功能在哪里哪里。所以我准备部署一个线上版本,于是就有了这篇博文,主要做下过程记录。
首先想到的就是java -jar或是nohup java -jar 直接运行jar包,但是总是不愿意使用这种老土的方式。后来查了一些资料,综合考虑下,决定选用docker-compose 来部署我的项目。
如果部署的是war包,请移步:https://blog.csdn.net/HXNLYW/article/details/105585745
准备
Docker-compose基础及安装:http://www.javadaily.cn/articles/2019/11/27/1574852024888.html
github下载很慢,提供下我下载了半个小时的版本:
打包
打包过程遇到了一些坑,这里直接贴一下打包配置插件
<build>
<!--自定义打包文件名-->
<finalName>gourd-hu</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
<!--启动类路径-->
<mainClass>com.gourd.hu.ServiceHuApplication</mainClass>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
docker-compose.yml
这个自己测试了很多版本,贴一下我测试通过的配置:
version: "3"
services:
gourd-hu-service:
# 指定容器名称
container_name: gourd-hu
# 重启机制
restart: always
image: java:8
volumes:
# 本地jar包路径
- /usr/gourd/gourd-hu/gourd-hu.jar:/gourd-hu.jar
# 挂载日志 -v A:B ,A指宿主机位置,B指容器位置
- ./logs:/logs
# 指定容器时间为宿主机时间
- /etc/localtime:/etc/localtime
# 访问端口
ports:
- "8088:8088"
environment:
# 指定时区
- TZ="Asia/Shanghai"
#启动容器后执行的命令
entrypoint: java -server -Xms256m -Xmx256m -jar -Dserver.port=8088 -Dspring.profiles.active=local gourd-hu.jar
注意点:
- /usr/gourd/gourd-hu/gourd-hu.jar:/gourd-hu.jar 这个挂载需要加,不然启动命令里不能直接使用gourd-hu.jar,启动会报错
- ./logs:/logs 一般需要将log日志挂载出来(: 前面的是宿主机的路径,:后面的是容器内的路径);
不然需要使用命令:doker logs 容器名/ID 查看日志 或者 docker exec -it 容器名称/ID bash 进入容器内查看日志
启动
- 新建一个项目目录,将 打好的jar包和 docker-compose.yml 文件上传进去。
- 使用命令工具(putty 或者 finalshell 都可以) 进入到自己新建的项目路径;
- 然后 直接使用命令 docker-compose up -d 启动jar包。
- docker ps 命令查看刚启动的服务,如下说明启动成功。
- 日志查看,直接到挂载目录 logs下查看日志,也可以使用 docker logs 容器名/ID 查看日志
结语
docker-compose 部署jar包就完成了,如果本文有不对的地方,欢迎指正。最后奉上自己的开源项目,有兴趣的小伙伴可以下载看看。
cloud-plus:hhttps://blog.csdn.net/HXNLYW/article/details/104635673