Bash 从脚本中找不到docker compose

Bash 从脚本中找不到docker compose,bash,docker,docker-compose,dockerfile,Bash,Docker,Docker Compose,Dockerfile,我有一个Dockerfile,基本上如下所示: FROM mhart/alpine-node:5 COPY . /project WORKDIR /project ENTRYPOINT ["./startup.sh"] 我的startup.sh也很简单: #!/bin/sh set -e docker-compose up -d 我确实有一个docker compose.yml,但这里没有必要描述它 我要做的第一件事是使用我的Dockerfile构建docker映像,因此: docker

我有一个Dockerfile,基本上如下所示:

FROM mhart/alpine-node:5

COPY . /project
WORKDIR /project

ENTRYPOINT ["./startup.sh"]
我的
startup.sh也很简单:

#!/bin/sh
set -e
docker-compose up -d
我确实有一个docker compose.yml,但这里没有必要描述它

我要做的第一件事是使用我的
Dockerfile
构建
docker映像,因此:

docker build-t测试。

然后运行此图像:

docker运行-d测试

这将启动
startup.sh

不幸的是,我出现了以下错误:

./startup.sh:第10行:docker compose:未找到

如果我只做
/startup.sh
而没有docker的东西,它就像一个魅力


问题可能来自哪里?

尝试将完整路径添加到脚本中的
docker compose

which docker-compose

>/usr/bin/some/path/docker-compose
然后将其添加到脚本中

#!/bin/sh
set -e
/usr/bin/some/path/docker-compose up -d

docker调用的脚本不知道您的本地路径设置。因此,您必须命名完整路径。

您的
启动。sh
脚本应该在容器内启动一个进程,docker compose只是主机上管理容器的工具。明白了。感谢您的解释。虽然您希望在容器中运行compose(dind)并非不可想象,但99%的可能性是Erik Dannenberg的答案正是您想要的。