Appearance
一、购买服务器,域名
购买服务器,域名,域名备案。服务器创建centos系统
二、安装docker以及必备软件
- docker安装
- mysql安装
- nginx安装
三、制作centos7 + jdk11镜像(使用yum安装)
- 在root下建立Dockerfile:
vim Dockerfile(rm -rf Dockerfile删除) - 写入内容:
#使用的基础镜像 FROM centos #作者信息 MAINTAINER sun “857153955@qq.com” ENV TZ=Asia/Shanghai RUN yum install java-11 -y ENV LANG=en_US.UTF-8 - 构建:
docker build -t centos7-jdk11 .注:.表示当前目录下的dockerfile - 运行镜像:
docker run -d -it --name centos7-jdk11 /bin/bash - 进入镜像:
docker exec -it jdk11 bash - 查看java版本:
java -version
证明镜像制作成功!
四、部署spring boot项目
- spring boot项目使用maven打包(blog-0.0.1-SNAPSHOT.jar),放到服务器root目录下
- 建立dockerfile写入信息:
#使用的基础镜像 FROM centos7-jdk11 #作者信息 MAINTAINER SUN "857153966@qq.com" RUN mkdir /app COPY ./blog-0.0.1-SNAPSHOT.jar /app/blog-0.0.1-SNAPSHOT.jar EXPOSE 8080 ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-Djava.awt.headless=true","-jar","/app/blog-0.0.1-SNAPSHOT.jar"] 解释:RUN mkdir /app 新建app文件夹 COPY ./blog-0.0.1-SNAPSHOT.jar /app/blog-0.0.1-SNAPSHOT.jar 拷贝jar包到app中 EXPOSE 8080 容器暴露8080端口 - 保存后构建:
docker build -t blog:0.1 . - 运行镜像:
docker run -d -p 8080:8080 --name blog --restart=always --cap-add=SYS_PTRACE -v /blog:/data/blog blog:0.1 - 修改Nginx配置:
// 新增 location /api { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_pass http://212.64.28.154:8080/demo; } - 通过访问测试接口,测试是否成功。
五、部署前端Vue项目
修改前端api.js文件(封装axios请求的文件):axios.defaults.baseURL = ‘/api’
打包项目:npm run build
打包好的项目,放到宿主机nginx/html目录下。(安装nginx挂载的目录)
配置nginx:
server { listen 80;//监听80端口 server_name ****************;//自己的域名 charset utf-8; #access_log /var/log/nginx/host.access.log main; #root /sun/nginx/html/dist; #index index.html; location / { root /usr/share/nginx/html; //前端文件路径 index index.html index.htm;//hash模式配置访问html try_files $uri $uri/ /index.html;//history模式下 } location /api { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_pass http://212.64.28.154:8080/demo; } }
六、通过域名访问测试是否成功
记一下遇到的坑:
- 部署前端vue项目时,前端项目的请求url填写错误,一直跨域。前端baseurl只需要填写api,在nginx增加api的配置即可
- 部署spring boot项目时,配置文件没有映射到宿主机,一直映射不到,配置文件不生效。在构建dockerfile的时候没有映射。这个留待以后研究。将dockerfile写在工程里面的。