Build Docker memberikan "tidak dapat menyiapkan konteks: konteks harus berupa direktori: / Users / tempUser / git / docker / Dockerfile"


92

Saya memiliki Dockerfileyang seharusnya membangun Ubuntucitra. Tapi kapanpun aku lari

docker build -t ubuntu-test:latest ./Dockerfile

Ini menunjukkan kesalahan berikut di konsol

tidak dapat menyiapkan konteks: konteks harus berupa direktori: / Users / tempUser / git / docker / Dockerfile

Saya menggunakan Mac OsX. Saya mencoba sudojuga. Tidak ada yang berhasil.

Jawaban:


142

Anda harus mengarahkan ke direktori sebagai gantinya. Anda tidak harus menentukan dockerfile.

docker build -t ubuntu-test:latest .melakukan pekerjaan .

docker build -t ubuntu-test:latest ./Dockerfiletidak tidak bekerja .


kenapa seperti ini rasanya aneh perlu menunjuk ke sebuah dir ketika Anda dapat dengan mudah mengarahkannya ke file itu sendiri
Monica Heddneck

72

Anda juga dapat menjalankan buruh pelabuhan dengan -fopsi

docker build -t ubuntu-test:latest -f Dockerfile.custom .


1
Ini berhasil untuk saya. Nama Dockerfile dalam kasus saya adalah Dockerfile-abcd jadi saya harus memecat:docker build -t my-custom-name -f /path_to_my_docker_file/Dockerfile-abcd .
niranjan harpale

17

Untuk menentukan Dockerfilekapan build, Anda dapat menggunakan:

docker build -t ubuntu-test:latest - < /path/to/your/Dockerfile

Tetapi akan gagal jika ada ADDatau COPYperintah yang bergantung pada jalur relatif. Ada banyak cara untuk menentukan contextuntuk docker build, Anda dapat merujuk ke dokumen dari pembuat galangan kapal untuk info lebih lanjut.


Lakukan ini untuk ubuntu 12.04 : docker build -t ubuntu:12.04 - < DockerfileAnda harus berada di root Dockerfile
Dominic Motuka

15

Pahami konteksnya

The docker buildperintah

Sintaks dasar dari perintah build buruh pelabuhan adalah

docker build -t imagename:imagetag context_dir

Isi

Konteksnya adalah direktori dan menentukan apa yang akan dilihat oleh proses pembangunan buruh pelabuhan: Dari sudut pandang Dockerfile, semua file context_dir/mydir/myfiledalam sistem berkas Anda akan menjadi /mydir/myfiledalam Dockerfile dan karenanya selama proses pembangunan.

Dockerfile tersebut

Jika dockerfile dipanggil Dockerfiledan hidup dalam konteksnya, itu akan ditemukan secara implisit dengan konvensi penamaan. Itu bagus, karena itu berarti Anda biasanya dapat menemukan Dockerfile di container docker apa pun dengan segera.

Jika Anda bersikeras menggunakan nama yang berbeda, ucapkan "/ tmp / mydockerfile", Anda dapat menggunakan -fseperti ini:

docker build -t imagename:imagetag -f /tmp/mydockerfile context_dir

tetapi file docker tersebut tidak akan berada di folder yang sama atau setidaknya akan lebih sulit ditemukan.


2

Sederhana saja, setiap kali build Docker dijalankan, pekerja galangan ingin tahu, apa nama gambarnya, jadi kita perlu meneruskan -t:. Sekarang pastikan Anda berada di direktori yang sama di mana Anda memiliki Dockerfile dan menjalankannya

docker build -t <image_name>:<version> . Contoh docker build -t my_apache:latest .dengan asumsi Anda berada di direktori yang sama dengan Dockerfile Anda, jika tidak, berikan flag -f dan Dockerfile.

docker build -t my_apache:latest -f ~/Users/documents/myapache/Dockerfile


Untuk menjalankan perintah kedua itu untuk saya, saya harus mengubahnya sedikit: docker build -t my_apache:latest -f ~/Users/documents/myapache/Dockerfile(perhatikan penambahan a .di akhir)
Josh

2

Saya menghadapi masalah yang sama. Saya menggunakan docker version:17.09.0-ce.

Saya mengikuti langkah-langkah di bawah ini:

  1. Buat Dockerfile dan tambahkan perintah untuk membuat image buruh pelabuhan
  2. Pergi ke direktori tempat kita membuat Dockfile
  3. jalankan perintah di bawah ini $ sudo docker build -t ubuntu-test:latest .

Ini menyelesaikan masalah dan gambar dibuat dengan sukses.

Catatan: perintah build tergantung pada versi docker serta opsi build yang kami gunakan. :)


1

Salah satu alasan saya mendapatkan error adalah nama file pastikan nama file tersebut adalah Dockerfile Jadi saya mengetahuinya, semoga dapat membantu seseorang.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.