Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menyelesaikan 'Ralat: Tidak Dapat Mengesan Fail Docker Tertentu' Semasa Membina Imej Docker daripada Kod Go?
Apabila cuba membina imej Docker menggunakan pustaka Docker API dan Docker Go, pembangun mungkin sekali-sekala menghadapi ralat yang menyatakan, "Respons ralat daripada daemon: Tidak dapat mencari Fail Docker yang ditentukan." Ralat ini biasanya berlaku apabila API Docker gagal mengenal pasti fail Docker yang disediakan dalam konteks binaan yang ditentukan.
Untuk menyelesaikan isu ini, pembangun harus mempertimbangkan langkah berikut:
Salah satu contoh yang telah dilaporkan berfungsi dengan berkesan melibatkan mencipta bait. Penampan, menulis kandungan Dockerfile ke dalamnya dan kemudian menggunakannya sebagai ImageBuildOptions .Konteks untuk membina imej Docker. Kod yang dipotong di bawah menunjukkan pendekatan ini:
package main import ( "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 Menyelesaikan 'Ralat: Tidak Dapat Mengesan Fail Docker Tertentu' Semasa Membina Imej Docker daripada Kod Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!