应用服务器如何知道如何在没有网络的情况下连接到 mysql 主机
how app server know how to connect to the mysql host without network
我正在使用 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_HOST=jwdb
连接到 mysql 服务器?我这里没有使用任何网络?
对于链接的容器,Docker 会在 /etc/hosts
文件中为您添加一个条目,这样您就可以将名称用作主机名,而不必担心名称解析.
如果您检查容器中的 /etc/hosts
,您会发现它与您的 docker 网络中的 IP 地址匹配。
我正在使用 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_HOST=jwdb
连接到 mysql 服务器?我这里没有使用任何网络?
对于链接的容器,Docker 会在 /etc/hosts
文件中为您添加一个条目,这样您就可以将名称用作主机名,而不必担心名称解析.
如果您检查容器中的 /etc/hosts
,您会发现它与您的 docker 网络中的 IP 地址匹配。