新的开始,新的努力。

写在前面
翻开博客园的随笔,发现上一次写已经是24年的6月份了,那时候我正在读研二。想着刷刷leetcode给后面找工作积累经验和知识基础。
但是随后发生了很多事情,不断地打击我的自信,让我陷入自我怀疑,逃避努力,然后负反馈,又自我怀疑的恶性循环。
不过现在一切都已经结束了,新的工作需要新的开始,需要继续努力。
这里我打算给自己写一份工作用的工具库,里面放自己写的代码、思路、ppt模板等,需要的时候就随时拉下来用。
我的计划是使用Docker容器、python FastAPI做接口。MinIO作为分发。nginx负责安全。

先从Docker的安装开始吧。
docker的安装命令是apt-get install -y docker.io
在这之前,最好先更新一下apt, 使用apt-get update
然后可以尝试启动docker

systemctl start docker 
systemctl enable docker

使用docker --version测试一下docker是否安装正确并可以使用。

在这里我使用的是阿里云服务器,阿里云官方给了加速镜像源。
image
在搜索框中输入 容器镜像服务ACR 可以找到如下图所示的页面

image

在加速器地址可以看到镜像源的具体地址,每个人都有一个独特的代码。

下方有不同的操作系统的手册文档。

想要在Ubuntu中使用的话,可以采用官方给出的文档规范
注意要使用1.10以上的docker版本(应该没有这么低的吧....)

找到/etc/docker/daemon.json 这个json文件。
在其中编辑

{
  "registry-mirrors": ["https://xxxx(替换成你的).mirror.aliyuncs.com"]
}

然后

sudo systemctl daemon-reload
sudo systemctl restart docker

这样配置好了docker的镜像源,就不会有docker hub不稳定连接的问题,但是会出现一定的库可能拉不到的问题。这个后面再讲。

我的整体项目树如图:
image

根据需要配置自己的docker-compose.yml,下面是我自己的配置文件供参考

services:
  # =========================
  # MinIO 对象存储服务
  # =========================
  minio:
    image: minio/minio  # 使用官方 MinIO 镜像
    container_name: minio  # 容器名称(方便 docker ps 查看)

    ports:
      - "9000:9000"  # API 接口端口(程序访问)
      - "9001:9001"  # 控制台 UI(浏览器访问)

    environment:
      MINIO_ROOT_USER: <REDACTED>        # 管理员账号(自己替换)
      MINIO_ROOT_PASSWORD: <REDACTED>    # 管理员密码(自己替换)

    command: server /data --console-address ":9001"
    # 启动 MinIO:
    # /data 是存储路径
    # 9001 是 Web 控制台端口

    volumes:
      - minio_data:/data
      # 数据持久化(容器删了数据不会丢)

  # =========================
  # FastAPI 后端服务
  # =========================
  backend:
    build: ./backend  # 从 backend 目录下的 Dockerfile 构建镜像
    container_name: backend

    ports:
      - "8000:8000"  # 对外暴露 FastAPI 接口

    depends_on:
      - minio
      # 启动顺序:先启动 minio,再启动 backend(不保证“完全可用”,只是顺序)

    environment:
      MINIO_ENDPOINT: minio:9000
      # 关键:容器之间通信使用服务名(不是 localhost)

      MINIO_ACCESS_KEY: <REDACTED>
      MINIO_SECRET_KEY: <REDACTED>

# =========================
# 数据卷定义
# =========================
volumes:
  minio_data:
    # Docker 管理的持久化存储

配置自己的Dockerfile文件

FROM python:3.10-slim 
# 设置容器内工作目录 
WORKDIR /app 
# 复制当前目录所有文件到容器中 
COPY . /app 
# 设置 Python 模块搜索路径(解决 app 包导入问题) 
ENV PYTHONPATH=/app 
# 安装依赖(使用国内镜像加速) 
RUN pip install --no-cache-dir \ -i https://mirrors.aliyun.com/pypi/simple \ -r requirements.txt 
# 启动 FastAPI 服务 
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]

在这里我找了半天的python版本,一直找不到合适的,因为我本地用的3.12,我就希望能 3.12是最好。查看了Docker hub( https://hub.docker.com/_/python?xk=ShowRecommendedBadge&xt=Disabled )都到3.15了。但是死活pull不下来,后来想到可能是镜像源没有合适的,就一点点往下试,总算试到了3.10-slim是可以用的。太磨人了。

然后写好自己的后端文件,就可以放进Docker中启动了

docker compose build --no-cache 
docker compose up -d

查看 docker ps
都启动了的话,恭喜你,docker和后端都弄好了!

posted @ 2026-04-26 12:18  陶醉的碎片  阅读(11)  评论(0)    收藏  举报