簡體   English   中英

無法連接到MySQL Docker容器

[英]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/bashmddev_apache_1容器中運行交互式shell。

但是當我嘗試連接到MySQL時,它被拒絕了。

https://i.imgsafe.org/3ccfde1f73.png

知道為什么我無法連接到MySQL容器嗎?

謝謝。

==================================================

UPDATE

我將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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM