安装pip依赖时Docker速度非常慢

9

我正在尝试为一个虚拟的本地Django项目实现docker。我使用docker-compose作为定义和运行多个容器的工具。在这里,我试图将Django-web-appPostgreSQL两个服务容器化。

Dockerfiledocker-compose.yml中使用的配置

Dockerfile

# Pull base image
FROM python:3.7-alpine

# Set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

# Set work directory
WORKDIR /code

# Install dependencies
COPY requirements.txt /code/
RUN pip install -r requirements.txt

# Copy project
COPY . /code/

docker-compose.yml

version: '3.7'

services:
    web:
        build: .
        command: python manage.py runserver 0.0.0.0:8000
        volumes: 
            - .:/code
        ports:
            - "8000:8000"
        depends_on:
            - db
    db:
        image: postgres:11
        volumes:
            - postgres_data:/var/lib/postgresql/data/
volumes:
    postgres_data:

看起来一切都没问题。路径postgres integrations和所有东西都很好,除了一件事 pip install -r requirements.txt。这需要太长时间从需求安装。上次我放弃了它,但最终安装完成,但花费了很多时间才完成。

在我的情况下,唯一的问题是为什么pip install如此缓慢。如果有任何我错过的地方?我是docker新手,对这个主题的任何帮助都将不胜感激。谢谢。

我正在遵循此链接:Link


需要多长时间?你有多少个依赖项? - AMC
我认为这几乎花了15-20分钟的时间。 - dipesh
更新以上答案。我检查了确切的时间。尽管网络速度还不错,但需要9分钟才能完成。 - dipesh
1个回答

27

可能是因为PyPI的wheel文件不适用于Alpine系统。Alpine系统会下载源代码并进行编译,而不是使用预编译文件。建议改用python:3.7-slim镜像。

# Pull base image
FROM python:3.7-slim

# Set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

# Set work directory
WORKDIR /code

# Install dependencies
COPY requirements.txt /code/
RUN pip install -r requirements.txt

# Copy project
COPY . /code/

查看此文章以获取更多细节:Alpine 使 Python Docker 构建速度变慢 50 倍


1
哇 :). 我会在我的虚拟项目中实现这个,并回来接受答案。谢谢 :) - dipesh
2
python:3.7-slim 很快 :). 我无法在 python:3.7-slimpython:3.7-alpine 上安装 psycopg2。有什么解决方法吗?或者我漏掉了什么吗? - dipesh
2
@dipesh 可能你忘记安装某些东西了,请查看以下示例:https://www.rockyourcode.com/install-psycopg2-binary-with-docker/ - neverwalkaloner
1
抱歉回复晚了。非常感谢你惊人的答案 :)。 - dipesh
唯一需要注意的是,与基于Alpine的镜像相比,图像大小(显著)增大了,但是没有什么是没有取舍的,对吧? - muon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接