增加 dockerfile

This commit is contained in:
aaron 2025-03-08 20:40:43 +08:00
parent 82281438b0
commit d3da7fa911
5 changed files with 166 additions and 1 deletions

42
.dockerignore Normal file
View File

@ -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

32
Dockerfile Normal file
View File

@ -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;"]

View File

@ -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 # 项目说明

23
docker-compose.yml Normal file
View File

@ -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

30
nginx.conf Normal file
View File

@ -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;
}
}