首页 > 解决方案 > ECS 任务停止,容器退出。可执行文件不在 $PATH 中

问题描述

我一直在尝试让我的应用程序正常工作 - 但我不断收到错误消息:

Task Stop Reason: Essential container in task exited; Container myapp Status Reason: CannotStartContainerError: API error (400): OCI runtime create failed: container_linux.go:348: starting container process caused "exec: \"docker-compose up\": executable file not found in $PATH": unknown

我的 Dockerfile:

FROM node:9.10.0

COPY / /myapp
WORKDIR /myapp
RUN chown -R node:node /myapp

USER node
RUN mkdir /home/node/.npm-global
ENV PATH=/home/node/.npm-global/bin:$PATH
ENV NPM_CONFIG_PREFIX=/home/node/.npm-global

RUN npm install -g @angular/cli
RUN npm install

USER root
ENV USER root
RUN apt-get update && \
    apt-get install -y \
        python \
        python-dev \
        python-pip \
        python-setuptools \
    && pip install --upgrade awscli \
    && apt-get clean

现在我的任务定义 ( deploy.yaml) 非常简单,其中一部分是:

....
task:
    taskRole: "<role>"
    containerDefinitions:
    - command:
        - "docker-compose up"
...

在部署应用程序时,docker run我假设 ECS 通常会运行,而我需要docker-compose up启动我的服务(在 中docker-compose.yaml)。我在哪里运行这个命令,或者我如何修复这个路径?

标签: dockerdocker-composeamazon-ecs

解决方案


如果您仔细查看错误消息:

starting container process caused "exec: \"docker-compose up\": executable file not found in $PATH": unknown

您注意到 Docker 正在尝试在 PATH 中查找名为“docker-compose up”的可执行文件。这可能是不正确的,它应该寻找“docker-compose”可执行文件(注意 exe 路径中缺少的“[space] up”)。这可能是由错误的“-command”YML 属性引起的。

你应该有类似的东西:

...
 -command :
    -docker-compose
    -up

我在 Dockerfile 中的 ENTRYPOINT 命令遇到了同样的问题:

ENTRYPOINT ["command with parameters"]

是无效的。你必须有

ENTRYPOINT ["command", "with", "parameters"]

推荐阅读