我对Docker世界还不太了解,我正在尝试将一个图像(Node.js TypeScript服务)从AWS ECR部署到AWS ECS,但当我在集群中创建服务时,出现此错误,并且任务永远无法运行:
exec /usr/local/bin/docker-entrypoint.sh: exec format error
我的Dockerfile长这样:
FROM node:lts-alpine
WORKDIR /usr/app
COPY package*.json ./
COPY tsconfig*.json ./
RUN yarn install --quiet
RUN yarn global add pm2
COPY . .
RUN yarn build
CMD ["pm2-runtime", "build/src/localServer.js"]
当我构建镜像并运行时,它在我的电脑上运行良好:
(base) MacBook-Pro api % docker run -it -p 3000:3000 api-dev
2022-12-06T15:35:27: PM2 log: Launching in no daemon mode
2022-12-06T15:35:27: PM2 log: App [localServer:0] starting in -fork mode-
2022-12-06T15:35:27: PM2 log: App [localServer:0] online
Connected to my_mongo_db_cluster
Server ready at: http://localhost:3000/
任务定义正在运行在 Linux/X86_64 上。
有什么建议或提示可以找出问题是什么吗?谢谢!
编辑:当我在我的 Dockerfile 中添加 ENTRYPOINT 时,像这样
# same steps
COPY . .
RUN yarn build
ENTRYPOINT ["pm2-runtime", "build/src/localServer.js"]
它会抛出这个错误 exec /usr/local/bin/pm2-runtime: exec format error
。当我将pm2-runtime
更改为node
时,同样的情况也发生了。
# same steps
COPY . .
RUN yarn build
ENTRYPOINT ["node", "build/src/localServer.js"]
希望它有所帮助。