0
respostas

JDBC-JAVA não consegue se conectar com o container do MySQL usando Docker.

Eu estou testando o docker e resolvi fazer uma coisa bem simples, criar uma aplicação que tenta se conectar VIA HOST ao container do MySQL.

Eu usei o Compose:


version: '3.5'
services:
    mysql-java:
        container_name: mysql-java
        image: mysql/mysql-server:8.0.18

        ports:
            - 3306:3306

        restart: always

        environment:
            MYSQL_ROOT_PASSWORD: as123d
            MYSQL_USER: root
            MYSQL_DATABASE: loja_virtual
            MYSQL_PASSWORD: as123d

        volumes:
            - mysql-data:/var/lib/mysql


volumes:
    mysql-data:

Quando eu tento rodar a aplicação do Java, ele retorna uma exceção:

com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.

Código do Java:

public static void main(String[] args) {
    String conMySQL = "jdbc:mysql://mysql-java:3306/"
                + "loja_virtual"
                + "?useTimezone=true"
                //
                // + "&useSSL=false"
                + "&serverTimezone=UTC";
    System.out.println("URI: " + conMySQL);
        // jdbc:mysql://localhost/loja_virtual?useTimezone=true&serverTimezone=UTC

    try (Connection conn = 
            DriverManager.getConnection(conMySQL, "root", "as123d");)
    {
            System.out.println("Conexão estabelecida !");
    } 
    catch (SQLException e) {
        e.printStackTrace();
    }
}

Tentei de tudo! Tentei referenciar o IP do container, tentei o IP principal do Docker e cheguei a testar localhost, mas é improvável que funcione usando localhost, visto que são máquinas diferentes.

Alguém tem alguma sugestão do que pode ser feito?

E outra dúvida, a aplicação java deve ser upada em um container também? neste caso, como eu desenvolveria? como eu testaria/rodaria e mandaria o código para lá? isso é possível?

EDIT: -Eu coloquei o driver do MySQL no eclipse de acordo com a versão.