Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah saya boleh menyambungkan aplikasi Go dalam bekas Docker ke contoh MongoDB tempatan?

Bagaimanakah saya boleh menyambungkan aplikasi Go dalam bekas Docker ke contoh MongoDB tempatan?

Linda Hamilton
Linda Hamiltonasal
2024-11-16 19:07:03955semak imbas

How can I connect a Go application in a Docker container to a local MongoDB instance?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn