• 使用docker编译前后端项目


    前端项目编译build后,把生成的文件放在后端的public中,然后后端使用dockerfile进行编译

    后端nestjs项目:

    #第一个阶段:拉取node镜像来打包React项目,as build是给该阶段起名字
    FROM node:14 as build
    
    #设置docker命令的运行目录,工作空间
    WORKDIR /app
    
    
    # 复制src等目录文件到工作空间中 必入 COPY src src/ 表示复制当前src文件夹中的内容到 工作空间(无则创建文件夹)
    COPY public /app/public
    COPY src /app/src
    COPY package.json ./
    COPY tsconfig.json ./
    COPY nest-cli.json ./
    COPY tsconfig.build.json ./
    
    
    RUN npm set registry https://registry.npm.taobao.org
    RUN npm install
    RUN npm run build
    
    # 第二个阶段:创建并运行Nginx服务器,并且把打包好的文件复制到服务器文件夹中
    
    # 暴露端口
    EXPOSE 4000
    CMD ["node","dist/main.js"]

    如果是纯前端项目:

    #第一个阶段:拉取node镜像来打包React项目,as build是给该阶段起名字
    FROM node:14 as build
    
    #设置docker命令的运行目录,工作空间
    WORKDIR /app
    
    
    # 复制src等目录文件到工作空间中 必入 COPY src src/ 表示复制当前src文件夹中的内容到 工作空间(无则创建文件夹)
    
    
    COPY dist ./
    
    # 第二个阶段:创建并运行Nginx服务器,并且把打包好的文件复制到服务器文件夹中
    
    FROM nginx:alpine
    
    # 复制build阶段中 app/build打包文件内容到 nginx文件夹下
    COPY --from=build /app/ /usr/share/nginx/html
    
    # 暴露端口
    EXPOSE 80
    CMD ["nginx","-g","daemon off;"]

    使用pm2启动,参考文章:

    https://segmentfault.com/q/1010000007258157

    https://pm2.keymetrics.io/docs/usage/docker-pm2-nodejs/

    #第一个阶段:拉取node镜像来打包React项目,as build是给该阶段起名字
    FROM node:14 as build
    
    #设置docker命令的运行目录,工作空间
    WORKDIR /app
    
    
    # 复制src等目录文件到工作空间中 必入 COPY src src/ 表示复制当前src文件夹中的内容到 工作空间(无则创建文件夹)
    COPY public /app/public
    COPY src /app/src
    COPY package.json ./
    COPY tsconfig.json ./
    COPY nest-cli.json ./
    COPY tsconfig.build.json ./
    COPY start.json ./
    
    # RUN npm set registry  http://registry.m.jd.com
    RUN npm set registry https://registry.npm.taobao.org
    RUN npm install
    RUN npm run build
    RUN npm install -g pm2 node-gyp
    # 第二个阶段:创建并运行Nginx服务器,并且把打包好的文件复制到服务器文件夹中
    
    # 暴露端口
    EXPOSE 4000
    # CMD ["node","dist/main.js"]
    CMD ["pm2-runtime","start.json"]

    对应的start.json

    {
      "apps": [
        {
          "name": "esc-web",
          "max_memory_restart": "500M",
          "script": "/app/dist/main.js",
          "instances": 1
        }
      ]
    }
    

      

    docker build -t react-web:1.0 .
    docker run -d -p 4000:4000 react-web:1.0


    `docker stop $(docker ps -aq)`停止所有容器
    `docker rm $(docker ps -aq)` 删除所有容器
    `docker images`可以查看当前的镜像
    `docker rmi $(docker images -q)`删除全部 image

    `docker run -it react-web:1.0 /bin/bash`进入容器内部执行指令
  • 相关阅读:
    统一建模语言UML轻松入门之综合实例
    统一建模语言UML轻松入门之动态建模
    LINQ体验(3)——C# 3.0新语言特性和改进(下篇) 【转】
    Visual Studio 2008新特性【转】
    vs2008 新特性【转】
    LINQ体验(1)——C# 3.0新语言特性和改进(上篇) 【转】
    C# 3.0 的Lambda表达式(Lambda Expressions)【转】
    LINQ体验(2)——C# 3.0新语言特性和改进(上篇) 【转】
    结构体计算结构体字节大小以及字节对齐
    web.config 中SessionState的配置
  • 原文地址:https://www.cnblogs.com/xiaozhumaopao/p/16382920.html
Copyright © 2020-2023  润新知