零门槛搭建知识产权档案管理系统实操完整流程指南

一、准备基础环境:安装Docker Desktop

直接下载对应系统的Docker Desktop,Windows地址:https://desktop.docker.com/win/main/amd64/Docker%20Desktop%20Installer.exe;Mac M系列地址:https://desktop.docker.com/mac/main/arm64/Docker.dmg;Mac Intel系列地址:https://desktop.docker.com/mac/main/amd64/Docker.dmg。安装时保持默认选项,完成后启动Docker,等待右下角图标变为绿色(正常运行状态)。

二、搭建项目文件夹结构

新建名为ip-archive-system的空文件夹,在文件夹内按以下规则创建子文件夹和文件:

  • 新建子文件夹:html(前端存放地)
  • 新建子文件夹:backend(后端存放地)
  • 在根文件夹(ip-archive-system)内新建文件:docker-compose.yml(容器配置)
  • 在backend文件夹内新建文件:Dockerfilerequirements.txtapp.py

三、复制完整可运行代码

3.1 根目录docker-compose.yml(完整内容,无缩进错误)

```yaml version: '3.8' services: web: image: nginx:alpine ports: - "8080:80" volumes: - ./html:/usr/share/nginx/html:ro depends_on: - backend backend: build: ./backend working_dir: /app environment: - FLASK_APP=app.py - FLASK_ENV=production - DATABASE_URL=postgresql://ip_admin:IpPass@2024@database:5432/ip_archive database: image: postgres:15-alpine environment: - POSTGRES_USER=ip_admin - POSTGRES_PASSWORD=IpPass@2024 - POSTGRES_DB=ip_archive volumes: - postgres_data:/var/lib/postgresql/data volumes: postgres_data: ```

⚠️ 核心注意:YAML对缩进要求严格,必须按上述格式粘贴,不能随意调整空格

3.2 backend/requirements.txt(依赖文件)

```txt flask==2.3.3 psycopg2-binary==2.9.9 ```

3.3 backend/Dockerfile(后端镜像构建规则)

```dockerfile FROM python:3.11-alpine WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY . . CMD ["python", "app.py"] ```

3.4 backend/app.py(后端逻辑代码)

```python from flask import Flask, request, jsonify import psycopg2 import os app = Flask(__name__) DB_URL = os.getenv("DATABASE_URL") @app.route('/api/submit', methods=['POST']) def submit_ip(): data = request.get_json() 校验必填字段 if not data.get('patentName') or not data.get('patentNo') or not data.get('applicant'): return jsonify({"msg": "所有字段不能为空"}), 400 try: conn = psycopg2.connect(DB_URL) cur = conn.cursor() 自动建表(首次运行执行一次) cur.execute(""" CREATE TABLE IF NOT EXISTS patents ( id SERIAL PRIMARY KEY, patent_name VARCHAR(255) NOT NULL, patent_no VARCHAR(100) UNIQUE NOT NULL, applicant VARCHAR(255) NOT NULL, create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) """) 插入档案数据 cur.execute(""" INSERT INTO patents (patent_name, patent_no, applicant) VALUES (%s, %s, %s) """, (data['patentName'], data['patentNo'], data['applicant'])) conn.commit() cur.close() conn.close() return jsonify({"msg": "档案提交成功"}), 200 except psycopg2.IntegrityError: return jsonify({"msg": "专利号已存在,请勿重复提交"}), 409 except Exception as e: return jsonify({"msg": f"提交失败:{str(e)}"}), 500 if __name__ == '__main__': app.run(host='0.0.0.0', port=5000, debug=False) ```

3.5 html/index.html(前端页面)

```html 知识产权档案管理 知识产权档案录入
```

四、启动系统并验证

1. 确保Docker Desktop处于正常运行状态(右下角图标为绿色);

零门槛搭建知识产权档案管理系统实操完整流程指南

2. 打开ip-archive-system文件夹,Windows在地址栏输入cmd回车,Mac右键文件夹选择「服务」→「终端」,打开命令行;

3. 输入并执行命令:docker-compose up -d

4. 等待1-2分钟,打开浏览器,输入地址:http://localhost:8080,进入档案录入页面;

5. 测试:填写任意专利信息,点击提交,页面会返回「档案提交成功」,此时数据已存入数据库。

五、卡壳点快速排查

  • 端口被占用:修改docker-compose.yml中web服务的ports项,改为「8081:80」,重新执行启动命令;
  • 启动失败:打开Docker Desktop的「Containers/Apps」标签,查看各容器日志,确认是依赖问题还是配置问题;
  • 提交失败:按F12打开浏览器开发者工具,切换到Console标签,查看具体错误信息,按提示修正对应代码。
该系统已实现基础的知识产权档案录入、去重存储功能,可直接用于个人或小型团队的基础档案管理。
AI咨询
热线电话

028-85154420

15388110056

全国售前咨询电话

扫码咨询
安答联动微信公众号二维码

微信扫码关注安答联动

申请试用
热线电话
申请试用

安答联动档案管理系统