普通方式运行jar包
1.创建一个简单的springboot项目 并打包
参考https://blog.csdn.net/weixin_40009737/article/details/105773950
2.将jar放到服务器上
3.centos7环境安装jdk
参考https://blog.csdn.net/weixin_40009737/article/details/90234069安装jdk
4.启动jar包
cd /usr
nohup java -jar spring-boot-0.0.1-SNAPSHOT.jar &
5.查看端口号
cat nohup.out
6.在浏览器IP+端口号
docker 启动jar包
1.拉取 java 镜像
docker pull java:8
2.在 jar 包所在的目录下创建一个名为 Dockerfile 的文件,文件内容如下:
# 基于jdk 镜像
FROM java:8
# 将本地文件夹挂在到当前容器
VOLUME /tmp
# 复制文件到容器
ADD demo-0.0.1-SNAPSHOT.jar app.jar
# 声明需要暴露的端口
EXPOSE 8080
# 配置容器启动后执行的命令
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
3.构建镜像
参数说明:
- -t 表示将新镜像命名为 demo_server
- 末尾的 . 指明 build context 为当前目录
- Docker 默认会从 build context 中查找 Dockerfile 文件,我们也可以通过 -f 参数指定 Dockerfile 的位置。
docker build -t demo-server .
4.docker images 命令检查下镜像是否已经成功制作完毕
docker images | grep demo
5.启动镜像
docker run -it -d -p 8080:8080 demo-server
6.查看镜像启动
docker ps | grep demo
7.擦看日志
docker logs clever_meitner
docker启动jar包正常单页面访问不到 解决办法如下:
.检查原因,为什么容器启动成功但是浏览器访问不了
(1)进入容器,执行
docker exec -it 22c586000c8b bash
访问localhost:8080/hello
curl localhost:8080/hello
(2)再次在外部访问 还是错误
出现错误,拒绝连接。应该是开放容器端口到宿主机端口8081没有开放权限,被docker防火墙拦截了,所以接下来就对8081端口开放访问权限
方法:
首先 执行exit 退出容器
将已启动得容器停止并删除
docker stop 22c586000c8b
docker rm 22c586000c8b
执行以下命令重新执行
docker run --privileged=true -d -p 8081:8081/tcp --name server demo-server
(3)结果重新访问还是报错
因为我的电脑是win10 家庭版,所以用得是docker toolbox,需要把ip换成(
)的IP
docker-machine ip default ip地址
如果报错 -bash: -bash:: command not found则需要安装docker-machine
1.安装docker-machine
base=https://github.com/docker/machine/releases/download/v0.14.0 &&
curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/tmp/docker-machine &&
sudo install /tmp/docker-machine /usr/local/bin/docker-machine
2.查看安装成功
docker-machine version
使用浏览器访问也成功了