写了一个推送当前地区天气信息的小程序,不想使用
nohup java -jar
去部署运行,就做了一个 Docker Image, 这里记录下。
注意这里的推送时间(凌晨 1 点半)🤣🤣🤣
内容如下:
# syntax=docker/dockerfile:1
# https://docs.docker.com/language/java/build-images/
FROM eclipse-temurin:11-jdk-jammy
VOLUME /tmp
ADD april-weather-push-1.0.0.jar app.jar
ENTRYPOINT ["java","-Xms128m","-Xmx256m","-jar","/app.jar"]
参数说明:
#!/bin/bash
# shellcheck disable=SC2046
docker rm $(docker stop april-weather-push)
# 打包
docker build -t april-weather-push:1.0.0 .
# run
docker run -dit --restart=always --name=april-weather-push -p 8009:8080 -v /etc/localtime:/etc/localtime april-weather-push:1.0.0
将项目 jar 包和 Dockerfile,docker-run.sh 文件上传到服务器 使用
./docker-run.sh
执行脚本文件,会自动运行 april-weather-push 容器
PS:-v /etc/localtime:/etc/localtime 挂载宿主机时间是非常必要的,因为宿主机执行的是 CST 东八区时间,容器执行的是 UTC 标准时间,比 CST 慢了 8 小时,如果你项目有定时任务之类的,会因为时差导致一些不必要的问题。
Docker Hub 是一个类似 GitHub 的 Docker 镜像管理平台。
如果没有就创建一个 Docker Hup 账号,过程非常简单,官网传送门
点击 repositories/Create repository
, 创建仓库,这里仓库的概念类似 GitHub,一个项目创建一个仓库,写入仓库名称和项目简介(仓库名称最好和你上传的镜像名称保持一致,避免歧义),是否公开,如下图
输入 docker login,输入账号密码,成功如下图,返回 Login Succeeded。
$ docker commit [ 容器 id] 用户名 / 镜像名:[版本号]
---------------------- 示例 ----------------------------
$ docker commit 7227510800df mobaijun/april-weather-push:1.0.0
这里的 tag 不指定默认就是 latest,这样 pull 的时候就可以不指定版本号了,但不推荐。
$ docker push 用户名 / 仓库名: 版本号
---------------------- 示例 ----------------------------
$ docker push mobaijun/april-weather-push:1.0.0
如图:
这样就完成了一个镜像的推送啦!这样后续在其他环境,只需要安装 Docker 环境,把仓库的镜像拉取下来,运行容器就快速部署好一个项目了。
$ docker update -m 256M --memory-swap 256M 1475376d90f5
参数说明可以网上查一下