Java应用打包镜像并运行

编写一个简单的Spring Boot应用,使用redis统计访问次数,并打包镜像,运行到容器,点击链接获取代码

在服务器上创建redis容器的挂载目录如下:

[root@centos dockerdata]# tree
.
└── redis
    ├── data
    │   ├── appendonly.aof
    │   └── dump.rdb
    └── redis.conf
vim redis.conf
# 开启AOF模式
appendonly yes

# 设置密码
requirepass redis

redis使用自定义配置文件启动

docker run -v /root/dockerdata/redis/redis.conf:/etc/redis/redis.conf \
-v /root/dockerdata/redis/data:/data \
-d --name myredis \
-p 6379:6379 \
redis:latest  redis-server /etc/redis/redis.conf

打开idea

创建spring项目,依赖选择Spring Web和Spring Data Redis

创建controller/CounterController.java

package com.lt.javademo.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.RestController;

@RestController
public class CounterController {

    @Autowired
    StringRedisTemplate redisTemplate;

    @GetMapping("/hello")
    public String count(){
        Long increment = redisTemplate.opsForValue().increment("count");
        return "有" + increment + "人访问了这个页面";
    }

}

在application.properties文件中

# 服务器ip
spring.redis.host=10.201.10.166

# redis密码
spring.redis.password=redis

直接运行,访问http://localhost:8080/hello可以显示

使用maven打包成jar

创建Dockerfile文件

FROM openjdk:8-jdk-slim
LABEL maintainer=lt

COPY target/*.jar /app.jar

ENTRYPOINT ["java","-jar","/app.jar"]

将target目录以及Dockerfile文件放入服务器目录下

打包镜像

docker build -t java-demo:v1.0 .

查看镜像

$ docker images
REPOSITORY      TAG              IMAGE ID       CREATED              SIZE
java-demo       v1.0             1a0b4260fec3   About a minute ago   323MB
redis           latest           5d89766432d0   3 days ago           105MB
openjdk         8-jdk-slim       99b31c7569d0   4 days ago           296MB

运行

docker run -d -p 8080:8080 --name myjava-demo java-demo:v1.0

上传dockerhub仓库,就可以在别的机器拉取

# 登录docker hub
docker login

#给旧镜像起名
docker tag java-demo:v1.0  lt/java-demo:v1.0

# 推送到docker hub
docker push lt/java-demo:v1.0

# 别的机器
docker pull lt/java-demo:v1.0

# 别的机器运行
docker run -d -p 8080:8080 --name myjava-demo java-demo:v1.0 
posted @ 2021-10-02 22:22  请务必优秀  阅读(474)  评论(0编辑  收藏  举报