对于springboot项目运行,直接是 java -jar 的方式运行,如果想要放到docker中运行,有两种方式:
Dockerfile 文件jar 到服务器(宿主机)的指定目录Dockerfile 文件Dockerfile 文件,将下面的内容复制到 Dockerfile 文件中FROM java:8
MAINTAINER bingo
ADD demo-0.0.1-SNAPSHOT.jar demo.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","demo.jar"]
参数说明:
from java:8 :指的是拉取一个 jdk 为 1.8 的 docker image
maintainer 作者是bingo
demo-0.0.1-SNAPSHOT.jar 就是你上传的jar包,替换为jar包的名称
demo.jar 是你将该 jar 包重新命名为什么名称,在容器中运行
expose 该容器暴露的端口是多少,就是 jar 在容器中以多少端口运行
entrypoint 容器启动之后执行的命令,java -jar demo.jar 即启动 jar
Dockerfile 文件之后,执行命令构建镜像docker build -t my/demo .
注意:
最后的 . :表示 Dockerfile 文件在当前目录下
my/demo :构建之后镜像名称
docker run -d --name demo -p 8080:8080 my/demo# 或者
docker run -d --restart=always --name demo -p 8080:8080 my/demo
# 这个表示 docker 容器在停止或服务器开机之后会自动重新启动 --restart=always
docker ps
docker logs --tail 300 -f demo
如果 docker run 的时候没有加 --restart=always , 那么已经运行的 docker 容器怎么设置自动重启? 执行下面命令:
docker update –-restart=always demo
demo : 启动容器的名称
这种方式是运行一个 jdk 的容器,挂载其中的目录到宿主机,运行 jdk 之后,就可以将需要运行的 jar 放在宿主机的挂载
目录下,然后每次重新运行 docker 容器即可。不用每次发布需要重新构建 docker 容器,只需要替换宿主机中的 jar 包即可。
docker pull jdk8
cd /server/mkdir deploy/jar
docker run -d \
--restart=always \
-v /server/deploy/jar:/jar -v /server/logs/demo:/mnt/logs/demo \
-p 7778:7778 \
--name demo \
jdk8 /usr/bin/java -jar \
-Duser.timezone=GMT+08 \
/jar/demo-1.0.jar
参数说明:
-Duser.timezone :是设置时区
jdk8 /usr/bin/java -jar :是执行 java jar 的命令
/jar/demo-1.0.jar :是需要运行的 jar 包的位置在容器中的什么位置,/jar 下面
docker 启动的参数说明:| Options | Mean |
|---|---|
| -i | 以交互模式运行容器,通常与 -t 同时使用; |
| -t | 为容器重新分配一个伪输入终端,通常与 -i 同时使用; |
| -d | 后台运行容器,并返回容器ID; |