当前位置: 首页 > backend >正文

前后端Dockerfile

一、前端Dockerfile

# 使用官方 Node.js 镜像作为基础镜像,当前使用22版本
FROM node:22-alpine
# 设置工作目录
WORKDIR /app
# 复制 package.json 和 package-lock.json
COPY package*.json ./
# 镜像源修改
RUN npm install pnpm -g
RUN pnpm config set registry https://registry.npmmirror.com
# 安装依赖
RUN pnpm install
# 复制项目文件
COPY . .
# 构建应用
RUN pnpm run buildFROM nginx:alpine
# 设置时区环境变量并配置 tzdata
ENV TZ=Asia/Shanghai
RUN ln -fs /usr/share/zoneinfo/$TZ /etc/localtime && \echo $TZ > /etc/timezone
# 复制构建产物到 Nginx 的 html 目录
COPY --from=0 /app/dist /usr/share/nginx/html
# 复制自定义的 Nginx 配置(可选)
COPY nginx.conf /etc/nginx/conf.d/default.conf
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

对应nginx.conf

server {listen       80;listen  [::]:80;server_name  localhost;location / {root   /usr/share/nginx/html;index  index.html index.htm;}location /api {rewrite ^/api(.*)$ $1 break;proxy_pass http://192.168.1.99:8000;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-Forwarded-Proto $scheme;# 连接优化参数proxy_http_version 1.1;proxy_set_header Connection "";# 超时控制proxy_connect_timeout 500ms;proxy_read_timeout 3s;proxy_send_timeout 2s;# 容错配置proxy_next_upstream error timeout;proxy_next_upstream_timeout 1s;proxy_next_upstream_tries 3;}
}

二、后端Dockerfile

FROM openjdk:21-jdk# 设置时区环境变量并配置 tzdata
ENV TZ=Asia/ShanghaiRUN ln -fs /usr/share/zoneinfo/$TZ /etc/localtime && \echo $TZ > /etc/timezoneWORKDIR /app
COPY target/xxxx-server-0.0.1-SNAPSHOT.jar /app/app.jar
EXPOSE 8080
CMD ["java", "-jar", "app.jar"]

http://www.xdnf.cn/news/14787.html

相关文章:

  • Spring生态:云原生与AI的革新突破
  • python环境快速搭建
  • Windows11系统中安装docker并配置docker镜像到pycharm中
  • 企业自建云概念解读|私有云、专有云、混合云、分布式云、企业云
  • 对称非对称加密,https和http,https通讯原理,Charles抓包原理
  • 《如何在 Spring 中实现 MQ 消息的自动重连:监听与发送双通道策略》
  • JavaEE初阶第五期:解锁多线程,从 “单车道” 到 “高速公路” 的编程升级(三)
  • Windows环境下Docker容器化的安装与设置指南
  • 时序数据库IoTDB监控指标采集与可视化指南
  • 基于MATLAB的SVM支持向量机的乳腺癌分类方法应用
  • 现代 JavaScript (ES6+) 入门到实战(六):异步的终极形态 - async/await 的优雅魔法
  • HTTP中常见的Content-Type
  • HybridCLR热更新实例项目及改造流程
  • 现代 JavaScript (ES6+) 入门到实战(五):告别回调地狱,Promise 完全入门
  • 免费SSL证书一键申请与自动续期
  • STM32——HAL库总结
  • 【AGI】Qwen VLo:多模态AI的范式重构与AGI演进关键里程碑
  • mac触摸板设置右键
  • 【HuggingFace】模型下载至本地访问
  • 基于Pandas和FineBI的昆明职位数据分析与可视化实现(三)- 职位数据统计分析
  • 条件概率:不确定性决策的基石
  • C#写破解rar文件密码例程
  • 【硬核数学】10. “价值标尺”-损失函数:信息论如何设计深度学习的损失函数《从零构建机器学习、深度学习到LLM的数学认知》
  • Android大图加载优化:BitmapRegionDecoder深度解析与实战
  • IDE/IoT/实践小熊派LiteOS工程配置、编译、烧录、调试(基于 bearpi-iot_std_liteos 源码)
  • 马斯克的 Neuralink:当意念突破肉体的边界,未来已来
  • 同步日志系统深度解析【链式调用】【宏定义】【固定缓冲区】【线程局部存储】【RAII】
  • 《汇编语言:基于X86处理器》第5章 过程(2)
  • C# 委托(为委托添加方法和从委托移除方法)
  • 暑假复习篇之类与对象