• next项目部署到云服务器上(手动)


    准备环境:

    云服务器 ECS,服务器安装好了docker

    自己的next项目

    开始:

    1.在next项目根目录下创建Dockerfile文件

    1. FROM node:18-alpine AS base
    2. # Install dependencies only when needed
    3. FROM base AS deps
    4. # Check https://github.com/nodejs/docker-node/tree/b4117f9333da4138b03a546ec926ef50a31506c3#nodealpine to understand why libc6-compat might be needed.
    5. RUN apk add --no-cache libc6-compat
    6. WORKDIR /app
    7. # Install dependencies based on the preferred package manager
    8. COPY package.json yarn.lock* package-lock.json* pnpm-lock.yaml* ./
    9. RUN \
    10. if [ -f yarn.lock ]; then yarn --frozen-lockfile; \
    11. elif [ -f package-lock.json ]; then npm ci; \
    12. elif [ -f pnpm-lock.yaml ]; then yarn global add pnpm && pnpm i --frozen-lockfile; \
    13. else echo "Lockfile not found." && exit 1; \
    14. fi
    15. # Rebuild the source code only when needed
    16. FROM base AS builder
    17. WORKDIR /app
    18. COPY --from=deps /app/node_modules ./node_modules
    19. COPY . .
    20. # Next.js collects completely anonymous telemetry data about general usage.
    21. # Learn more here: https://nextjs.org/telemetry
    22. # Uncomment the following line in case you want to disable telemetry during the build.
    23. # ENV NEXT_TELEMETRY_DISABLED 1
    24. RUN yarn build
    25. # If using npm comment out above and use below instead
    26. # RUN npm run build
    27. # Production image, copy all the files and run next
    28. FROM base AS runner
    29. WORKDIR /app
    30. ENV NODE_ENV production
    31. # Uncomment the following line in case you want to disable telemetry during runtime.
    32. # ENV NEXT_TELEMETRY_DISABLED 1
    33. RUN addgroup --system --gid 1001 nodejs
    34. RUN adduser --system --uid 1001 nextjs
    35. COPY --from=builder /app/public ./public
    36. # Set the correct permission for prerender cache
    37. RUN mkdir .next
    38. RUN chown nextjs:nodejs .next
    39. # Automatically leverage output traces to reduce image size
    40. # https://nextjs.org/docs/advanced-features/output-file-tracing
    41. COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./
    42. COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static
    43. USER nextjs
    44. EXPOSE 3000
    45. ENV PORT 3000
    46. # set hostname to localhost
    47. ENV HOSTNAME "0.0.0.0"
    48. CMD ["node", "server.js"]

    2.更改项目中next.config.js文件(主要是增加ouput这个)

    1. // next.config.js
    2. module.exports = {
    3. // ... rest of the configuration.
    4. output: 'standalone',
    5. }

    3.把项目放到云服务器上

    方法多样

    我是通过写完把代码push到远端gitlab后,下载了tar文件,在通过finalShell把文件手动上传到目录下的

    4.解压上传的文件

    切到对应的目录下(项目文件名改成自己的)

     tar -xvf international_station-master.tar
     

    5.创建docker镜像(换成自己的项目名称,别怀疑是有. 的)

     docker build -t international_station-master .

    这样就打包好了

    6.docker images一下看看是否创建镜像成功

    7.通过镜像创建容器,并启动

    docker run -d -p 3000:3000 --name webserver international_station-master:latest 
    

    8.如果是阿里云的话,记得把3000端口号加上安全组,然后就能通过ip:3000访问啦

  • 相关阅读:
    大二层—多链接透明互联协议如何工作
    在IDEA 中的配置Tomcat
    【Python百日刷题计划】Day9~基础填空以及编程题
    DHCP原理详解
    Oracle考证对我们有什么帮助?
    Python入门 —— 从零基础到调包侠
    树莓派4b安装Pytorch1.11
    函数栈简述
    Git 教程
    开发 Chrome 扩展程序的利弊
  • 原文地址:https://blog.csdn.net/m0_66809099/article/details/134078167