我的MySQL容器存在问题,我无法连接到容器。
这是我的docker-compose.yml
apache:
build: ./
ports:
- 1814:80
volumes:
- ./code:/app
links:
- db
environment:
- APACHE_SERVER_NAME=local.dev
- PHP_SHORT_OPEN_TAG=On
- PHP_ERROR_REPORTING=E_ALL
- PHP_DISPLAY_ERRORS=On
- PHP_HTML_ERRORS=On
db:
image: mysql:5.6
ports:
- "3333:3306"
volumes:
- /var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: admin
MYSQL_DATABASE: app
我使用docker-compose up -d --build
。
之后,我使用docker ps
查看正在运行的容器
https://i.imgsafe.org/3caf28c5f0.png
然后我使用docker exec -it mddev_apache_1 /bin/bash
在mddev_apache_1
容器中运行交互式shell。
但是当我试图连接到MySQL时,它被拒绝了。
https://i.imgsafe.org/3ccfde1f73.png
知道为什么我无法连接MySQL容器吗?
感谢。
=============================================== ===
我将docker-compose.yml
更改为:
version: '2'
services:
apache:
build: ./
container_name: web-server
ports:
- 1814:80
volumes:
- ./code:/app
links:
- db
environment:
- APACHE_SERVER_NAME=local.dev
- PHP_SHORT_OPEN_TAG=On
- PHP_ERROR_REPORTING=E_ALL
- PHP_DISPLAY_ERRORS=On
- PHP_HTML_ERRORS=On
networks:
report:
aliases:
- web-server
db:
image: mysql:5.6
container_name: database
ports:
- "3333:3306"
volumes:
- /var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: admin
MYSQL_DATABASE: app
networks:
report:
aliases:
- database
networks:
report:
driver: bridge
但我仍然无法连接到我的MySQL容器。
http://i.imgsafe.org/4eb89f3857.png
我尝试检查我的网络和容器。
mddev_report
网络检查:http://i.imgsafe.org/4eae17a27f.png
web-server
容器检查:http://i.imgsafe.org/4ec74e5d52.png
database
容器检查:http://i.imgsafe.org/4ecb129d2d.png
答案 0 :(得分:2)
您的mysql容器将端口 3306 暴露给其网络,同时将其端口3306映射到主机3333端口。
当您使用ports
属性时,您将端口映射到localhost,而不是网络上的其他容器。
从web-server
容器内部,您应该能够通过mysql -uroot -padmin -h database -P 3306
通过mysql -uroot -padmin -h localhost -P 3333
连接到mysql服务器,而您可以从主机使用<div class="collapse navbar-collapse" id="navbarsExampleDefault">
<ul class="nav navbar-nav">
<!--First Dropdown - This needs to be fixed. Should change the text when clicked to the store that was selected.-->
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" id="dropdown01" data-toggle="dropdown"
aria-haspopup="true" aria-expanded="false"><span id="StoreType">Store Type</span></a>
<div id="dropdownStore" class="dropdown-menu" aria-labelledby="dropdown01">
<a class="dropdown-item" id="100" onclick="setStoreType(100);" >Best Buy</a>
<a class="dropdown-item" id="101" onclick="setStoreType(101);" >Office Deopt</a>
<a class="dropdown-item" id="102" onclick="setStoreType(102);" >Office Max</a>
<a class="dropdown-item" id="103" onclick="setStoreType(103);" >Staples</a>
<a class="dropdown-item" id="104" onclick="setStoreType(104);" >Costco</a>
</div>
</li>
。
答案 1 :(得分:0)
你正在将你的docker链接到db ...我认为db无效或者已经改变了它的IP ...所以你需要停止你的mysql docker,提交它然后尝试再次运行新映像。
如果失败而不是以分离模式(-d)运行它,您可以以交互模式(-it)运行它以查看运行它时是否发生异常。