2017-02-20 11 views
0

Я создаю файл компоновки, который создает nginx, php, mysql и phpmyadmin.Docker Нет подключения MySQL к Nginx

Все работает для себя. PHPmyAdmin может разговаривать с контейнером mysql. Nginx может разговаривать с контейнером php.

Но, похоже, что nginx или php не могут разговаривать с mysql. При выполнении что-то вроде

mysql_connect('localhost','florian','pw') 

он возвращает:

Uncaught Error: Call to undefined function mysql_connect()

Вот мой докер-compose.yml

php: 
    build: php-docker/. 
    container_name: php 
    ports: 
     - "9000:9000" 
    volumes: 
     - /var/www/:/var/www/ 

nginx: 
    build: nginx-docker/. 
    container_name: nginx 
    links: 
     - php 
    ports: 
     - "80:80" 

mysql: 
    build: mysql-docker/. 
    container_name: mysql 
    volumes: 
     - /var/mysql:/var/lib/mysql 
    environment: 
     MYSQL_ROOT_PASSWORD: pw 
     MYSQL_USER: florian 
     MYSQL_PASSWORD: pw 
     MYSQL_DATABASE: db 


    phpmyadmin: 
    build: phpmyadmin/. 
    links: 
    - mysql:db 
    ports: 
    - 1234:80 
    container_name: phpmyadmin 
    environment: 
    PMA_ARBITRARY: 1 
    PMA_USERNAME: florian 
    PMA_PASSWORD: pw 
    MYSQL_ROOT_PASSWORD: pw 
    restart: always 
+1

Какую версию PHP вы используете? Расширение Mysql было удалено из php7. Использовать PDO или mysqli – frz3993

+0

Можете ли вы получить доступ к MySQL с вашего хоста? – apokryfos

+2

Вы не можете подключиться к localhost, если ваш экземпляр MySQL работает в другом контейнере. Во-первых, вам нужно подключить оба контейнера к сети докеров, если вы не будете использовать сеть по умолчанию. Теперь вы можете подключаться к контейнеру MySQL, используя имя контейнера (в данном случае mysql) или IP. –

ответ

0

mysql_connect функция удаляется из PHP 7.0.

Вам необходимо перенести код в mysqli extension, который предоставляет аналогичную функцию mysqli_connect, или перейти на PDO.

Reference (смотрите на красном предупреждении): http://php.net/manual/en/function.mysql-connect.php