Skip to content

一、购买服务器,域名

购买服务器,域名,域名备案。服务器创建centos系统

二、安装docker以及必备软件

  • docker安装
  • mysql安装
  • nginx安装

三、制作centos7 + jdk11镜像(使用yum安装)

  1. 在root下建立Dockerfile:vim Dockerfile(rm -rf Dockerfile删除)
  2. 写入内容:
    #使用的基础镜像
    FROM centos
    #作者信息
    MAINTAINER sun “857153955@qq.com”
    ENV TZ=Asia/Shanghai
    RUN yum install java-11 -y
    ENV LANG=en_US.UTF-8
  3. 构建:docker build -t centos7-jdk11 . 注:.表示当前目录下的dockerfile
  4. 运行镜像:docker run -d -it --name centos7-jdk11 /bin/bash
  5. 进入镜像:docker exec -it jdk11 bash
  6. 查看java版本:java -version

证明镜像制作成功!

四、部署spring boot项目

  1. spring boot项目使用maven打包(blog-0.0.1-SNAPSHOT.jar),放到服务器root目录下
  2. 建立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端口
  3. 保存后构建:docker build -t blog:0.1 .
  4. 运行镜像:docker run -d -p 8080:8080 --name blog --restart=always --cap-add=SYS_PTRACE -v /blog:/data/blog blog:0.1
  5. 修改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;
    }
  6. 通过访问测试接口,测试是否成功。

五、部署前端Vue项目

  1. 修改前端api.js文件(封装axios请求的文件):axios.defaults.baseURL = ‘/api’

  2. 打包项目:npm run build

  3. 打包好的项目,放到宿主机nginx/html目录下。(安装nginx挂载的目录)

  4. 配置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;
        }
    }

六、通过域名访问测试是否成功

记一下遇到的坑:

  1. 部署前端vue项目时,前端项目的请求url填写错误,一直跨域。前端baseurl只需要填写api,在nginx增加api的配置即可
  2. 部署spring boot项目时,配置文件没有映射到宿主机,一直映射不到,配置文件不生效。在构建dockerfile的时候没有映射。这个留待以后研究。将dockerfile写在工程里面的。

Released under the MIT License.