diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..6e13b99 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,42 @@ +# 依赖目录 +node_modules +npm-debug.log + +# 构建输出 +dist +build + +# 版本控制 +.git +.gitignore + +# 编辑器配置 +.idea +.vscode +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + +# 系统文件 +.DS_Store +Thumbs.db + +# 日志文件 +logs +*.log + +# 测试文件 +coverage +test +tests + +# 环境变量文件 +.env +.env.* + +# 其他不需要的文件 +README.md +LICENSE +docker-compose.yml \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..d1a8e09 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,32 @@ +# 构建阶段 +FROM node:18-alpine as build-stage + +# 设置工作目录 +WORKDIR /app + +# 复制package.json和package-lock.json +COPY package*.json ./ + +# 安装依赖 +RUN npm install + +# 复制项目文件 +COPY . . + +# 构建项目 +RUN npm run build + +# 生产阶段 +FROM nginx:stable-alpine as production-stage + +# 复制构建结果到Nginx目录 +COPY --from=build-stage /app/dist /usr/share/nginx/html + +# 复制自定义Nginx配置(可选) +# COPY nginx.conf /etc/nginx/conf.d/default.conf + +# 暴露80端口 +EXPOSE 80 + +# 启动Nginx +CMD ["nginx", "-g", "daemon off;"] \ No newline at end of file diff --git a/README.md b/README.md index 368cd4c..2238a72 100644 --- a/README.md +++ b/README.md @@ -37,6 +37,39 @@ npm run dev npm run build ``` +## Docker部署 + +本项目支持使用Docker进行部署,提供了完整的Docker配置。 + +### 使用Dockerfile构建镜像 + +```bash +# 构建镜像 +docker build -t partner-admin:latest . + +# 运行容器 +docker run -d -p 8080:80 --name partner-admin partner-admin:latest +``` + +### 使用docker-compose部署 + +```bash +# 启动服务 +docker-compose up -d + +# 查看日志 +docker-compose logs -f + +# 停止服务 +docker-compose down +``` + +### 自定义配置 + +- 默认将应用部署在80端口,可通过修改`docker-compose.yml`中的端口映射进行调整 +- Nginx配置文件位于`nginx.conf`,可根据需要修改 +- 如需添加环境变量,可在`docker-compose.yml`中的environment部分取消注释并添加 + ## 项目结构 ``` @@ -51,7 +84,12 @@ npm run build │ ├── views/ # 页面组件 │ ├── App.vue # 根组件 │ └── main.js # 入口文件 -├── .babelrc # Babel配置 +├── .dockerignore # Docker忽略文件 +├── .gitignore # Git忽略文件 +├── babel.config.js # Babel配置 +├── docker-compose.yml # Docker Compose配置 +├── Dockerfile # Docker构建文件 +├── nginx.conf # Nginx配置 ├── package.json # 项目依赖 ├── webpack.config.js # Webpack配置 └── README.md # 项目说明 diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..a6fce5a --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,23 @@ +version: '3' + +services: + partner-admin: + build: + context: . + dockerfile: Dockerfile + container_name: partner-admin + restart: always + ports: + - "8080:80" + # 如果需要环境变量 + # environment: + # - NODE_ENV=production + # 如果需要挂载配置文件 + volumes: + - ./nginx.conf:/etc/nginx/conf.d/default.conf + networks: + - partner-network + +networks: + partner-network: + driver: bridge \ No newline at end of file diff --git a/nginx.conf b/nginx.conf new file mode 100644 index 0000000..f145b4f --- /dev/null +++ b/nginx.conf @@ -0,0 +1,30 @@ +server { + listen 80; + server_name localhost; + + # 开启gzip + gzip on; + gzip_min_length 1k; + gzip_comp_level 9; + gzip_types text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml; + gzip_vary on; + + # 资源文件缓存 + location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ { + root /usr/share/nginx/html; + expires 1d; + } + + location / { + root /usr/share/nginx/html; + index index.html index.htm; + # 处理单页应用路由 + try_files $uri $uri/ /index.html; + } + + # 错误页面 + error_page 500 502 503 504 /50x.html; + location = /50x.html { + root /usr/share/nginx/html; + } +} \ No newline at end of file