为什么 docker-compose 工作而 docker 运行 不工作

why docker-compose work and docker run doesn't

我有以下 local.yml 文件

version: '3'
services:
  celery-worker-default:
    image: weapp_app:latest
    container_name: weapp_celery-worker-default
    command: celery worker -A WeApp -Q default -n default --loglevel=INFO
    env_file:
      - .env
    volumes:
      - .:/opt/python/current/app/

当我运行

docker-compose -f local.yml up celery-worker-default

一切正常 也运行喜欢

docker-compose -f local.yml run celery-worker-default celery worker -A WeApp -Q default -n default --loglevel=INFO

一切运行好

但是如果我尝试使用以下命令 docker 执行

docker run -v "$(pwd):/opt/python/current/app/" -w /opt/python/current/app --env-file .env weapp_app:latest celery worker -A WeApp -Q default -n default --loglevel=INFO

我收到这个错误

Error: 
Unable to load celery application.
The module "WeApp was not found.

我已经尝试更改 $(pwd) 以获得本地完整本地路径,但我得到了同样的错误。

在其他方面,我尝试通过带有选项 -e 的命令行传递所有环境值并得到相同的错误。 我尝试在 docker 选项中不使用工作目录。 我尝试在容器内打开一个shell并执行命令,但同样的错误。

首先,感谢所有评论和帮助提出想法的人

关注Tarun的评论后,我看到了问题所在,但我认为对每个人都知道它是有好处的。

docker-compose 读取环境文件(在我的例子中是 .env)的方式与 docker 不同。

然后当您使用 docker-compose 时,您可以声明像

这样的值
VAR="VALUE"

但是对于docker你必须像

一样声明
VAR=VALUE 

没有引号。
这让我的情况大不相同。

再次感谢所有花时间阅读我的文章的人post。