2022年docker实战将java程序打包发布到服务器并运行

步骤:

一、将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

 

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值