Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Membetulkan Ralat 'Tidak Dapat Mengesan Fail Docker Tertentu' Semasa Membina Imej Docker dari Go?
Membina Imej Docker daripada Kod Go: Menyelesaikan Ralat Lokasi Fail Docker
Apabila cuba membina imej Docker menggunakan pustaka Docker API dan Docker Go, adalah perkara biasa untuk menghadapi ralat yang berkaitan dengan lokasi Dockerfile yang ditentukan. Mesej ralat "Respons ralat daripada daemon: Tidak dapat mencari Fail Docker yang ditentukan" menunjukkan bahawa laluan yang disediakan ke Fail Docker tidak betul atau Fail Docker tidak ditemui.
Penyelesaian:
Untuk menyelesaikan isu ini, sahkan perkara berikut:
Jika semua langkah di atas telah diambil dan ralat berterusan, cuba yang berikut pendekatan:
Kod Contoh:
package main import ( "archive/tar" "bytes" "context" "io" "io/ioutil" "log" "os" "github.com/docker/docker/api/types" "github.com/docker/docker/client" ) func main() { ctx := context.Background() cli, err := client.NewEnvClient() if err != nil { log.Fatal(err, " :unable to init client") } buf := new(bytes.Buffer) tw := tar.NewWriter(buf) defer tw.Close() dockerFile := "myDockerfile" dockerFileReader, err := os.Open("/path/to/dockerfile") if err != nil { log.Fatal(err, " :unable to open Dockerfile") } readDockerFile, err := ioutil.ReadAll(dockerFileReader) if err != nil { log.Fatal(err, " :unable to read dockerfile") } tarHeader := &tar.Header{ Name: dockerFile, Size: int64(len(readDockerFile)), } err = tw.WriteHeader(tarHeader) if err != nil { log.Fatal(err, " :unable to write tar header") } _, err = tw.Write(readDockerFile) if err != nil { log.Fatal(err, " :unable to write tar body") } dockerFileTarReader := bytes.NewReader(buf.Bytes()) imageBuildResponse, err := cli.ImageBuild( ctx, dockerFileTarReader, types.ImageBuildOptions{ Context: dockerFileTarReader, Dockerfile: dockerFile, Remove: true}) if err != nil { log.Fatal(err, " :unable to build docker image") } defer imageBuildResponse.Body.Close() _, err = io.Copy(os.Stdout, imageBuildResponse.Body) if err != nil { log.Fatal(err, " :unable to read image build response") } }
Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat 'Tidak Dapat Mengesan Fail Docker Tertentu' Semasa Membina Imej Docker dari Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!