# 环境配置设置指南 ## 概述 本指南介绍如何配置和设置知识库系统的Docker部署环境,包括生产环境和开发环境的配置。 ## 快速开始 ### 1. 自动配置(推荐) 使用自动配置脚本快速设置环境: ```bash # 生产环境配置 ./docker/setup-env.sh -e production # 开发环境配置 ./docker/setup-env.sh -e development # 交互式配置 ./docker/setup-env.sh -i ``` ### 2. 手动配置 如果需要手动配置,请按照以下步骤: #### 生产环境 1. 复制环境模板: ```bash cp .env.production .env ``` 2. 编辑 `.env` 文件,修改以下关键配置: ```bash APP_KEY=base64:your-generated-key-here DB_PASSWORD=your-secure-database-password MEILISEARCH_KEY=your-meilisearch-master-key APP_URL=http://your-domain.com ``` 3. 生成应用密钥: ```bash php artisan key:generate ``` #### 开发环境 1. 复制开发环境模板: ```bash cp .env.development .env ``` 2. 编辑配置(开发环境可以使用默认值) ## 配置验证 ### 验证环境变量 ```bash # 验证当前环境配置 ./docker/validate-env.sh ``` ### 验证Docker配置 ```bash # 验证生产环境配置 docker-compose config # 验证开发环境配置 docker-compose -f docker-compose.dev.yml config ``` ## 启动服务 ### 生产环境 ```bash # 启动所有服务 docker-compose up -d # 查看服务状态 docker-compose ps # 查看日志 docker-compose logs -f ``` ### 开发环境 ```bash # 启动开发环境 docker-compose -f docker-compose.dev.yml up -d # 查看服务状态 docker-compose -f docker-compose.dev.yml ps # 查看日志 docker-compose -f docker-compose.dev.yml logs -f ``` ## 网络测试 启动服务后,测试网络连接: ```bash # 测试容器间网络连接 ./docker/test-network.sh ``` ## 应用初始化 服务启动后,初始化Laravel应用: ```bash # 运行数据库迁移 docker exec knowledge_base_app php artisan migrate # 运行数据库种子 docker exec knowledge_base_app php artisan db:seed # 创建搜索索引 docker exec knowledge_base_app php artisan scout:import "App\Models\Document" ``` ## 环境配置详解 ### 网络配置 - **生产环境网络**: `knowledge_base_network` (172.20.0.0/16) - **开发环境网络**: `knowledge_base_dev_network` (172.21.0.0/16) ### 端口映射 #### 生产环境 - Web应用: 80 - MySQL: 3306 - Redis: 6379 - Meilisearch: 7700 #### 开发环境 - Web应用: 8080 - MySQL: 3307 - Redis: 6380 - Meilisearch: 7701 - PHP-FPM调试: 9000 ### 存储卷 #### 生产环境 - 数据库数据: `./storage/mysql` - Redis数据: `./storage/redis` - 搜索数据: `./storage/meilisearch` - 应用存储: `./storage/app` - 日志文件: `./storage/logs` #### 开发环境 - 数据库数据: `./storage/dev/mysql` - Redis数据: `./storage/dev/redis` - 搜索数据: `./storage/dev/meilisearch` - 应用存储: `./storage/dev/app` - 日志文件: `./storage/dev/logs` ## 环境变量说明 ### 必需配置 | 变量名 | 说明 | 示例 | |--------|------|------| | `APP_KEY` | 应用加密密钥 | `base64:xxx...` | | `DB_PASSWORD` | 数据库密码 | `secure_password` | | `MEILISEARCH_KEY` | 搜索引擎密钥 | `master_key_xxx` | ### 可选配置 | 变量名 | 默认值 | 说明 | |--------|--------|------| | `APP_NAME` | 知识库系统 | 应用名称 | | `APP_URL` | http://localhost | 应用URL | | `DB_DATABASE` | knowledge_base | 数据库名 | | `DB_USERNAME` | knowledge_user | 数据库用户 | ## 故障排除 ### 常见问题 1. **容器启动失败** ```bash # 查看容器日志 docker-compose logs [service_name] # 检查容器状态 docker-compose ps ``` 2. **网络连接问题** ```bash # 测试网络连接 ./docker/test-network.sh # 检查网络配置 docker network ls docker network inspect knowledge_base_network ``` 3. **环境变量问题** ```bash # 验证环境变量 ./docker/validate-env.sh # 查看容器环境变量 docker exec knowledge_base_app env ``` 4. **权限问题** ```bash # 修复存储目录权限 chmod -R 775 storage chmod -R 775 bootstrap/cache ``` ### 重置环境 如果需要重置环境: ```bash # 停止所有服务 docker-compose down # 删除数据卷(注意:这会删除所有数据) docker-compose down -v # 重新配置环境 ./docker/setup-env.sh -f -e production # 重新启动服务 docker-compose up -d ``` ## 安全建议 ### 生产环境 1. **更改默认密码**:确保所有默认密码都已更改 2. **使用强密钥**:使用复杂的APP_KEY和MEILISEARCH_KEY 3. **限制网络访问**:配置防火墙规则 4. **定期备份**:定期备份数据库和文件 5. **监控日志**:监控应用和系统日志 ### 开发环境 1. **隔离环境**:不要在生产环境使用开发配置 2. **定期更新**:保持开发环境与生产环境同步 3. **清理数据**:定期清理开发环境数据 ## 维护操作 ### 备份 ```bash # 备份数据库 docker exec knowledge_base_mysql mysqldump -u root -p knowledge_base > backup.sql # 备份文件 tar -czf storage_backup.tar.gz storage/ ``` ### 更新 ```bash # 更新镜像 docker-compose pull # 重启服务 docker-compose up -d ``` ### 监控 ```bash # 查看资源使用情况 docker stats # 查看服务健康状态 docker-compose ps ```