You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

docker-compose up与docker run的差异?FastAPI容器启动异常求助

问题原因与解决方案

一、两种启动方式结果不同的原因

核心问题出在docker-compose.yml的环境变量写法错误:
你在compose配置里写的- MODULE_NAME = "test"包含了多余的空格,YAML解析时会把整个MODULE_NAME = "test"当成变量名(而非将MODULE_NAME作为变量名、test作为对应值),导致容器没正确读取到指定的模块名,因此启动了镜像默认的欢迎页面,而非你的FastAPI应用。

正确写法有两种:

  1. 去掉等号前后的空格:
environment:
    - MODULE_NAME="test"
  1. 使用键值对格式:
environment:
    MODULE_NAME: "test"

修改后重新执行docker-compose up --build,就能正常加载你的test模块了。

二、docker run与docker-compose up的差异

  • 使用场景:docker run是单容器启动命令,适合快速测试单个容器;docker-compose up基于配置文件管理多容器应用,可一次性启动所有关联服务(比如后续新增Nginx容器时,用compose会更便捷)。
  • 配置维护:docker run的所有参数都在命令行中,时间久了易遗忘、难维护;docker-compose.yml将环境变量、端口映射、卷挂载等所有配置集中管理,可读性和复用性更强。
  • 网络与依赖:compose会自动为服务创建专属网络,容器之间可通过服务名直接通信;docker run默认使用桥接网络,容器间通信需要手动配置网络。
  • 批量操作:compose支持一键启动、停止、删除所有关联服务(如docker-compose down);docker run操作多容器需逐个执行命令。
  • 环境切换:compose可通过docker-compose.override.yml或不同配置文件(如dev/prod)实现多环境配置切换;docker run则需要手动修改命令行参数。

内容的提问来源于stack exchange,提问作者jpdoliveiramc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 09:35:07