步骤:
一、将java程序打包生成jar包
创建springboot项目(web依赖,redis依赖)
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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.5</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.ztq</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>demo</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<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>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-redis -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<version>2.7.5</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
配置文件:application.yml
spring:
redis:
host: 81.69.251.58 #写自己的服务器公网IP
port: 6379 #redis 端口号,写docker里面配置的端口号 例如 docker run -d --name myredis --restart=always -p 6370:6379 这是port要改为6370
password: root123456 #redis的密码
controller(访问一次计数加一)
package com.ztq.demo.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/test")
public class Plus {
@Autowired
StringRedisTemplate redisTemplate;
@GetMapping("/add")
public String add(){
Long count = redisTemplate.opsForValue().increment("count");
return "访问次数:"+count+"";
}
}
打包
注意:打包前自己先跑一边,检查一下是否有问题
打包步骤:
1、编译
2、打包
二、编写Dockerfile
#java程序运行需要的环境jdk8
FROM openjdk:8-jdk-slim
#作者的名字ztq
LABEL maintainer=ztq
#将target下面的jar文件 复制到app.jar中
COPY target/*.jar /app.jar
#执行命令 java -jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
三、将jar包和Dockerfile 丢到服务器中(根据Dockerfile中的配置丢到相应的目录)
使用Xftp工具,连接服务器
找到root,在root下创建文件夹放target与Dockerfile,博主创建的名字叫app
target里面只有一个jar包
四、进入服务器开始build
注意:1、这里不要漏了最后一个"."点
2、-t 后面的名字自己可以随便,相当于给镜像取个名字
[root@VM-4-7-centos app]# docker build -t java-app:v0.0.1 -f Dockerfile .
五、运行java程序
查看镜像:
运行:
-d :后台运行
-p:端口号
--restart=always:容器开启时java程序就运行
docker run -d -p 8080:8080 java-app:v0.0.1
六、访问 http://81.69.251.58:8080/test/add
到此docker将java程序打包发布到服务器并运行就成功了
补充:将java-app 推到docker hub,方便下一台服务器使用
1、登录
docker login
输入用户名后回车
输入密码回车
2、将镜像java-app:v0.0.1 复制为镜像:username/java-app:v0.0.1(username是自己的docker hub 用户名)
docker tag java-app:v0.0.1 username/java-app:v0.0.1
3、将镜像推到docker hub
docker push username/java-app:v0.0.1
4、用另外的服务器拉取镜像并运行
docker pull username/java-app:v0.0.1
docker run -d --name java --restart=always -p 9000:8080 username/java-app:v0.0.1
5、访问http://192.168.74.100:9000/test/add