Ошибка при попытке установить Python внутри контейнера Docker - PullRequest
1 голос
/ 09 января 2020

Я относительно новичок в docker. У меня есть приложение, которое я хочу в контейнере.

Ниже приведен мой docker файл:

FROM ubuntu:16.04

## ENV Variables
ENV PYTHON_VERSION="3.6.5"

# Update and Install packages
RUN apt-get update -y \
 && apt-get install -y \
 curl \
 wget \
 tar

# Install Python 3.6.5
RUN wget https://www.python.org/ftp/python/${PYTHON_VERSION}/Python-${PYTHON_VERSION}.tar.xz \
    && tar -xvf Python-${PYTHON_VERSION}.tar.xz \
    && cd Python-${PYTHON_VERSION} \
    && ./configure \
    && make altinstall \
    && cd / \
    && rm -rf Python-${PYTHON_VERSION}

# Install Google Cloud SDK

# Downloading gcloud package
RUN curl https://dl.google.com/dl/cloudsdk/release/google-cloud-sdk.tar.gz > /tmp/google-cloud-sdk.tar.gz

# Installing the package
RUN mkdir -p /usr/local/gcloud \
  && tar -C /usr/local/gcloud -xvf /tmp/google-cloud-sdk.tar.gz \
  && /usr/local/gcloud/google-cloud-sdk/install.sh

# Adding the package path to local
ENV PATH $PATH:/usr/local/gcloud/google-cloud-sdk/bin

Я пытаюсь установить python3 .6.5 версию, но я получаю следующая ошибка.

020-01-09 17:26:13 (107 КБ / с) - 'Python -3.6.5.tar.xz' сохранено [17049912/17049912]

tar (дочерний): xz: Невозможно выполнить exe c: нет такого файла или каталога

tar (дочерний): ошибка не может быть исправлена: выход сейчас

tar: дочерний элемент возвратил статус 2

tar: ошибка не может быть исправлена: выход сейчас

Команда '/ bin / sh - c wget https://www.python.org/ftp/python/ $ {PYTHON_VERSION} / Python - $ {PYTHON_VERSION} .tar.xz && tar -xvf Python - $ {PYTHON_VERSION} .tar.xz && cd Python - $ {PYTHON_VERSION} && ./configure && make altinstall && cd / && rm -rf Python - $ {PYTHON_VERSION} 'вернул ненулевой код: 2

Ответы [ 2 ]

1 голос
/ 09 января 2020

Для распаковки файла .xz требуется двоичный файл xz, который в Ubuntu предоставляется пакетом xz-utils. Поэтому перед установкой файла .xz необходимо установить xz-utils на образ.

Вы можете добавить это в свой предыдущий apt-get install прогон:

# Update and Install packages
RUN apt-get update -y \
 && apt-get install -y \
 curl \
 wget \
 tar \
 xz-utils

Это должно исправить следующий вызов tar в следующем выражении RUN

0 голосов
/ 10 января 2020

Вместо того, чтобы пытаться установить Python, просто начните с базового образа с предустановленным Python, например, python:3.6-buster. Этот образ основан на Debian Buster, выпущенном в 2019 году. Поскольку Ubuntu основан на Debian, все будет примерно одинаково, и, поскольку он выпущен в 2019 году (в отличие от Ubuntu 16.04, то есть в 2016 году), вы получите больше современное программное обеспечение.

Более подробное обсуждение см. https://pythonspeed.com/articles/base-image-python-docker-images/.

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