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