一.安装docker 并运行
详情见 CentOS-7 下在线安装docker 与卸载_cyw8998的专栏-优快云博客
二.建springboot web工程端口定为10188,并打包成jar
三.编写Dockerfile
# Docker image for springboot file run
# VERSION 0.0.1
# Author: eangulee
# 基础镜像使用java
# FROM openjdk:8u292-jre-buster
FROM java:8
# 作者
MAINTAINER eangulee <cyw123123@163.com>
# 时区变量值为亚洲上海
ENV TZ=Asia/Shanghai
# 设置时区,如果不设置时区,就是默认时区;ln设置方法就是在目标目录/etc/localtime建立快捷方式文件
RUN ln -sf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp
# EXPOSE指令本身并不会导致容器的端口在宿主机上暴露,只是为了告诉docker使用者当前用的端口
EXPOSE 19089
# 将jar包添加到容器中并更名为app.jar
ADD dockertest.jar app.jar
# 运行jar包
# RUN bash -c 'touch /app.jar'
# "参数-Djava.security.egd=file:/dev/./urandom" 是加快tomcat启动的
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
# 或者 CMD java -jar app.jar
# 或者 CMD ["java","-jar","/app.jar"]
四.docker进行打包
spring boot的web jar名为 dockertest.jar
docker打包执行命令:
docker built -t testimg:v1 . (联网状态,会从指定地址搜索FROM基础镜像)
或者 docker built --network=host -t test333 . (离线打包,会从本地宿主机搜索基础镜像)
查看是否生成成功(镜像名称test333)
docker images
五.运行镜像:
docker run -d -p 20188:10188 test333
六.linux本地访问: curl http://localhost:20188/docker/test
或者浏览器访问 http://localhost:20188/docker/test
正确结果如下
另外碰到问题:我用移动云服务器部署后,宿主机访问不到该映射端口。
查看运行中的镜像: docker ps -a
进入镜像内: docker exec -it 镜像ID bin/bash 后,镜像可以自己访问自己,说明该工程服务没有问题
解决办法:更改工程properties.yaml文件,增加
server:
port: 10188
address: 0.0.0.0
后,重新打包并制作镜像运行后,宿主机可以访问。云服务器管理端开通对应端口,外网就也能访问该服务了。