Rumah > Artikel > pembangunan bahagian belakang > Bagaimanakah saya boleh menyambungkan aplikasi Go dalam bekas Docker ke contoh MongoDB tempatan?
Dockerizing Go App dengan Local Mongo Connection
Apabila bekerja pada projek Golang dengan Docker, menyepadukan pangkalan data MongoDB setempat menimbulkan cabaran ketersambungan. Jika projek Go menggunakan MongoDB dijalankan di luar Docker, sambungan pangkalan data berjaya. Walau bagaimanapun, apabila projek yang sama dijalankan dalam bekas Docker, sambungan gagal.
Memahami Isu
Docker mencipta persekitaran maya untuk aplikasi kontena. Ini bermakna bekas berjalan dalam ruang rangkaian yang berasingan, berbeza daripada sistem hos. Akibatnya, penyambungan kepada sumber luaran, seperti contoh MongoDB yang dijalankan secara tempatan, menjadi bermasalah.
Penyelesaian: Menggunakan host.docker.internal
Docker memberikan alamat IP unik kepada setiap bekas dan menyediakan nama hos khas, "host.docker.internal." Nama hos ini bertindak sebagai pintu masuk untuk menyambung ke sistem hos dari dalam bekas. Memandangkan MongoDB berjalan secara setempat pada sistem hos, menggunakan "host.docker.internal" sebagai nama hosnya menyelesaikan isu ketersambungan.
Fail Docker yang diubah suai
Untuk menggabungkan penyelesaian ini , ubah suai fail Docker seperti berikut:
FROM golang WORKDIR $GOPATH/src/myapp ADD . /go/src/myapp RUN go get ./... RUN go install myapp ENV MONGO_HOST=host.docker.internal CMD /go/bin/myapp --mongodbhost=$MONGO_HOST EXPOSE 8080 EXPOSE 27017
Rentetan Sambungan
Dalam aplikasi Go, kemas kini rentetan sambungan MongoDB untuk menggunakan "host.docker.internal" sebagai nama hos. Contohnya:
connectionString := fmt.Sprintf("mongodb://host.docker.internal:21017/database") client, err := mongo.Connect(ctx, options.Client().ApplyURI(connectionString))
Atas ialah kandungan terperinci Bagaimanakah saya boleh menyambungkan aplikasi Go dalam bekas Docker ke contoh MongoDB tempatan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!