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

docker-compose run执行django命令异常进入Postgres shell问题求助

问题根源

你的Django镜像entrypoint脚本开头的set参数配置写法完全错误,直接导致docker-compose run启动新容器时无法执行后续逻辑:

# 错误写法
bash | set -o errexit
bash | set +o pipefail
bash | set -o nounset

这种写法会在执行到这三行时启动独立的bash子进程,占用容器的标准输入输出,导致entrypoint后续的PostgreSQL可用性检查、你指定的python manage.py命令都不会被执行。你误以为进入了PostgreSQL shell,实际是进入了这个意外启动的bash子进程。

而docker-compose exec可以正常运行的原因是:exec是在已经启动的、完成了entrypoint执行的运行中容器内执行命令,不会重新跑entrypoint脚本,所以不受这个错误影响。

修复方法

  1. 把entrypoint脚本开头的三行错误配置删掉,替换为正确的shell参数配置:
set -o errexit
set +o pipefail
set -o nounset
  1. 你的start_dev启动脚本开头也有同样的错误写法,同步修改为上面的正确写法。
  2. 重新构建Django镜像后再执行docker-compose run命令即可恢复正常:
docker-compose build django

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 09:42:03