Seperti yang diilustrasikan oleh masalah 684 , exporttidak akan bertahan di seluruh gambar. (Jangan lupa bahwa setiap direktif Dockerfile akan menghasilkan penampung perantara, yang dikomit menjadi gambar perantara: gambar itu tidak akan mempertahankan nilai yang diekspor)
ENVakan:
Variabel lingkungan yang disetel menggunakan ENVakan tetap ada saat penampung dijalankan dari gambar yang dihasilkan.
Anda dapat melihat nilai menggunakan docker inspect, dan mengubahnya menggunakan docker run --env <key>=<value>.
Masalah tersebut diilustrasikan dengan:
RUN export PATH=$PATH:/foo/bar # from directly in builder
Ketika saya melakukannya docker run [img] bash -c 'echo $PATH'tidak pernah termasuk /foo/bar.
Cobalah
Buat file galangan baru yang berisi:
FROM centos:6
ENV FOO=foofoo
RUN export BAR=barbar
RUN export BAZ=bazbaz && echo "$FOO $BAR $BAZ"
Lalu bangunlah. Output dari langkah terakhir adalah:
Step 4/4 : RUN export BAZ=bazbaz && echo "$FOO $BAR $BAZ"
---> Running in eb66196b238d
foofoo bazbaz
Anda dapat melihat:
FOObertahan melalui wadah perantara, berkat ENVkata kunci;
BARtidak bertahan di langkah berikutnya, karena exportperintah;
BAZ ditampilkan dengan benar karena variabel digunakan di penampung yang sama.
dockermisalnyarundengan--env-fileatau--envakan mengekspor variabel (dengan argumen opsi ini)? Maaf karena menemukan jawaban lama seperti itu, tetapi penelusuran web baru saja menyampaikannya kepada saya. Jawaban bagus btw.