エラー:最初のdockerfileを設定しようとしたときに "'/bin/sh -c source protected-env/bin/activate'コマンドがゼロ以外のコードを返しました:127"

エラー:最初のdockerfileを設定しようとしたときに

ドッカーを学ぶつもりです。これは私の最初の実験です。私はこのdockerfileを書いた:

FROM nvidia/cudagl:11.3.0-base-ubuntu20.04

LABEL Author="ZioMario"
LABEL Title="Firefox/Docker20.10.6/Ubuntu20.04"

# Enviorment variables

ENV DEBIAN_FRONTEND noninteractive
ENV LC_ALL C.UTF-8
ENV LANG C.UTF-8
ENV PATH "$PATH:/bin/2.82/python/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"
ENV FIREFOX_PATH "/bin/2.82"
ENV FIREFOXPIP "/bin/2.82/python/bin/pip3"
ENV FIREFOXPY "/bin/2.82/python/bin/python3.7m"
ENV HW="GPU"

# Install dependencies

RUN apt-get update && apt-get install -y \ 
    apt-utils \
    wget \ 
    libopenexr-dev \ 
    bzip2 \ 
    build-essential \ 
    zlib1g-dev \ 
    libxmu-dev \ 
    libxi-dev \ 
    libxxf86vm-dev \ 
    libfontconfig1 \ 
    libxrender1 \ 
    libgl1-mesa-glx \ 
    xz-utils \
    firefox \
    openjdk-8-jre

# Download the Python source

RUN wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz \ 
    && tar -xzf Python-3.7.0.tgz \ 
    && cp -r Python-3.7.0/Include/* $FIREFOX_PATH/python/include/python3.7m/ \ 
    && rm -rf Python-3.7.0.tgz \ 
    && rm -rf Python-3.7.0 

# Installing a modern version of numpy

RUN rm -rf ${FIREFOX_PATH}/python/lib/python3.7/site-packages/numpy 

# Must first ensurepip to install Firefox pip3 and then new numpy

RUN ${FIREFOXPY} -m venv protected-env

RUN source protected-env/bin/activate

RUN ${FIREFOXPY} -m ensurepip && ${FIREFOXPIP} install --upgrade pip && ${FIREFOXPIP} install numpy
RUN deactivate

# Set the working directory
WORKDIR /

残念ながら動作しません。私が受け取ったエラーは次のとおりです。

"/bin/sh -c source protected-env/bin/activate" コマンドがゼロ以外のコードを返します: 127

無効な行は次のとおりです。

ソース protected-env/bin/activate の実行

回避策を知っていますか?ありがとうございます。

ベストアンサー1

RUN source protected-env/bin/activate

無意味。

activate一部の環境変数を設定するスクリプトです。現在のシェルの場合;しかし、現在のシェルはファイルを検索した直後に終了します。したがって、効果はありません。特に次の行には何の影響もありません!

ただし、エラーは実行の試みによって発生します。- バーshスクリプトはshを使用しますが、機能しません。ここで解決策は、これらのすべてのアイテム(アクティブ化ファイルのインポート、pipを使用したアイテムのインストール)をpipで始まるシェルスクリプトに入れて#!/bin/bash一度に実行できるようにし、COPYコンテナイメージに入れてからRUNningすることです。

しかし、私はpipを介してnumpyをインストールする理由を見つけることができませんでした。おそらくこれをしないでくださいapt

同じで、おそらくもっと重要なことはPython自体にも当てはまります。ソースからビルドしないでください。あなたのガイドがどこから来たのかわかりませんが、真剣に言えば恐ろしいアイデアです。 UbuntuにはPython3が付属していますapt install python3。全体として、python3-numpyインストールするパッケージのリストの最後に追加するだけで完了です。 Pythonをダウンロードする必要もなく、ビルドする必要もなく、アクティベーションファイルを入手してpip経由でnumpyをインストールする必要もありません。

おすすめ記事