无法从另一个Docker容器连接到Docker容器中的mysql

时间:2019-04-14 19:09:45

标签: java mysql docker

我有两个docker容器:mysql和spring boot服务。
服务容器未连接到mysql容器(在部署时失败),但存在以下异常: CommunicationsException: Communications link failure
到目前为止,我已经尝试使用docker --link,docker网络,使用/不使用docker compose来运行所有内容。 我能够连接到Docker外部的数据库容器。

连接字符串:jdbc:mysql://db:3306/somedb

docker-compose.yml

version: '3.7'
services:
  app:
    build: .
    restart: unless-stopped
    ports:
    - "80:8060"
    links:
    - db
    depends_on:
    - db

  db:
    image: "mysql:latest"
    command: --default-authentication-plugin=mysql_native_password
    environment:
    - MYSQL_DATABASE=somedb
    - MYSQL_ROOT_PASSWORD=somepassword
    ports:
    - "3306:3306"
    volumes:
    - /Users/someuser/someproject/mysql/data:/var/lib/mysql

2 个答案:

答案 0 :(得分:0)

我之前有同样的问题,我尝试通过更改mysql映像版本来解决。这是我可以连接的yaml文件。

version: "3.0"

services:
  spring-boot-container:
    build: .
    ports:
      - "8086:8086"
    links: 
      - mysql-standalone

  mysql-standalone:
    image: mysql:5.6
    ports:
      - "3307:3306"
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: springsecurity
      MYSQL_USER: sa
      MYSQL_PASSWORD: password

答案 1 :(得分:0)

所以在我的服务dockerfile中,我说:

ADD target/app-1.0-SNAPSHOT.jar /app-service.jar
RUN sh -c 'touch /app-service.jar'

但是在服务配置文件中进行更改后,我忘记了重建jar
TL; DR我很聪明