I have problem to connect to MySQL container.
docker-compose.yml
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.
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With