我正在尝试将服务部署到 ECS。这是一个非常简单的 Dockerfile,容器无法部署并出现错误:
CannotStartContainerError: ResourceInitializationError: failed to create new container runtime task: failed to create shim task: OCI runtime create failed: runc create failed: args must not be empty: unknown:
。
不确定这意味着什么。听起来好像无法创建容器,因为某个地方没有定义参数。
这是 Dockerfile
FROM node:16
RUN mkdir -p /home/node/app/node_modules/ && chown -R node:node /home/node/app
WORKDIR /home/node/app
COPY . /home/node/app
RUN npm install
RUN npm run build
RUN chmod +x /home/node/app/start.sh
ENTRYPOINT [ "/bin/sh", "./start.sh" ]
start.sh 脚本非常简单,它回显一些文本,设置一些环境变量并调用节点服务。事实上,cloudwatch 没有显示此脚本中回显的任何内容,这使得它看起来根本没有调用该脚本。
我尝试使用完全相同的taskdef成功部署其他容器 我尝试了 CMD 而不是 ENTRYPOINT ,它没有改变任何东西 我尝试使用node-alpine代替node 这个特定容器似乎有问题,但它在本地运行良好。
我已经尝试破译这个错误的含义大约 8 个月了,但运气不佳。
明白了...
我必须在 taskdef 中明确定义
entrypoint
、command
和 workingDirectory
。似乎没有从 Dockerfile 中获取。
"entryPoint": [
"/bin/bash",
"-c"
],
"command": [
"./start.sh"
],
"workingDirectory": "/home/node/app",