Di saya, Dockerfile
saya punya:
ADD ../../myapp.war /opt/tomcat7/webapps/
File itu ada sebagai ls ../../myapp.war
mengembalikan saya file yang benar tetapi ketika saya menjalankan sudo docker build -t myapp .
saya punya:
Step 1 : ADD ../../myapp.war /opt/tomcat7/webapps/
2014/07/02 19:18:09 ../../myapp.war: no such file or directory
Apakah ada yang tahu mengapa dan bagaimana melakukannya dengan benar?
Jawaban:
Anda dapat membangun Dockerfile dari direktori induk:
sumber
-f
tampaknya tidak ditinggalkan menurut dokumen -> Tentukan Dockerfile (-f) : docs.docker.com/engine/reference/commandline/build/…Sayangnya, (untuk alasan praktis dan keamanan saya kira), jika Anda ingin menambahkan / menyalin konten lokal, ia harus berada di bawah jalur root yang sama dengan
Dockerfile
.Dari dokumentasi :
EDIT: Sekarang ada opsi (
-f
) untuk mengatur jalur Dockerfile Anda; ini dapat digunakan untuk mencapai apa yang Anda inginkan, lihat tanggapan @Boedy di bawah.sumber
Dengan docker-compose Anda dapat mengatur folder konteks:
sumber
Menambahkan beberapa cuplikan kode untuk mendukung jawaban yang diterima.
Struktur direktori:
Entri file Docker:
Perintah yang digunakan untuk membangun citra buruh pelabuhan
sumber
install_x.sh
juga?Solusi bagi mereka yang menggunakan komposer adalah dengan menggunakan volume yang menunjuk ke folder induk:
Tapi saya cukup yakin bisa dilakukan bermain dengan volume di Dockerfile .
sumber
Karena
-f
menyebabkan masalah lain, saya mengembangkan solusi lain.The
-f
Bendera tidak memecahkan masalah saya karena sayaonbuild
terlihat gambar untuk file dalam folder dan memanggil seperti ini:-f foo/bar/Dockerfile foo/bar
dari pada
-f foo/bar/Dockerfile .
Perhatikan juga bahwa ini hanya solusi untuk beberapa kasus sebagai
-f
flagsumber