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

发布时间:2026/5/22 16:24:06

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 技能将使你在现代软件开发中更具竞争力。

相关新闻