对于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; |