Docker Compose with PHP, MySQL, nginx connection issue

I have problem to connect to MySQL container.

docker-compose.yml

  • Magento2 Docker Devbox Exception
  • docker-compose fails when bringing up vagrant box
  • apt-get update' returned a non-zero code: 100
  • docker not working after update
  • Docker alpine golang go get error for coding.net private repo
  • Run multiple Python scripts in Azure (using Docker?)
  • version: '2'
    
    services:
        mysql:
            image: mysql:latest
            environment:
                MYSQL_ROOT_PASSWORD: JoeyW#1999
                MYSQL_DATABASE: wiput
                MYSQL_USER: web
                MYSQL_PASSWORD: Web#1234
            volumes:
                - ./mysql:/var/lib/mysql
            networks:
                - code-network
        php:
            image: wiput1999/php:latest
            volumes:
                - ./code:/code
            networks:
                - code-network
        nginx:
            image: nginx:latest
            ports:
                - "80:80"
                - "443:443"
            volumes:
                - ./code:/code
                - ./site.conf:/etc/nginx/conf.d/default.conf
                - /etc/letsencrypt:/etc/letsencrypt
            networks:
                - code-network
    networks:
        code-network:
            driver: bridge
    

    PHP test script:

    <?php
    $servername = "localhost";
    $username = "root";
    $password = "JoeyW#1999";
    
    try {
        $conn = new PDO("mysql:host=$servername;dbname=wiput", $username, $password);
        // set the PDO error mode to exception
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        echo "Connected successfully";
        }
    catch(PDOException $e)
        {
        echo "Connection failed: " . $e->getMessage();
        }
    ?>
    

    This script reponse me :

    Connection failed: SQLSTATE[HY000] [2002] No such file or directory
    

    What’s wrong with my code? because I think It’s should be fine

    If anyone have a better solution Thank you for your help.

  • Converting a mounted volume to a Docker Image
  • Could not run asp.net mvc 6 on Docker
  • Dokku multi-process (container) with Dockerfile project
  • headless chrome in docker with python. Chrome failed to start: crashed
  • Datanode denied communication with namenode because hostname cannot be resolved
  • Docker “Jenkins” image can't access internet
  • One Solution collect form web for “Docker Compose with PHP, MySQL, nginx connection issue”

    Change $servername = "localhost"; to $servername = "mysql";. Your mysql service isn’t on the localhost of your webserver container. You should use the name of the service instead

    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.