【问题标题】:Docker deployment to elasticbeanstalk is slowDocker 部署到 elasticbeanstalk 很慢
【发布时间】:2022-08-19 20:27:33
【问题描述】:

我的码头文件如下

FROM node:16.16.0 as ui
WORKDIR /app
COPY ./ui/package.json .
RUN npm install
COPY ./ui/ .

WORKDIR /admin
COPY ./admin/package.json .
RUN npm install
COPY ./admin/ .

FROM ui as ui1
WORKDIR /app
RUN npm run build

WORKDIR /admin
RUN npm run build


FROM nginx
EXPOSE 3000 5001
COPY ./nginx/prod.conf /etc/nginx/conf.d/default.conf
COPY --from=ui1 /app/build /usr/share/nginx/html 
COPY --from=ui1 /admin/build /usr/share/nginx/admin 

一切正常,但每次eb deploy 都需要 4 分钟以上。它是一个带有反应你好世界页面的简单应用程序。

第一次它很好,因为它安装了节点,包等。但第二次如果我只是更改应用程序中的一些内容并部署,再次需要 4 到 5 分钟。

我试过 eb deploy --staged ,它仍然需要同样的时间。

下面是我的码头工人撰写

version: \"3\"
services:
  backend:
    build:
      context: ./backend
    volumes:
      - /app/node_modules
      - ./backend:/app  
  nginx:
    volumes:
      - ./nginx/prod.conf:/etc/nginx/conf.d/default.conf
    restart: always
    build:
      context: ./
    ports:
      - \"80:80\"
    
  • 它的自然。它总是重新部署整个应用程序,而不仅仅是某些选定的文件或其中的一部分。
  • 嗨,上周每当我进行第二次部署时,它都会在几分钟内更新站点..现在似乎每次都下载节点图像。
  • @Graciewilliams 你好,你可以看看 aws codebuild docker cache。
  • @WonhyeongSeo:嗨,有没有在 beanstalk 命令行上设置它的链接?

标签: docker docker-compose dockerfile amazon-elastic-beanstalk


【解决方案1】:

来自亚马逊文档:https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.rolling-version-deploy.html

更新使用不可变的部署机制。这确保了 Elastic Beanstalk 预置 Amazon EC2 实例的并行队列 在换出和终止之前安装更新 现有实例。

我在 ECS(弹性容器服务)上也遇到过类似的情况。 101 是在新版本证明自己稳定之前不会终止旧版本的应用程序,这意味着它将保持健康状态 X 秒。您应该能够通过重新配置附加负载均衡器的目标来调整这一点。

现在,对于 Docker,请查看您的 dockerfile,看看您是否可以从多阶段构建中受益。在我看来,任何更改都会触发 Dockerfile 的几乎所有步骤。多个 npm run build 的 4 分钟似乎并不多。话虽如此,如果您引入多阶段构建,您可以单独构建它们,并在最后阶段复制结果。通过这样做,您应该从 Docker 缓存中受益。

【讨论】:

    猜你喜欢
    • 2021-04-09
    • 2021-10-26
    • 1970-01-01
    • 2015-07-03
    • 2020-08-28
    • 2020-07-01
    • 2017-11-02
    • 2016-09-20
    • 2019-06-25
    相关资源
    最近更新 更多