यह:
mysql:
image: mysql:5.7
environment:
...
ports:
- "3307:3306"
इसका मतलब है कि डॉकर 3307
को मैप करेगा होस्ट का पोर्ट 3306
. पर कंटेनर का बंदरगाह। तो आप सीक्वल से localhost:3307
तक पहुंच सकते हैं ।
हालांकि, इसका मतलब यह नहीं है कि कंटेनर 3307
सुन रहा है; कंटेनर वास्तव में अभी भी सुन रहा है 3306
. जब अन्य कंटेनर mysql
तक पहुंचने का प्रयास करते हैं DNS, यह आंतरिक कंटेनर IP में अनुवादित हो जाता है, इसलिए आपको 3306
. से कनेक्ट करना होगा ।
तो आपका नोड कॉन्फिगर इस तरह दिखना चाहिए:
const config = {
host: 'mysql',
database: 'mydb',
port: '3306',
user: 'mysql',
password: '1234',
connectionLimit: 10
}
और यह आपके docker-compose.yml में:
command: ["./wait-for-it.sh", "mysql:3306"]