我有 2 種不同的服務作為付款和訂單。我希望他們使用不同的資料庫。
首先,我通過運行以下命令為訂單服務拉取并運行 mysql db 映像;
docker run --name mysql-order -p 3306:3306 -e MYSQL_ROOT_PASSWORD=1234 -e MYSQL_ROOT_HOST=% -e MYSQL_DATABASE=orderdb --platform=linux/x86_64 -d mysql --lower_case_table_names=1 --init-connect='GRANT CREATE USER ON *.* TO 'root'@'%';FLUSH PRIVILEGES;'
它作業正常,我可以通過 spring boot app order-service 連接到它。
然后我想用相同的命令創建另一個資料庫容器,但這次通過運行更改名稱和埠:
docker run --name mysql-payment -p 3407:3407 -e MYSQL_ROOT_PASSWORD=1234 -e MYSQL_DATABASE=paymentdb --platform=linux/x86_64 -d mysql --lower_case_table_names=1 --init-connect='GRANT CREATE USER ON *.* TO 'root'@'%';FLUSH PRIVILEGES;'
在 docker 儀表板標簽上,它在埠 3407 上運行

但是當我進入支付容器的日志時,它再次顯示 3306。

當我用docker ps命令檢查埠時,結果是:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a113f66398c4 mysql "docker-entrypoint.s…" 8 minutes ago Up 8 minutes 3306/tcp, 33060/tcp, 0.0.0.0:3407->3407/tcp mysql-payment
4b887a1d38d2 mysql "docker-entrypoint.s…" About an hour ago Up About an hour 0.0.0.0:3306->3306/tcp, 33060/tcp mysql-order
他們正在作業,但我無法連接到支付資料庫,并且埠很奇怪,如您在上面看到的。
我錯過了什么?即使我指定了不同的埠號,這個 3306 來自哪里的支付服務?或者我可以這樣問:我不能在同一臺機器上運行 2 個不同的 mysql 容器,就像我有完全 2 個不同的資料庫一樣嗎?
uj5u.com熱心網友回復:
因為該服務不偵聽 port 3407,而是偵聽3306容器內的 port 。所以埠映射應該是3407:3306.
就像是
docker run --name mysql-payment -p 3407:3306 ....
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/438364.html
上一篇:dockermount不更新檔案
