![](/img/trans.png)
[英]How do I connect MySQL Database setup on my local machine to Apache Superset on Dockers?
[英]How to connect dockers with compose, mysql, and golang
我有一個數據庫docker,我們稱之為mariadb,我也有一個使用golang的web docker。 我要做的是使用compose連接兩個docker,但在我的golang代碼中,我必須提前知道數據庫docker的ip地址。
Golang main.go:
db, err := sql.Open("mysql",
"root:passsword@tcp(<should_be_database_docker_ip>:3306)/database")
泊塢窗,compose.yml
version: '3'
services:
web:
image: web_docker
ports:
- "8080"
depends_on:
- database
database:
image: mariadb
ports:
- "3306"
environment:
- MYSQL_ROOT_PASSWORD=password
volumes:
- /data:/var/lib/mysql
再次澄清一下,我不能簡單地使主機成為localhost,因為我使用的數據庫是在docker中,通常類似於172.17.0.2或.3但有時會更改。 謝謝!
您可以使用docker服務名稱數據庫 ,而不是容器ip
UPD您還應該共享像
"3306:3306"
或端口將隨機映射
看到的輸出
docker-compose ps
UPD2根據mysql docker image doc你還需要定義更多的環境變量,例如MYSQL_DATABASE
您也可以考慮將它們放在一個網絡中。 這樣,您就可以從Web容器訪問數據庫中的數據庫:3306。 這種方法的優點是數據庫不會暴露給外部世界(您的本地計算機),只有mynet網絡上的容器才能看到它。
version: '3'
services:
web:
image: web_docker
ports:
- 8080:8080
depends_on:
- database
networks:
- mynet
database:
image: mariadb
environment:
- MYSQL_ROOT_PASSWORD=password
volumes:
- /data:/var/lib/mysql
networks:
- mynet
networks:
mynet:
driver: "bridge"
(代碼未經測試)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.