[英]command in docker-compose.yaml throwing errors
version: "3.4"
services:
app:
build:
context: ./
target: project_build
image: sig-project
environment:
PROJECT_NAME: "${PROJECT_NAME:-NullProject}"
command: /bin/bash -c "init_project.sh"
ports:
- 7777:7777
expose:
- 7777
volumes:
- ./$PROJECT_NAME:/app/$PROJECT_NAME
- .:/home/jovyan/work
working_dir: /app
entrypoint: "jupyter notebook --ip=0.0.0.0 --port=7777 --allow-root --no-browser"
以上是我的 docker-compose.yaml。
该命令不运行,我收到此错误:
Unrecognized alias: 'c', it will have no effect
此外,它从 /bin 而不是 /app 运行 jupyter notebook。
如果我将命令更改为
command: "init_project.sh"
它会默默地失败,如果尝试做一些复杂的事情,比如:
command: python init_project.py
然后它给了我这个:
No such file or directory: /app/python
注意:init_project.sh 只是 init_project.py 的 bash 脚本包装器
所以似乎由于某种原因,命令以我不理解的方式运行,并且从 /app 目录中运行,但没有 shell 或 bash。
我一直在用头撞墙,试图弄清楚我在这里缺少什么,我不知道还能尝试什么。
我发现了各种类似的问题和讨论,但似乎没有任何解决办法。
这些是工作目录 /app 的内容:
#ls
Dockerfile docker-compose.yaml docker_compose.sh init_project.sh poetry.lock pyproject.toml
Makefile create_poetry_lock.sh docker_build.sh init_project.py install-poetry.py poetry_lock_update.sh test.sh
我错过了什么?
谢谢
你的撰写文件对我来说看起来很奇怪
Dockerfile
存在,它构建镜像,然后容器将使用该镜像创建。根据上面所说的;
为什么您的撰写文件中同时具有image
和build
属性? 如果图像已经可用(例如:postgreSQL、rabbitmq)那么您不需要构建任何东西,只需提供图像即可。 如果没有图片,请将您的Dockerfile
添加到问题中。
/bin/bash -c
?您可以简单地添加:
bash /path/to/ur/shell_script
最后,为什么不将命令添加到Dockerfile
和CMD
? 什么是init_project.sh
和init_project.py
? 也许还可以共享这些文件中的内容。 添加tree
output 也可能很好,这样我们就知道如何从哪里执行不同的命令。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.