Seperti yang diilustrasikan oleh masalah 684 , export
tidak 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)
ENV
akan:
Variabel lingkungan yang disetel menggunakan ENV
akan 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:
FOO
bertahan melalui wadah perantara, berkat ENV
kata kunci;
BAR
tidak bertahan di langkah berikutnya, karena export
perintah;
BAZ
ditampilkan dengan benar karena variabel digunakan di penampung yang sama.
docker
misalnyarun
dengan--env-file
atau--env
akan mengekspor variabel (dengan argumen opsi ini)? Maaf karena menemukan jawaban lama seperti itu, tetapi penelusuran web baru saja menyampaikannya kepada saya. Jawaban bagus btw.