我对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 KB / s)-保存了'Python-3.6.5.tar.xz'[17049912/17049912]
tar(子项):xz:无法执行:没有此类文件或目录
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
答案 0 :(得分:1)
解压缩.xz
文件需要xz
二进制文件,它在ubuntu下由软件包xz-utils
提供,因此您必须在映像上安装xz-utils
,然后再解压缩{ {1}}文件。
您可以将其添加到先前的.xz
运行中
apt-get install
这应该在下一个RUN表达式中修复对# Update and Install packages
RUN apt-get update -y \
&& apt-get install -y \
curl \
wget \
tar \
xz-utils
的以下调用
答案 1 :(得分:0)
与其尝试安装Python,不如从预安装Python的基本映像开始,例如python:3.6-buster
。该图像基于2019年发布的Debian Buster。由于Ubuntu基于Debian,所以一切都非常相似,并且由于它来自2019年(与2016年的Ubuntu 16.04相反),您将获得更多最新的软件。
有关更多讨论,请参见https://pythonspeed.com/articles/base-image-python-docker-images/。