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

Docker 部署实战:前端应用容器化指南

Docker 部署实战前端应用容器化指南什么是 DockerDocker 是一个开源平台用于开发、部署和运行应用程序。它使用容器化技术将应用程序及其依赖打包在一个独立的容器中。Docker 的优势一致性开发环境与生产环境一致隔离性容器之间相互隔离可移植性一次构建到处运行轻量级共享宿主机内核启动快速Docker 基础概念镜像Image只读的模板包含运行应用所需的所有文件和配置。容器Container镜像的运行实例可以启动、停止、删除。Dockerfile定义如何构建镜像的文本文件。创建 Dockerfile前端应用的 DockerfileFROM node:18-alpine AS build WORKDIR /app COPY package*.json ./ RUN npm ci COPY . . RUN npm run build FROM nginx:alpine COPY --frombuild /app/dist /usr/share/nginx/html EXPOSE 80 CMD [nginx, -g, daemon off;]多阶段构建优化FROM node:18-alpine AS builder WORKDIR /app COPY package.json package-lock.json ./ RUN npm ci --onlyproduction COPY . . RUN npm run build FROM nginx:1.25-alpine COPY --frombuilder /app/dist /usr/share/nginx/html COPY nginx.conf /etc/nginx/nginx.conf EXPOSE 80 USER nginx CMD [nginx, -g, daemon off;]Docker Compose多容器编排version: 3.8 services: frontend: build: context: . dockerfile: Dockerfile ports: - 80:80 environment: - NODE_ENVproduction networks: - app-network api: build: context: ./api dockerfile: Dockerfile ports: - 3000:3000 environment: - DATABASE_URLpostgres://user:passdb:5432/app networks: - app-network depends_on: - db db: image: postgres:14-alpine volumes: - postgres_data:/var/lib/postgresql/data environment: - POSTGRES_USERuser - POSTGRES_PASSWORDpass - POSTGRES_DBapp networks: - app-network volumes: postgres_data: networks: app-network: driver: bridge优化 Docker 镜像使用 .dockerignorenode_modules npm-debug.log .git dist选择合适的基础镜像# 推荐使用 alpine 版本体积更小 FROM node:18-alpine # 避免完整的 Debian 镜像体积较大 FROM node:18清理构建缓存RUN npm ci --onlyproduction \ rm -rf /root/.npm /root/.cache部署流程本地开发docker-compose up --build生产环境部署docker build -t my-app:latest . docker tag my-app:latest registry.example.com/my-app:latest docker push registry.example.com/my-app:latest使用 CI/CDname: Docker Build on: push: branches: [ main ] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkoutv3 - name: Build Docker image run: docker build -t my-app . - name: Push to registry run: | docker login -u ${{ secrets.DOCKER_USER }} -p ${{ secrets.DOCKER_PASS }} docker push my-appDocker 网络配置网络模式# 桥接模式默认 docker run --network bridge my-app # 主机网络 docker run --network host my-app # 自定义网络 docker network create app-network docker run --network app-network my-app数据持久化卷Volumesdocker volume create my-data docker run -v my-data:/app/data my-app绑定挂载docker run -v $(pwd)/data:/app/data my-app安全最佳实践非 root 用户运行RUN addgroup -S appgroup adduser -S appuser -G appgroup USER appuser最小权限原则# 不要以 root 身份运行 USER root # ❌ USER appuser # ✅定期更新镜像docker pull node:18-alpine总结Docker 容器化已经成为现代应用部署的标准方式。通过 Docker我们可以实现开发环境与生产环境的一致性简化部署流程提高可靠性优化资源利用降低运维成本支持快速扩展和弹性伸缩掌握 Docker 技能将使你在现代软件开发中更具竞争力。
http://www.gsyq.cn/news/1347576.html

相关文章:

  • Chrome for Testing 战略深度解析:构建确定性测试环境的架构决策
  • 用交叉编译工具链编译出一个简单的DEMORV1126应用开发手册的重点知识
  • 宁夏物联网应用定制开发实力厂商技术能力全面评估与优选指南
  • 从一张图到一条街:ACM MM 2025 论文深度解读《Look Beyond》
  • 3步彻底解决显卡风扇噪音:用FanControl实现精准温控
  • Cursor Free VIP深度解析:如何永久突破AI编程助手试用限制的完整指南
  • CyberChef:在浏览器中解决复杂数据处理难题的瑞士军刀
  • EspTinyUSB:为ESP32-S2/S3构建高效USB设备接口的实战指南
  • BG3模组管理器:新手快速上手指南 - 轻松管理博德之门3模组配置
  • WinUtil终极指南:10分钟搞定Windows系统优化与软件安装
  • 为什么你的学术论文需要APA第7版样式表?3分钟解决Word格式难题
  • 5G网络仿真软件哪个更高效?Ranplan两款核心产品深度解析
  • 健康系列: 有机食品是什么?
  • 【DeepSeek架构演进倒计时】:K8s 1.30+废弃Dockershim后,容器运行时迁移至containerd+Podman的6小时无感切换方案
  • 《流畅的Python》读书笔记07(补充02): 对象引用、可变性和垃圾回收 - Python深复制如何处理循环引用
  • 跨区智算全域追踪,透明校园一屏统管——新时代智慧校园安全治理升级方案
  • 前端:MVP / 最小实践 / 深度全解 / 从核心理念到实战落地
  • 天津离婚财产分割权威律师:家理姜春梅,专注婚家 10 年 + - 外贸老黄
  • 构建你的第一个中文手写识别系统:免费开源数据集完整指南
  • 10分钟搭建微信小程序商城:海风小店开源方案完全指南
  • 盐水制造机:市场发展现状与未来前景趋势
  • 许可证边界模糊?DeepSeek-R1/R2/VL三版本授权差异全对比,开发者必须在72小时内确认的3项关键条款
  • 在客服机器人项目中集成Taotoken实现多模型智能回复
  • @RemoteEvent 自动事件总线:1 个注解换 60 个 Consumer,赚还是亏?
  • 浙江大电流端子/电压端子厂家有哪些?2026年浙江直插式/回拉式接线端子厂家推荐|浙江端子板源头厂家推荐:连的智能领衔 - 栗子测评
  • 2026现阶段太原万柏林区全屋定制哪家强?索菲亚旗舰店服务揭秘 - 2026年企业推荐榜
  • 5个步骤彻底解决FanControl风扇控制软件配置崩溃问题
  • 每日热门skill:Firecrawl深度研究报告-AI时代的网页数据抓取神器
  • iOS照片去背景有哪些方法?苹果手机怎样快速去除照片背景?2026实用操作指南
  • 教程通过环境变量为Hermes Agent工具配置Taotoken接入