Docker 使用笔记 - 中国大陆实践指南

Docker 基础概念 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 或 Windows 机器上。 国内环境配置 镜像加速 配置国内镜像源加速 Docker Hub 访问: { "registry-mirrors": [ "https://mirror.ccs.tencentyun.com", "https://registry.docker-cn.com", "https://docker.mirrors.ustc.edu.cn" ] } 文件位置: Linux: /etc/docker/daemon.json Windows: %programdata%\docker\config\daemon.json 常用国内镜像仓库 阿里云容器镜像服务 腾讯云镜像仓库 华为云容器镜像服务 核心概念 镜像(Image) Docker 镜像是一个只读的模板 包含了运行应用程序所需的所有文件和配置 可以通过 Dockerfile 构建 容器(Container) 镜像的运行实例 可以被启动、停止、删除 每个容器都是相互隔离的 Dockerfile 用于构建镜像的脚本文件 包含了构建镜像所需的所有命令 示例: FROM ubuntu:20.04 RUN apt-get update && apt-get install -y nginx EXPOSE 80 CMD ["nginx", "-g", "daemon off;"] 常用命令 # 构建镜像 docker build -t myapp:1.0 . # 运行容器 docker run -d -p 80:80 myapp:1.0 # 查看运行中的容器 docker ps # 停止容器 docker stop <container_id> Docker Compose Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。通过 docker-compose.yml 文件,可以配置应用程序的服务、网络和卷。 ...

March 11, 2025 · 2 min

OneNote API集成踩坑记录

背景 在Snip2Note项目中,我们需要将处理后的笔记内容同步到OneNote,以便在多设备间访问。这需要通过Microsoft Graph API进行OAuth认证,并调用OneNote API创建笔记页面。本文记录了在集成过程中遇到的一些问题及解决方案。 环境准备 1. Azure应用注册 首先需要在Azure门户中注册应用程序,获取必要的凭证: 应用名称:Snip2note_1 支持的账户类型:个人Microsoft账户 重定向URI:http://localhost:8088 所需API权限:Notes.ReadWrite.All 2. 环境变量配置 创建.env.onenote文件,包含以下配置: ONENOTE_CLIENT_ID= ONENOTE_CLIENT_SECRET= ONENOTE_TENANT_ID= # 代理设置 HTTP_PROXY=http://127.0.0.1:7890 HTTPS_PROXY=http://127.0.0.1:7890 问题1:客户端ID错误 现象 运行测试脚本时,出现以下错误: AADSTS700016: Application with identifier '9c5b91f7-53bf-4359-9f85-5cfdff6b2e5a # 填入 Application (client) ID' was not found in the directory 'Default Directory'. 原因分析 错误信息中的客户端ID与Azure门户中注册的不一致,且包含了注释文本。经排查发现,项目根目录存在一个默认的.env文件,其中包含了示例ID: ONENOTE_CLIENT_ID=9c5b91f7-53bf-4359-9f85-5cfdff6b2e5a # 填入 Application (client) ID Python的dotenv库会先加载根目录的.env文件,然后才加载.env.onenote文件,导致正确的ID被覆盖。 解决方案 两种解决方法: 修改代码加载环境变量的方式: # 加载环境变量 - 只加载指定的.env.onenote文件,忽略默认.env文件 dotenv_path = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), '.env.onenote') load_dotenv(dotenv_path=dotenv_path, override=True) 更新默认的.env文件:将正确的配置从.env.onenote复制到.env文件中。 问题2:认证端点错误 现象 修复客户端ID后,出现新的错误: AADSTS90023: Application %s(Snip2note_1) is configured for use by Microsoft Account users only. Please use the %2fconsumer endpoint to serve this request. 原因分析 我们的应用被配置为仅支持Microsoft个人账户(Personal Microsoft account users),但代码中使用了组织账户的认证端点。 ...

March 10, 2025 · 1 min