无法通过PHP连接到docker mysql

前端之家收集整理的这篇文章主要介绍了无法通过PHP连接到docker mysql前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我有一个带有两个容器的docker-compose设置:一个是PHP / apache服务,另一个容器是数据库(mysql).

这是我的docker-compose.yml

version: '2'
services:
   app:
     depends_on:
       - db
     links:
       - db:MysqL
     build: .
     image: app
     ports:
       - "80:80"
     restart: always
     links:
       - db:db
     volumes:
       - ../:/var/www/html/

   db:
     image: MysqL:latest
     restart: unless-stopped
     volumes:
       - ./db_data:/var/lib/MysqL
       - ./databaseDumps:/tmp/databaseDumps
     environment:
       MysqL_USER: "myApp"
       MysqL_PASSWORD: "root"
       MysqL_ROOT_PASSWORD: "root"
       MysqL_DATABASE: "myAppDatabase"
       MysqL_ROOT_HOST: "%"

这是我的应用程序Dockerfile:

FROM PHP:7-apache

COPY prefilled_files/000-default.conf /etc/apache2/sites-available/000-default.conf
RUN apt-get -qq update
RUN apt-get -qq -y install libpng-dev curl git nano vim zip unzip MysqL-client libMysqLclient-dev
RUN curl -sS https://getcomposer.org/installer | PHP -- --install-dir=/usr/local/bin --filename=composer
RUN curl -sL https://deb.nodesource.com/setup_6.x | bash -
RUN apt-get install -y nodejs
RUN npm install -g bower
RUN npm install -g gulp
RUN docker-PHP-ext-install pdo pdo_MysqL gd MysqLi
EXPOSE 8080 80

主要问题是,MysqL数据库和app容器运行良好,我可以从app容器连接到MysqL数据库

$root@app: MysqL -h db -u myApp -p

如果我尝试在我的symfony项目上执行composer install,则会出现以下错误消息:

 [Doctrine\DBAL\Driver\PDOException]        
  sqlSTATE[HY000] [2002] Connection refused  



  [PDOException]                             
  sqlSTATE[HY000] [2002] Connection refused  

这是我的应用程序的参数:

parameters:
    database_driver: pdo_MysqL
    database_host: db
    database_port: 3306
    database_name: myAppDatabase
    database_user: myApp
    database_password: root

为什么会这样?
我已经阅读了几个论坛和网站,但没有任何帮助.
我尝试了以下解决方案并没有任何帮助:

>清除symfony缓存;)
>在MysqL容器上公开3306
>将app和MysqL容器连接在一起
>从我的计算机中删除所有图像和容器并重新安装所有内容
>我试过Windows和ubuntu 17.04.相同的行为

connecting to a docker-compose mysql container denies access but docker running same image does not

docker-compose wordpress mysql connection refused

更新:

我尝试使用https://gist.github.com/chales/11359952中的一个小脚本来访问我的数据库. PHP / My Script实际上可以连接到数据库,所以问题必须在我的作曲家安装或学说或symfony的配置中.

TL;博士

> 2 Docker容器通过docker撰写
>我可以通过app容器上的MysqL命令访问数据库,但不能通过composer install访问.为什么?

最佳答案
我认为这是它试图通过主机名’db’找到容器的方式,我发现在运行docker的机器上,它似乎没有拿起客户容器的名称(可能是一些DNS配置你可以改变)但我解决它的方法是找到MysqL容器的IP地址.我有docker_db_1作为MysqL的容器名称,所以我运行(假设* nix)

docker inspect docker_db_1 | grep IPAddress

在我的情况下,这给了我

    "SecondaryIPAddresses": null,"IPAddress": "","IPAddress": "172.18.0.2",

我使用这个IP地址(172.18.0.2)来连接而不是数据库.

原文链接:https://www.f2er.com/docker/436849.html

猜你在找的Docker相关文章