Rumah > pembangunan bahagian belakang > Golang > 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
Lepaskan: 2024-11-16 19:07:03
asal
1031 orang telah melayarinya

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
Salin selepas log masuk

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))
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan