繁体   English   中英

Docker 部署总是失败——巨大的容器大小

[英]Docker deployment always fails - massive container size

我们正在尝试将 Flask Docker 容器部署到 AWS Elastic Beanstalk,部署和我们的网站在一段时间内运行良好。 我们的 Docker 容器很大 (5GB),因为我们在 requirements.txt 中的依赖项比实际使用的要多,因为我们在非虚拟环境中使用 pip freeze 对其进行了初始化。

我们遇到了库问题(Apache Tika 在本地正常工作,但我们在部署时遇到错误,暗示我们需要安装 Java),因此我们尝试将 Java 安装添加到我们的 Dockerfile。 由于我们已经尝试过了,我们无法在 AWS 上部署任何东西,甚至是我们的旧存储库。 我已经尝试从 requirements.txt 中删除 Java 安装以及所有不必要的 pip 依赖项,但是当我们使用“docker build”时,旧的 pip 依赖项仍在安装并且 Docker 容器更大,并不比以前小。

在 AWS EB 日志中,没有应用程序日志文件,因为部署失败,但我们看到如下错误:-2022/12/19 19:56:18.408872 [ERROR] An error occurred during execution of command [app-deploy] - [Docker 特定构建应用程序]。 停止运行命令。 错误:拉取 docker 镜像失败:命令 /bin/sh -c docker pull URL.dkr.ecr.us-east-1.amazonaws.com/url-path:latest failed with error 命令在 300 秒后超时 -2022/ 12/19 19:56:18.728922 [INFO] 命令服务响应:{“status”:“FAILURE”,“api_version”:“1.0”,“results”:[{“status”:“FAILURE”,“msg”:”引擎执行遇到错误。","returncode":1,"events":[{"msg":"实例部署下载Docker镜像失败,部署失败。","timestamp":1671479778249,"severity" :"ERROR"},{"msg":"实例部署失败。详情请查看'eb-engine.log'。","timestamp":1671479778487,"severity":"ERROR"}]}]}

我们的 Dockerfile 看起来像:

FROM python:3.9

# Set the working directory and install the requirements
WORKDIR /server
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt

# Expose port 5000 and copy the source code
EXPOSE 5000
COPY . .

# Run the application using gunicorn
CMD ["gunicorn", "wsgi:app", "-w 2", "-b 0.0.0.0:5000", "-t 30"]

我们尝试过的:

题:

是什么导致了 Docker 容器的巨大尺寸? 我们如何解决这个问题并成功地将 Docker 容器部署到 AWS Elastic Beanstalk?

我们通过延长 Elastic Beanstalk config.yml 中的超时解决了这个问题。

aws:elasticbeanstalk:command:
      timeout: 900

这仍然不能解释为什么我们摆脱的旧 pip 依赖项被安装在新的 Docker 构建中,所以任何能够回答这个问题的人都会受到赞赏并被接受为答案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM