Di dalam Dockerfile saya:
ENV PROJECTNAME mytestwebsite
CMD ["django-admin", "startproject", "$PROJECTNAME"]
Kesalahan:
CommandError: '$PROJECTNAME' is not a valid project name
Apa solusi tercepat di sini? Apakah Docker memiliki rencana untuk "memperbaiki" atau memperkenalkan fungsionalitas ini di versi Docker yang lebih baru?
CATATAN: Jika saya menghapus baris CMD dari berkas Docker dan kemudian menjalankan wadah Docker, saya dapat menjalankan secara manual Django-admin startproject $ PROJECTNAME dari dalam wadah dan itu akan membuat proyek ...
docker
dockerfile
David
sumber
sumber
$PROJECTNAME
?Jawaban:
Saat Anda menggunakan daftar eksekusi, seperti di ...
... maka Docker akan menjalankan perintah yang diberikan secara langsung , tanpa melibatkan shell. Karena tidak ada shell yang terlibat, itu berarti:
>
,<
,|
, dllcommand1; command2
Jika Anda ingin
CMD
memperluas variabel, Anda perlu mengatur shell. Anda bisa melakukannya seperti ini:Atau Anda dapat menggunakan string sederhana sebagai ganti daftar eksekusi, yang memberi Anda hasil yang sangat identik dengan contoh sebelumnya:
sumber
Jika Anda ingin menggunakan nilai pada waktu proses, tetapkan
ENV
nilai diDockerfile
. Jika Anda ingin menggunakannya pada waktu pembuatan, maka Anda harus menggunakanARG
.Contoh:
Teruskan nilai dalam perintah build:
docker build -t tagName --build-arg value="jarName"
sumber
Katakanlah Anda ingin memulai proses java di dalam wadah:
Contoh kutipan Dockerfile:
Contoh kutipan entrypoint.sh:
sumber
Terinspirasi di atas, saya melakukan ini:
sumber