Lor*_*ine 5 mysql go docker docker-compose
我有一个我们称之为 mariadb 的数据库 docker,我还有一个使用 golang 的网络 docker。我想要做的是使用compose连接两个docker,但是在我的golang代码中,我必须提前知道数据库docker的ip地址。
Golang main.go:
db, err := sql.Open("mysql",
"root:passsword@tcp(<should_be_database_docker_ip>:3306)/database")
Run Code Online (Sandbox Code Playgroud)
Docker-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
Run Code Online (Sandbox Code Playgroud)
再次澄清,我不能简单地将主机设为 localhost,因为我使用的数据库位于 docker 中,通常类似于 172.17.0.2 或 .3,但有时它会更改。谢谢!
您可以只使用您的docker服务名称数据库,而不是容器ip
UPD 您还应该共享端口,例如
"3306:3306"
Run Code Online (Sandbox Code Playgroud)
或者端口将随机映射
参见输出
docker-compose ps
Run Code Online (Sandbox Code Playgroud)
UPD2 根据mysql docker image doc您还需要定义更多环境变量,例如MYSQL_DATABASE
| 归档时间: |
|
| 查看次数: |
3934 次 |
| 最近记录: |