2015-10-29 198 views
0

我使用--net=host選項運行MySQL容器。克:使用docker進行單元測試

self.db = MySQLdb.connect(主機= 「127.0.0.1」,用戶= 「XYZ」,的passwd = 「XYZ」,

所以現在我使用可以使單元測試DB =「TEST_DB」)

問題是,當我嘗試dockerize我的單元測試,容器與我的MySQL集裝箱進行鏈接,該127.0.0.1 IP無效。我需要使用MySql容器的真實ip,或者使用DNS(/etc/hosts文件)。

所以我需要更改IP主機名稱的IP 127.0.0.1

我想有一個更好的方法來做到這一點?例如,我可以更改我的開發環境的/etc/hosts文件。

回答

1

泊塢窗鏈接更新鏈接容器中的/etc/hosts文件。

使用您鏈接的容器的名稱(在/etc/hosts文件中找到它)在測試中引用數據庫。

self.db = MySQLdb.connect(host="db-container-name", user="XYZ", passwd="XYZ", db="TEST_DB") 

docker-compose也會爲你做這個(它只是一個包裝器泊塢窗,並使用鏈接的下面),或者你可以使用--add-host標誌手動添加到容器的/etc/hosts文件中的條目按this

$ docker run -it --add-host db-static:86.75.30.9 ubuntu cat /etc/hosts 
172.17.0.22  09d03f76bf2c 
fe00::0   ip6-localnet 
ff00::0   ip6-mcastprefix 
ff02::1   ip6-allnodes 
ff02::2   ip6-allrouters 
127.0.0.1  localhost 
::1    localhost ip6-localhost ip6-loopback 
86.75.30.9  db-static 
+0

謝謝!但是我怎麼能在我的發展環境中使用它。我需要在我的環境中連接到這個容器。我使用哪個主機? 我運行docker run --name = XYZ --net = host xpto/xpto,並嘗試使用XYZ進行連接。如果我把XYZ放在我的主機文件上,它就可以工作。這是最佳做法嗎? –

+0

好的!我會嘗試把--add主機。我再次讀它,它改變容器的主機文件。 –