无法使用Docker容器名称连接到MySQL,但可以使用localhost连接

时间:2019-06-24 05:59:22

标签: java mysql spring-boot docker docker-compose

我无法使用连接字符串中的Docker容器名称连接到MySQL,但可以与localhost连接。

docker-compose:

 mysql-docker-container:
    image: mysql:latest
    environment:
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_DATABASE=test
      - MYSQL_PASSWORD=test
    ports:
      - 3306:3306
    volumes:
      - /data/mysql

  app:
    image: app
    build:
      context: ./
      dockerfile: Dockerfile
    depends_on:
      - mysql-docker-container

links:
  - mysql-docker-container:mysql-docker-container
ports:
  - 9090:9090
volumes:
  - /data/p2c-app
environment:
  - DATABASE_HOST=mysql-docker-container
  - DATABASE_USER=testuser
  - DATABASE_PASWORD=testuser
  - DATABASE_NAME=test
  - DATABASE_PORT=3306

spring.datasource.url=jdbc:mysql://localhost:3306/test?useSSL=false&allowPublicKeyRetrieval=true

以上工作原理,但是我想使用如下容器名称-我的连接被拒绝

spring.datasource.url=jdbc:mysql://mysql-docker-container:3306/test?useSSL=false&allowPublicKeyRetrieval=true

我在做什么错了?

2 个答案:

答案 0 :(得分:1)

如果本地主机连接有效,则可以更新df['tC'] = np.where(s.duplicated(), '', s.groupby(s).transform('size')) print(df) sC cC tC A B one 1 3 1 3 2 3 1 4 8 1 three 3 4 1 2 4 3 1 two 0 3 1 1

/etc/hosts

要检查是否可以从应用程序容器访问127.0.0.1 localhost mysql-docker-container ,请打开tty并执行ping操作。

mysql-docker-container

答案 1 :(得分:0)

一切都很好。
似乎数据库服务已启动,但是mysql正在启动过程中。
然后,该应用程序服务将启动,并且无法访问数据库。

对于这种情况,有一些解决方法。
但简单的一件事是您将以下内容添加到应用程序服务中。

restart: on-failure

请注意,depends_on部分仅表示在Docker容器上下文中,而不在基础服务中。