Svelte应用本地正常运行但AWS Lightsail部署失败问题排查
Docker化Svelte应用部署AWS Lightsail失败问题
我有一个Docker化的Svelte应用,本地运行完全正常,但部署到AWS Lightsail时遇到问题,以下是已执行的操作:
错误信息

日志
[3/Jul/2024:08:42:00] [deployment:1] Creating your deployment [3/Jul/2024:08:42:13] exec /usr/local/bin/docker-entrypoint.sh: exec format error [3/Jul/2024:08:43:02] [deployment:1] Started 1 new node [3/Jul/2024:08:43:18] exec /usr/local/bin/docker-entrypoint.sh: exec format error [3/Jul/2024:08:44:13] [deployment:1] Started 1 new node [3/Jul/2024:08:44:22] exec /usr/local/bin/docker-entrypoint.sh: exec format error [3/Jul/2024:08:45:27] [deployment:1] Started 1 new node [3/Jul/2024:08:45:44] exec /usr/local/bin/docker-entrypoint.sh: exec format error [3/Jul/2024:08:46:02] [deployment:1] Canceled
Lightsail容器配置
- 创建了Lightsail容器服务
- 添加容器详情:
- 容器名称:frontend
- 从ECR拉取镜像
- 将PUBLIC ENDPOINT设置为使用端口
:3000

Dockerfile
FROM node:18-alpine AS builder WORKDIR /app COPY package*.json . RUN npm ci COPY . . RUN npm run build RUN npm prune --production FROM node:18-alpine WORKDIR /app COPY --from=builder /app/build build/ COPY --from=builder /app/node_modules node_modules/ COPY package.json . EXPOSE 3000 # <--- 我认为这样可行 ENV NODE_ENV=production CMD [ "node", "build" ]
Docker Desktop配置
本地运行Docker镜像无任何问题:
- 可通过
localhost:3000访问 - 若将端口改为
:80,也可通过localhost访问

Docker Desktop使用tcp协议,曾以为这是问题原因,但无法添加:3000 tcp作为Public Endpoint。
更新
测试了未做任何代码修改的SvelteKit骨架项目,参考SvelteKit Dockerfile配置示例,且未在Lightsail上设置任何环境变量,问题依旧。
内容的提问来源于stack exchange,提问作者kawa
相关产品推荐
相关产品推荐

