Пакет не устанавливается внутри контейнера docker с использованием пункта - PullRequest
1 голос
/ 13 апреля 2020

Я озадачен странной проблемой, с которой я сталкиваюсь при docker -compose. Не удается установить Pip для определенных пакетов в файле needs.txt.

docker версия

Client:
 Version:           18.09.9
 API version:       1.39
 Go version:        go1.13.4
 Git commit:        1752eb3
 Built:             Sat Nov 16 01:05:26 2019
 OS/Arch:           linux/amd64
 Experimental:      false

Server:
 Engine:
  Version:          18.09.9
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.13.4
  Git commit:       9552f2b
  Built:            Sat Nov 16 01:07:48 2019
  OS/Arch:          linux/amd64
  Experimental:     false

Мой docker-compose.yml файл:

version: "3.7"

services:

  flask:
    build: ./flask
    container_name: flask
    restart: always
    environment:
      - APP_NAME=MyFlaskApp
    expose:
      - 8080

  nginx:
    build: ./nginx
    container_name: nginx
    restart: always
    ports:
      - "80:80"

Содержимое из Dockerfile в каталоге ./flask:

# Use the Python3.7.5 image
FROM python:3.7.5

# Set the working directory to /app
WORKDIR /app

# Copy the current directory contents into the container at /app
ADD . /app

# Install the dependencies
RUN pip3 install -r requirements.txt

# run the command to start uWSGI
CMD ["uwsgi", "app.ini"]

Мой requirements.txt файл (первые несколько строк):

appdirs==1.4.3
apturl==0.5.2
asn1crypto==0.24.0
bcrypt==3.1.6
blinker==1.4

Однако, когда я запускаю docker-compose up команда, не удается установить второй пакет в requirements.txt файле.

Building flask
Step 1/6 : FROM python:3.7.5
 ---> fbf9f709ca9f
Step 2/6 : WORKDIR /app
 ---> Using cache
 ---> 39ab3ee34991
Step 3/6 : ADD . /app
 ---> Using cache
 ---> 8968809ff844
Step 4/6 : RUN python3 -m pip install --upgrade pip
 ---> Using cache
 ---> 15f717de5181
Step 5/6 : RUN pip3 install -r requirements.txt
 ---> Running in 7068f09498dc
Collecting appdirs==1.4.3
  Downloading appdirs-1.4.3-py2.py3-none-any.whl (12 kB)
ERROR: Could not find a version that satisfies the requirement apturl==0.5.2 (from -r requirements.txt (line 2)) (from versions: none)
ERROR: No matching distribution found for apturl==0.5.2 (from -r requirements.txt (line 2))
ERROR: Service 'flask' failed to build: The command '/bin/sh -c pip3 install -r requirements.txt' returned a non-zero code: 1

Я перепробовал множество возможных вариантов, но безрезультатно. Вот некоторые примеры:

  1. Запуск обновления pip внутри контейнера.
  2. Обновление DNS в docker согласно потоку здесь .

Ответы [ 2 ]

0 голосов
/ 13 апреля 2020

apturl представляется клиентской программой Ubuntu для добавления поддержки ссылок типа <a href="apt:package">click</a> на веб-странице:

apturl представляет собой графический мини -программа для установки пакетов из репозитория, который есть у пользователя. Он предварительно установлен в Ubuntu начиная с версии 7.10, и программы Firefox и Pidgin поставляются с поддержкой.

Кроме того, есть другие предложения , которые не поддерживаются за пределами Ubuntu. Поскольку официальное изображение python:3.7.5 основано на Debian GNU/Linux, оно все равно будет недоступно.

Я бы спросил, почему это должно соответствовать требованиям для вашего приложения Flask, так как вы должны просто уметь написать собственную функцию python для создания совместимых ссылок в приложении. Любой пользователь, перешедший по этим ссылкам с поддерживаемого клиента (любая коробка Ubuntu с Firefox в соответствии с вышеприведенным), сможет успешно обработать эти ссылки.

0 голосов
/ 13 апреля 2020

как @ WilliamD.Irons уже указал здесь apturl - это пакет, вы можете использовать:

RUN apt install apturl
RUN pip3 install -r requirements.txt

и удалить apturl из вашего requirements.txt

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...