为什么 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。
我有以下 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。