我對mysql不太熟悉。縱觀MySQL文檔看起來這可能是你想要的那種命令:
import _mysql
db=_mysql.connect(host="mysql",port=3306,passwd="...",db="...")
當你沒有在您的應用程序的運行--link,你宣稱要鏈接名爲容器中暴露的端口mysqlserver到要命名爲myapp的容器。 Docker更新/ etc/hosts文件。所以,如果你的貓在/ etc/hosts文件,你會看到一條線,看起來像:
172.17.0.26 mysql 5c960433e26a mysqlserver
所以這就是爲什麼在你的Python引用舉辦「MySQL的作品。默認端口是3306.所以,這應該連接你。使用這個主機和端口來處理你在python中使用的任何mysql連接包。
這是我如何連接其他對象,在他們衆所周知的端口上。您還可以使用環境變量,但是,我認爲這可能是被淘汰......說不上來......
[email protected]:/# env | grep MYSQL
MYSQL_ENV_MYSQL_ROOT_PASSWORD=pass
MYSQL_PORT_3306_TCP_PORT=3306
MYSQL_PORT_3306_TCP=tcp://172.17.0.32:3306
MYSQL_ENV_MYSQL_VERSION=5.5.42
MYSQL_NAME=/myapp/mysql
MYSQL_PORT_3306_TCP_PROTO=tcp
MYSQL_PORT_3306_TCP_ADDR=172.17.0.32
MYSQL_ENV_MYSQL_MAJOR=5.5
MYSQL_PORT=tcp://172.17.0.32:3306
,所以你可以修改你的連接線使用環境:
import os
myhost = os.environ.get('MYSQL_PORT_3306_TCP_ADDR')
myport = int(os.environ.get('MYSQL_PORT_3306_TCP_PORT'))
import _mysql
db=_mysql.connect(host=myhost,port=myport,passwd="...",db="...")
無論哪種方式。這是發現。還有更復雜的方法,使用領事,etcd,skydns,註冊人。我喜歡skydns /註冊器配對,註冊者監視你的docker守護進程,當創建新的容器時,它將dns記錄插入到etcd中,skydns可以用來模擬dns服務器。使用這種技術你也可以獲得IP和端口。
如何進入碼頭集裝箱? – 2015-04-03 16:56:24
這是一個不同的問題:-)基本上,使用一個exec行:docker exec -it myapp bash – Greg 2015-04-05 13:28:45