Docker так медленно при установке требований пипса - PullRequest
2 голосов
/ 06 февраля 2020

Я пытаюсь реализовать docker для фиктивного локального Django проекта. Я использую docker-compose в качестве инструмента для определения и запуска нескольких контейнеров. Здесь я попытался создать контейнеры для Django-web-app и PostgreSQL двух сервисов.

Конфигурация, используемая в Dockerfile и docker-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 интеграции и все, кроме одной вещи pip install -r requirements.txt. Это требует слишком много времени для установки из требований. В прошлый раз я отказался от этого, но, наконец, установка завершена, но на это уходит много времени.

В моем сценарии единственная проблема заключается в том, почему pip install такой медленный. Если есть что-то, что мне не хватает? Я новичок в docker и любая помощь по этому топи c будет высоко оценена. Спасибо.

Я следил за этим Ссылка .

1 Ответ

5 голосов
/ 06 февраля 2020

Вероятно, это из-за того, что колеса PyPI не работают на Alpine. Вместо использования файлов предварительной компиляции Alpine загружает исходный код и компилирует его. Попробуйте вместо этого использовать python:3.7-slim image:

# 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 раз медленнее .

...