使用docker进行unit testing

我运行一个MySQL容器--net=host选项。

所以现在我可以使用unit testing:g:

self.db = MySQLdb.connect(host =“127.0.0.1”,user =“XYZ”,passwd =“XYZ”,db =“TEST_DB”)

问题是当我试图dockerize我的unit testing,链接容器与我的MySQL容器, 127.0.0.1 IP是无效的。 我需要使用真正的IP为MySql容器,或使用DNS( /etc/hosts文件)。

所以我需要更改ip host 127.0.0.1的名称。

我想有一个更好的方法来做到这一点? 我可以,例如,改变我的开发环境的/etc/hosts文件。

Docker链接更新链接容器中的/etc/hosts文件。

使用您链接的容器的名称(在/etc/hosts文件中find它)在testing中引用数据库。

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

docker-compose也会为你做这个(它只是Docker的一个包装器,并使用下面的链接),或者你可以使用--add-host标志手动添加一个条目到一个容器的/etc/hosts文件,如下所示 :

 $ 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