美文网首页
Docker部署前后端项目

Docker部署前后端项目

作者: LCF_全博 | 来源:发表于2022-03-15 15:28 被阅读0次

    一.安装docker

    1.Cento安装docker

    安装命令

    curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
    

    2.Docker开启远程访问权限

    #修改Docker服务文件,需要先切换到root用户
    vim /lib/systemd/system/docker.service
    #注释掉"ExecStart"这一行,并添加下面这一行信息
    ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2375
    

    修改完成之后重新加载环境配置变量

    #重新加载配置文件
    systemctl daemon-reload
    #重启服务
    systemctl restart docker.service
    #查看配置的端口号(2375)是否开启(非必要)
    netstat -nlpt  #如果找不到netstat命令,可以先安装一下这个工具,具体百度
    

    效果如下,默认开启的是2375端口

    Untitled.png

    二.docker部署ods前端项目

    💡 思路:将vite项目构建成dist文件,这里面的都是静态文件。docker拉取一个nginx镜像,然后将默认路径指向dist里的内容,即可访问页面资源。然后将配置nginx代理后端路径即可

    1.安装nginx

    docker pull nginx
    

    2.vite代理与nginx代理

    vite.config配置
    server: {
        port: 9090,
        cors: true, // 默认启用并允许任何源
        open: true, // 在服务器启动时自动在浏览器中打开应用程序
        //反向代理配置,注意rewrite写法
        proxy: {
          "/api": {
            target: "http://xx.xx.xx.x1:8090", //代理接口
            changeOrigin: true,
            rewrite: (path) => path.replace(/^\/api/, "api"),
          },
          "/web": {
            target: "http://xx.xx.xx.x2:8090", //代理接口
            changeOrigin: true,
            rewrite: (path) => path.replace(/^\/web/, "web"),
          },
        },
      },
     
     
    nginx配置:
    location ^~ /api/ {
        proxy_pass http://xx.xx.xx.x1:8090/api/;  # 转发地址
    }
            
    location ^~ /web/ {
        proxy_pass http://xx.xx.xx.x2:8090/web/;  # 转发地址
    }
    

    3.将vite项目打包成dist文件

    我们的目标就是将项目构建成一个静态资源目录。然后发布到nginx上访问

    执行命令

    pnpm build
    

    4.设置nginx配置文件

    nginx.conf配置文件如下

    worker_processes  1;
    
    events {
        worker_connections  1024;  #每个工作进程的最大连接数量
    }
    
    http {
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;   #指令指定 nginx 是否调用sendfile 函数(zero copy 方式)来输出文件,对于普通应用,必须设为on。
        keepalive_timeout  65;   #超时时间
        
        server {
            listen       80;  #监听端口
            server_name  localhost, 127.0.0.1;  #配置访问域名
    
            location / {
                 root   /usr/share/nginx/html;  #设置需要访问的静态资源
                 index  index.html index.htm;
                 try_files $uri $uri/ /index.html;
            }
    
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
            # 设置后端服务器信息
            location ^~ /dev/ {
                proxy_set_header Host $host;
                proxy_set_header  X-Real-IP        $remote_addr;
                proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;  #以上三行,目的是将代理服务器收到的用户的信息传到真实服务器上
                proxy_set_header X-NginX-Proxy true;
                proxy_pass http://172.17.0.2:80/; #后端地址应用容器地址
            }
        }
    }
    

    5.创建Dockerfile文件

    通过Dockerfile下载nginx镜像,然后把我们的vue静态资源添加到nginx镜像的特定目录,用我们设置好的nginx配置文件覆盖默认的配置文件,最后打包成一个新的镜像发布启动。

    # 下载nginx镜像
    FROM nginx
    
    # 镜像作者(可忽略)
    MAINTAINER quanbo
    
    # 将前端项目打包的dist文件全部拷贝到/usr/share/nginx/html/文件下
    COPY dist/ /usr/share/nginx/html/
    
    #用nginx.conf覆盖默认的nginx.conf文件
    COPY nginx.conf /etc/nginx/nginx.conf
    
    # 添加完成标记(可省略)
    RUN echo 'echo init ok!!'
    

    6.webstom配置docker启动设置

    目的是根据Dockerfile文件中的内容构建成一个新的镜像发布到服务器中,然后运行创建一个新的容器

    截屏2022-03-15_14.44.02.png

    三.docker部署ods后端项目

    💡 思路:将项目构建成一个jar包,下载一个java8的镜像,然后将jar放进镜像中,将jar启动起来,暴露响应端口。另外再启一个redis容器。配合使用即可

    1.将后端项目打包成jar包

    在后端项目中执行一下命令

    mvn clean package
    

    2.创建Dockerfile文件

    # 下载java8镜像
    FROM java:8
    
    # 设置作者
    MAINTAINER quanbo
    
    # 设置环境语言
    ENV LANG=C.UTF-8 LC_ALL=C.UTF-8
    
    # 将后端的jar包添加进镜像中
    ADD ods-info/target/ods-info-0.0.1-SNAPSHOT.jar app.jar
    
    # 设置jar启动命令
    ENTRYPOINT ["java","-jar","/app.jar"]
    
    #暴露端口
    EXPOSE 80
    
    # 设置docker内部时区
    ENV TZ=Asia/Shanghai
    RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
    

    3.idea中配置docker启动设置

    目的是根据Dockerfile文件中的内容构建成一个新的镜像发布到服务器中,然后运行创建一个新的容器

    截屏2022-03-15_14.41.50.png

    相关文章

      网友评论

          本文标题:Docker部署前后端项目

          本文链接:https://www.haomeiwen.com/subject/yydydrtx.html