1,部署上的jar包运行正常,但是通过浏览器不能访问,telnet +IP+端口连接不通。小皮面板访问后台接口也是不通但是小皮面板可以通过浏览器访问。具体问题暂未解决。
2,改用docker部署,将jar包和前端打的包,nacos,redis等打成镜像,放进docker里对外映射出端口可以正常访问。
在用docker部署过程中遇到的问题。
- 服务器用的是移动云。具体做了什么配置暂未研究,因为是别人给的服务器。
- 配置文件放在nacos里面,就需要我们配置nacos注册中心的地址,在服务启动时才可以注册服务到nacos,这里要注意的是你docker里面nacos的版本是多少,naocs2.0版本以上就要额外映射出9848、9849端口,因为Nacos2.0版本相比1.X新增了gRPC的通信方式,因此需要增加2个端口。但是9849是对内进行通信用的可以不爆露出来,为了保险起见还是两个一个暴露出来吧。记得去移动云服务器的安全组开放对应的端口号。
用docker部署过程。
首先是jar打成镜像
- docker是根据dockerfile来执行的,那我们就要先编写dockerfile文件
-
1 # 基础镜像,当前新镜像是基于哪个镜像 2 FROM openjdk:8-oracle 3 # RUN:容器构建时需要运行的命令 4 ENV TZ = "Asia/Shanghai" 5 # ADD:将宿主机目录下的文件拷贝到镜像且 ADD 命令会自动处理 URL 和解压 tar 压缩包 6 WORKDIR / 7 ADD ./donger-mom-mes-3.0-executor.jar mes.jar 8 9 10 # 利用 chmod 可以藉以控制文件如何被他人所调用。 11 RUN chmod +x mes.jar 12 # EXPOSE:当前容器对外暴露的端口 13 EXPOSE 9000 14 # CMD:指定一个容器启动时要运行的命令。Dockerfile 中可以有多个 CMD 命令, 15 # 但只有最后一个生效,CMD 会被 docker run 之后的参数替换 16 CMD ["java", "-Xmx1024m","-Xms1024m", "-jar", "mes.jar","--spring.config.location=/etc/mes/config/application.yml"]
-
将jar包与dockerfile放在同一级目录下
,
-
执行命令
docker build ./ -t [自定义镜像名字+版本例如:pc:v1]
docker build ./ -t pc:v1
前端打包:
- 也要编写dockerfile文件
-
1 # 基于nginx:1.20镜像 2 FROM nginx:1.20 3 # 将dist文件中的内容复制到 /www/ 这个目录下面 4 COPY pc/ /wwwdev/ 5 # 用本地的 nginx.conf 配置来替换nginx镜像里的默认配置 6 COPY nginx.conf /etc/nginx/nginx.conf
- 放在同一目录结构下面,执行docker build ./ -t [自定义镜像名字+版本例如:pc:v1]
-
- 我刚开始一直有一个问题,就是前端要部署在nginx上面,所以是不是要在docker容器内先拉取一个nginx,然后再构建前端的镜像,导致一直出问题。
- 这里我们要明白dockerfile的意义,docker是根据dockerfile来进行镜像打包,而dockerfile的第一句话就是根据某某某基础打包,所以打出来的包其实就是一个配置好的nginx,我们直接运行就可以了,不需要在docker里面再单独拉去一个容器。
- 在上面的包结构下还有一个nginx.conf的文件,其实就是nginx的配置文件,我们在这里把配置文件写好,经过dockerfile打镜像(具体看dockerfile怎么写的)的时候就会把打成镜像的nginx的配置文件给替换掉我们改好的这个,可以让我们不用进入容器改,比较方便。
- 这里值得注意的地方有一个地方,这两处一定要注意写对,对应上,要不然会访问不到。
-