589

ソースから GTK をダウンロードしてビルドする dockerfile がありますが、次の行ではイメージの環境変数が更新されません。

RUN PATH="/opt/gtk/bin:$PATH"
RUN export PATH

ENV を使用して環境値を設定する必要があることを読みましたが、次の命令も機能しないようです。

ENV PATH /opt/gtk/bin:$PATH

これは私の Dockerfile 全体です。

FROM ubuntu
RUN apt-get update
RUN apt-get install -y golang gcc make wget git libxml2-utils libwebkit2gtk-3.0-dev libcairo2 libcairo2-dev libcairo-gobject2 shared-mime-info libgdk-pixbuf2.0-* libglib2-* libatk1.0-* libpango1.0-* xserver-xorg xvfb

# Downloading GTKcd
RUN wget http://ftp.gnome.org/pub/gnome/sources/gtk+/3.12/gtk+-3.12.2.tar.xz
RUN tar xf gtk+-3.12.2.tar.xz
RUN cd gtk+-3.12.2

# Setting environment variables before running configure
RUN CPPFLAGS="-I/opt/gtk/include"
RUN LDFLAGS="-L/opt/gtk/lib"
RUN PKG_CONFIG_PATH="/opt/gtk/lib/pkgconfig"
RUN export CPPFLAGS LDFLAGS PKG_CONFIG_PATH
RUN ./configure --prefix=/opt/gtk
RUN make
RUN make install

# running ldconfig after make install so that the newly installed libraries are found.
RUN ldconfig

# Setting the LD_LIBRARY_PATH environment variable so the systems dynamic linker can find the newly installed libraries.
RUN LD_LIBRARY_PATH="/opt/gtk/lib"

# Updating PATH environment program so that utility binaries installed by the various libraries will be found.
RUN PATH="/opt/gtk/bin:$PATH"
RUN export LD_LIBRARY_PATH PATH

# Collecting garbage
RUN rm -rf gtk+-3.12.2.tar.xz

# creating go code root
RUN mkdir gocode
RUN mkdir gocode/src
RUN mkdir gocode/bin
RUN mkdir gocode/pkg

# Setting the GOROOT and GOPATH enviornment variables, any commands created are automatically added to PATH
RUN GOROOT=/usr/lib/go
RUN GOPATH=/root/gocode
RUN PATH=$GOPATH/bin:$PATH
RUN export GOROOT GOPATH PATH
4

4 に答える 4

918

次のように環境置換を使用できます。Dockerfile

ENV PATH="/opt/gtk/bin:${PATH}"
于 2016-08-03T11:39:55.497 に答える
61

ギュンターが投稿した答えは正しかったが、私がすでに投稿したものと変わらない. 問題はENVディレクティブではなく、後続の命令でしたRUN export $PATH

ENVDockerfile で環境変数を宣言したら、環境変数をエクスポートする必要はありません。

RUN export ...行が削除されるとすぐに、私のイメージは正常に構築されました

于 2014-11-24T01:18:38.277 に答える
26

[選択した回答に応じてこれについて言及しましたが、独自の回答としてより目立つようにすることが提案されました]

注意すべきこと

ENV PATH="/opt/gtk/bin:${PATH}" 

と同じではないかもしれません

ENV PATH="/opt/gtk/bin:$PATH" 

前者は中かっこで囲み、ホストの PATHを提供する場合があります。ドキュメントはこれが事実であることを示唆していませんが、私はそうであることに気付きました。RUN echo $PATHこれは、実行して比較するだけで簡単に確認できますRUN echo ${PATH}

于 2020-12-03T03:02:22.490 に答える