docker - 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
)。我在哪里运行这个命令,或者我如何修复这个路径?
解决方案
如果您仔细查看错误消息:
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"]
推荐阅读
- python - Python open cv2 ip web cam 无法正常工作,显示错误
- tensorflow - 从 Python 转换为 Tensorflow.js 后的 model.predict() 结果不同
- sql - 计数函数sql
- address-sanitizer - 发生未知地址上的 SEGV 时,如何继续执行地址清理程序?
- kubernetes - kubernetes-fabric8 watch API中的Action ADD是什么意思?
- javascript - 删除 react-dnd 中的可拖动对象
- javascript - 在javascript中将二进制数据编码为字符串
- python - 如何使用 Selenium webdriver 和 Python 抓取所有搜索结果
- tensorflow - tf.profiler 的峰值内存使用量比 nvidia-smi 多得多?
- java - bean xml中的Spring配置方法引用