AWS Elastic Beanstalk Docker 不支持多阶段构建 [英] AWS Elastic Beanstalk Docker Does not support Multi-Stage Build

查看:27
本文介绍了AWS Elastic Beanstalk Docker 不支持多阶段构建的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在努力将我的构建部署到 Docker 上的 AWS.我不知道解决方案在哪里,因为这是我第一次使用 Docker.我在本地一切正常,但在部署时在 Elastic Beanstalk 中出现以下错误:

I am struggling to get my build deploying to AWS on Docker. I have no idea where the solution lays as this is my first time with Docker. I have got it all working fine locally, but when I deploy I get the following error in 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 文件的样子:

This is what my Docker file looks like:

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 版本不支持这种多阶段构建方法?

Can someone please point me in the right direction? Or is this method of Multi-Stage builds not supported by Elastic Beanstalk's Docker version?

推荐答案

我遇到了同样的问题.实际上,我检查了日志文件中的以下几行:

I had the same problem. Actually I check the following rows in my log file:

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":

As you can seen, it tries to make a 'docker pull' with 3 arguments:

  1. 节点:高山
  2. 作为
  3. 建设者

当然,这是不可能的,因为它只需要 1 个参数.因此,显然 AWS Elastic Beanstalk 不支持阶段命名.出于这个原因,我使用未命名的构建器解决了:

and of course, that is not possible because it requires only 1 argument. Thus, apparently AWS Elastic Beanstalk doesn't support stage naming. For this reason I solved using an Unnamed builder:

FROM node:13-alpine

最后:

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

最终的 Dockerfile:

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 行日志

For me it works using that solution. If someone has any problem, please share the last-100-lines log

这篇关于AWS Elastic Beanstalk Docker 不支持多阶段构建的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆