docker - 应用服务器如何知道如何在没有网络的情况下连接到 mysql 主机
问题描述
我正在使用 joget 和 docker:
# create a volume container for shared data
docker volume create jogetdata
# run a MySQL database container
docker run -d --name jogetdb -p 3306:3306 -e MYSQL_ROOT_PASSWORD=jwdb -e MYSQL_USER=joget -e MYSQL_PASSWORD=joget -e MYSQL_DATABASE=jwdb mysql:5.7
# run a Joget Workflow container
docker run -d --link jogetdb:jwdb --name joget -p 8080:8080 -e MYSQL_HOST=jwdb -e MYSQL_DATABASE=jwdb -e MYSQL_PORT=3306 -e MYSQL_USER=joget -e MYSQL_PASSWORD=joget --mount source=jogetdata,target=/opt/joget/wflow jogetworkflow/joget-enterprise
我只是好奇为什么joget能够使用连接到mysql服务器MYSQL_HOST=jwdb
?我这里没有使用任何网络?
解决方案
对于链接容器,Docker 会在/etc/hosts
文件中为您添加一个条目,这样您就可以将名称用作主机名,而不必担心名称解析。
如果您签/etc/hosts
入容器,您会看到它与您的 docker 网络中的 IP 地址相匹配。
推荐阅读
- solr - 对子文档进行排序
- php - Laravel + Vue:web.php / api.php 上的路由
- java - 如何防止错误:null > 0 java
- sql-server - 根据执行变量的结果更新现有表
- azure-functions - Azure Functions 运行时 2.0 - Cosmos DB 触发器 - 动态数据库和集合名称
- python - python3中的字节与str.encode
- powershell - 使用 powershell 连接 Azure 数据目录 REST API
- android - android studio:java.lang.NullPointerException:尝试在空对象引用上调用接口方法'int java.util.List.size()'
- ios - 如何识别在 Swift 中按下了哪个 subView?
- php - PHP 分解逗号分隔值,然后是电子邮件地址