[英]Can't connect to MySQL docker container
我的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
: mddev_report
web-server
容器檢查: http://i.imgsafe.org/4ec74e5d52.png
: http://i.imgsafe.org/4ec74e5d52.png
database
容器檢查: http://i.imgsafe.org/4ecb129d2d.png
: http://i.imgsafe.org/4ecb129d2d.png
您的mysql容器將端口3306公開到其網絡,同時將其端口3306映射到主機3333端口。
使用ports
屬性時,會將端口映射到本地主機,而不是網絡上的其他容器。
從web-server
容器內部,您應該能夠通過mysql -uroot -padmin -h database -P 3306
連接到mysql服務器,而從主機上,您應該能夠使用mysql -uroot -padmin -h localhost -P 3333
。
您正在將docker鏈接到db ...我認為db無效或已更改其IP ...所以您需要停止mysql docker,提交並運行它,然后嘗試再次運行新映像。
如果它失敗而不是以分離模式(-d)運行,則可以以交互模式(-it)運行它,以查看運行它時是否發生異常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.