AWS Elastic Beanstalk Docker不支持多阶段构建。

问题描述 投票:0回答:1

我正在努力让我的构建部署到Docker上的AWS上,我不知道解决方案在哪里,因为这是我第一次使用Docker。我不知道解决方案在哪里,因为这是我第一次使用Docker。我已经让它在本地工作得很好,但当我部署时,我在Elastic Beanstalk中得到以下错误。

2020/04/30 05:35:02.330900 [ERROR] An error occurred during execution of command [app-deploy] - [Docker Specific Build Application]. Stop running the command. Error: failed to pull docker image: Command /bin/sh -c docker pull node:13.3.0 AS compile-image failed with error exit status 1. Stderr:"docker pull" requires exactly 1 argument.
See 'docker pull --help'.

这是我的Docker文件的样子。

FROM node:13-alpine as builder

WORKDIR /opt/ng
COPY package.json package-lock.json ./
RUN npm install

ENV PATH="./node_modules/.bin:$PATH"

COPY . ./
RUN ng build --prod

FROM nginx:1.18-alpine
COPY nginx.conf /etc/nginx/conf.d/default.conf
COPY --from=builder /opt/ng/dist/angular-universal-app/browser /usr/share/nginx/html

谁能告诉我正确的方向?还是Elastic Beanstalk的Docker版本不支持这种多阶段构建的方法?

docker amazon-elastic-beanstalk amazon-ecs
1个回答
3
投票

当使用使用'Amazon Linux 2'的解决方案堆栈时,我已经看到了这个错误。这些平台是新的,并且有一些持续的问题。

Amazon Linux 2对AWS Elastic Beanstalk的支持处于测试版,可能会发生变化。

请使用名称中包含 "Amazon Linux "的解决方案栈。你不应该在那里面对这个问题。


8
投票

我也有同样的问题,实际上我检查了我的日志文件中的以下行。

2020/05/26 17:26:30.327310 [INFO] Running command /bin/sh -c docker pull node:alpine as builder
2020/05/26 17:26:30.369280 [ERROR] "docker pull" requires exactly 1 argument.

正如你所看到的,它试图用3个参数做一个 "docker pull"。

  1. node:alpine
  2. 作为
  3. 建筑商

当然,这是不可能的,因为它只需要1个参数。因此,显然AWS Elastic Beanstalk不支持阶段命名。为此,我使用Unnamed builder解决。

FROM node:13-alpine

而最后。

COPY --from=0 /opt/ng/dist/angular-universal-app/browser /usr/share/nginx/html

Final Dockerfile。

FROM node:13-alpine

WORKDIR /opt/ng
COPY package.json package-lock.json ./
RUN npm install

ENV PATH="./node_modules/.bin:$PATH"

COPY . ./
RUN ng build --prod

FROM nginx:1.18-alpine
COPY nginx.conf /etc/nginx/conf.d/default.conf
COPY --from=0 /opt/ng/dist/angular-universal-app/browser /usr/share/nginx/html

对我来说,使用这个解决方案就可以了。如果有人有什么问题,请分享最后100行的日志

© www.soinside.com 2019 - 2024. All rights reserved.