Saya telah menyiapkan beberapa container (ha, grist, lldap, authelia ..), semuanya diakses melalui container caddy sebagai reverse proxy. Mereka semua langsung diinstal di CS sebagai “container”, bukan melalui file compose.
Semua berjalan baik, kecuali saya harus melakukan reverse proxy ke alamat 10.0.3.x, karena hostname tidak berfungsi. Tidak masalah dengan itu, sampai saya me-reboot NAS untuk pembaruan firmware: semua container berubah IP-nya .. saya harus mengkonfigurasi ulang Caddy dengan IP yang baru …
Saya pikir docker memiliki semacam “dns resolver” yang terdokumentasi dengan hostname container di jaringan yang sama, jadi saya bisa merujuk mereka di Caddy dengan hostname. Apakah saya melewatkan sesuatu?
Menginstal server dns internal juga tidak akan berhasil, jika IP container terus berubah setiap kali reboot.
Opsi lain adalah mengatur IP statis untuk container, tapi saya tidak menemukan di mana melakukannya (atau mungkin lewat ssh di command line ..)
Secara default, kontainer menggunakan DHCP. Saya baru saja melihat dan saya tidak tahu apakah ada cara untuk mengatur alamat IP tetap untuk kontainer. Tidak ada opsi tersebut di pengaturan kontainer. Mungkin Anda harus melakukannya di Compose.
Anda dapat memasukkan kontainer ke mode Bridge di mana mereka kemudian terhubung ke adaptor jaringan tertentu. Anda kemudian dapat menetapkan IP tetap untuk mereka.
Saya tahu bahwa dalam aplikasi yang menggunakan compose, Anda dapat mereferensikan dengan nama aplikasi selama semua container berada di jaringan yang sama. Saya melakukan ini untuk nginx-proxy-manager. Di bawah ini adalah contoh compose yaml untuk npm dan aplikasi lain yaitu dozzle. Saya rasa saya harus membuat jaringan backendApps menggunakan perintah docker, saya tidak ingat pasti. Npm-nya belum lengkap, hanya menunjukkan penggunaan dua jaringan. Semua aplikasi lain saya hanya berada di backendApps dan NPM menyediakan reverse proxy dan https.
services:
npm:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
stdin_open: true
tty: true
container_name: npm
networks:
qnet-static-eth0-custom: # untuk definisi ip/mac eksternal
backendApps: # semua container yang berbagi harus memiliki jaringan ini.
networks:
qnet-static-eth0-custom:
external: true
backendApps:
external: true
Terima kasih banyak; saya akan mencoba semua ini dan akan memberikan umpan balik di sini.
Postingan terakhir bahkan membuka jalan bagi saya untuk mengatasi masalah lain: reverse proxy berada di jaringan default untuk kontainer (lxcbr0), tetapi kontainer di “aplikasi” berada di jaringan mereka sendiri. Mungkin jika saya menambahkan jaringan lxcbr0 ke aplikasi saya, saya bisa melakukan reverse proxy dari Caddy ke aplikasi tersebut (saat ini, mereka bahkan tidak bisa saling ping lewat alamat IP).
Saya akan terus mengabari Anda; terima kasih atas waktunya!
Xavier
Saya memposting di sini umpan balik yang sudah saya janjikan.
Saya akhirnya berhasil menghubungkan reverse proxy (Caddy) secara manual ke jaringan yang dibuat untuk “aplikasi” (yaitu file compose):
docker network connect my_app_default caddy-1
Ini menyelesaikan masalah konektivitas, dan juga masalah DNS internal: di file caddy saya, saya bisa melakukan reverse proxy ke “nama layanan” alih-alih IP container.
Terima kasih untuk waktu kalian berdua; saya harap ini akan berguna bagi siapa saja yang mencari kasus penggunaan ini di Google.